Socket issue and ECF behavior. [message #830892] |
Wed, 28 March 2012 07:26 |
Guillaume Brocard Messages: 1 Registered: March 2012 |
Junior Member |
|
|
Hi,
I'm facing a weird issue here, that has dramatic consequences on my whole application.
First of all, my configuration is made of the following elements :
- Windows XP SP3
- Eclipse 3.5.1 modeling
- org.eclipse.ecf.sdk-3.0.0.v20090616-0832
I've got a centralized component, named the Framework (!), which code, wrt ECF, is basically (excluding listeners) :
// ECF Mode
_ecfConnection = new Connection();
String ecfServerLocation = ServerConfParam.getInstance().getEcfServerLocation();
serverID = IDFactory.getDefault().createStringID(ecfServerLocation);
Object[] serverArguments = new Object[] { serverID, ConfigServer.getInstance().getECFTimeOut() };
_ecfConnection._serverContainer = ContainerFactory.getDefault().createContainer(containerServerName, serverArguments);
_ecfConnection._container = ContainerFactory.getDefault().createContainer("ecf.generic.client"); //$NON-NLS-1$
_ecfConnection._container.connect(serverID, null);
// Get adapter.
_ecfConnection._adapter = (IRemoteServiceContainerAdapter) _ecfConnection._container.getAdapter(IRemoteServiceContainerAdapter.class);
where :
- containerServerName = "ecf.generic.server";
- ecfServerLocation = "ecftcp://localhost:52731/server"; (in this example, the port is chosen dynamically at each startup)
- timeout = 8640000000; (!! Not sure such a value makes any sense !!)
Then I've got any type of clients (either remote VM or Framework one) that can connect to provide remote applicative listeners or extensions (my words), through the following code :
// Get client container.
IContainer container = ContainerFactory.getDefault().createContainer("ecf.generic.client"); //$NON-NLS-1$
if (null == container) {
throw new RuntimeException(Messages.ConnectionHandler_Error_UnableToCreateContainer);
}
// Get location from server configuration.
String serverId = ServerConfParam.getInstance().getEcfServerLocation();
if (null == serverId) {
throw new RuntimeException(Messages.ConnectionHandler_Error_ServerNotResolved);
}
ID serverID = IDFactory.getDefault().createStringID(serverId);
container.connect(serverID, null);
// Register remote service to hub.
IRemoteServiceContainerAdapter containerAdapter = (IRemoteServiceContainerAdapter) container.getAdapter(IRemoteServiceContainerAdapter.class);
containerAdapter.registerRemoteService(new String[] { proxyInterface_p.getName() }, proxyImplementation_p, null);
This is working fine, except that, from times to times, on specific computers, the Framework is reporting the following issue (through a listener) :
!ENTRY Framework 4 0 2012-03-26 10:08:28.535
!MESSAGE Dealing with container listener event on server container StringID[ecftcp://localhost:52731/server]
-> ContainerEjectedEvent[StringID[ecftcp://localhost:52731/server];StringID[moNtQW2ixRgh1TjhnBdNTuwka2Q=];java.net.SocketException: Software caused connection abort: recv failed]
!ENTRY Framework 4 0 2012-03-26 10:08:28.535
!MESSAGE Dealing with container listener event on server container StringID[ecftcp://localhost:52731/server]
-> ContainerEjectedEvent[StringID[ecftcp://localhost:52731/server];StringID[lJ3W7wJc6ZG3OIHgHN2VTMnBvjs=];java.net.SocketException: Software caused connection abort: recv failed]
!ENTRY Framework 4 0 2012-03-26 10:08:28.535
!MESSAGE Dealing with container listener event on server container StringID[ecftcp://localhost:52731/server]
-> ContainerDisconnectedEvent[StringID[ecftcp://localhost:52731/server];]StringID[abgoYE1Bw3nT2m3G9s82zJGyz5s=];
!ENTRY Framework 2 0 2012-03-26 10:08:28.535
!MESSAGE Dealing with container listener event on client container StringID[H02nqPgg4RntQp6ds3S3FdWSedM=]
-> ContainerEjectedEvent[StringID[H02nqPgg4RntQp6ds3S3FdWSedM=];StringID[ecftcp://localhost:52731/server];java.net.SocketTimeoutException: Read timed out]
!ENTRY Framework 1 0 2012-03-26 10:08:28.535
!MESSAGE Remote connection : context change listener named 'TRCCL.Name' has been unregistered from server
!ENTRY Framework 1 0 2012-03-26 10:08:28.535
!MESSAGE Remote connection : connector for type 'TRC.Type' has been unregistered from server
!ENTRY Framework 4 0 2012-03-26 10:08:28.535
!MESSAGE Dealing with container listener event on server container StringID[ecftcp://localhost:52731/server]
-> ContainerDisconnectedEvent[StringID[ecftcp://localhost:52731/server];]StringID[H02nqPgg4RntQp6ds3S3FdWSedM=];
Where :
- moNtQW2ixRgh1TjhnBdNTuwka2Q= is a remote listener contributed by an external application.
- lJ3W7wJc6ZG3OIHgHN2VTMnBvjs= is a remote extension contributed by the same application.
- abgoYE1Bw3nT2m3G9s82zJGyz5s= is a remote listener contributed by the Framework itself.
- H02nqPgg4RntQp6ds3S3FdWSedM= is the generic client created by the Framework (first code snippet above).
Obviously there is a first issue (recv failed) while communicating with the external application.
I can't find anything of use on the internet about this one.
Trails are that this might be a network physical issue (I can't make WireShark to use filters, so it's pretty much useless), or a Windows bug because the Framework is using ports >5000.
The annoying part being that it does happen sometimes, on some computers.
But this is not a systematic issue, even on those computers.
Any clue on this one would be greatly appreciated
Then, everything goes wild on ECF side, and I'm loosing all my remotely connected implementations (abgoYE1Bw3nT2m3G9s82zJGyz5s= here), and even worst, the client initiated on Framework side (H02nqPgg4RntQp6ds3S3FdWSedM=).
So I end up with an empty ECF hub, and the Framework that needs to be restarted (not to mention remote applications).
I can understand there was an issue with some of the remote implementations, but why would it disconnect/dispose the entire ECF structure on Framework side ?
Thanks in advance,
Guillaume
|
|
|
|
Powered by
FUDForum. Page generated in 0.03936 seconds