Problème d'exception CORBA
Bonjour,
J'ai un objet CORBA Session qui n'est plus valide (suite au crash de l'application).
Pour tester si la session est valide ou non (afin de nettoyer les sessions non valide)
Code:
1 2 3 4 5
| try{
session._is_a("...string" );
}catch ( Exception ex ){
list_session.remove(session);
} |
Je ne sais pas pourquoi le code plante au lieu de générer une exception CORBA::TRANSIENT
Est-ce qu'il y a un moyen d'attendre le code pendant une période sinon on ignore cette instruction et on termine le programme? (thread par exemple...)
Voici le stack trace le cas ou le code plante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
- locked <0x84f77218> (a java.net.SocksSocketImpl)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:516)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:549)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:351)
at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:69)
at com.alu.cnm.csa.sso.util.security.SecSSLPortRangeFactory.createSocket(SecSSLPortRangeFactory.java:201)
at com.alu.cnm.csa.sso.util.security.SecSSLSocketFactory.createSocket(SecSSLSocketFactory.java:100)
at com.alu.cnm.csa.sso.util.security.SecSSLSocketFactory.createSocket(SecSSLSocketFactory.java:142)
at org.jacorb.orb.iiop.ClientIIOPConnection.createSocket(ClientIIOPConnection.java:249)
at org.jacorb.orb.iiop.ClientIIOPConnection.connect(ClientIIOPConnection.java:132)
- locked <0x84f23e38> (a org.jacorb.orb.iiop.ClientIIOPConnection)
at org.jacorb.orb.giop.GIOPConnection.write(GIOPConnection.java:745)
- locked <0x84f23ee8> (a [B)
at org.jacorb.orb.CDROutputStream.write(CDROutputStream.java:394)
at org.jacorb.orb.giop.ServiceContextTransportingOutputStream.write_to(ServiceContextTransportingOutputStream.java:272)
at org.jacorb.orb.giop.GIOPConnection.sendMessage(GIOPConnection.java:804)
at org.jacorb.orb.giop.GIOPConnection.sendRequest(GIOPConnection.java:787)
at org.jacorb.orb.giop.ClientConnection.sendRequest(ClientConnection.java:303)
at org.jacorb.orb.giop.ClientConnection.sendRequest(ClientConnection.java:284)
at org.jacorb.orb.Delegate.invoke_internal(Delegate.java:1058)
- locked <0x84e477c0> (a [B)
at org.jacorb.orb.Delegate.invoke(Delegate.java:967)
at org.jacorb.orb.Delegate.is_a(Delegate.java:1493)
at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112) |
Voilà l'exception dans le bon cas:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| org.omg.CORBA.TRANSIENT: Retries exceeded, couldn't reconnect to 155.132.153.228:4299 vmcid: 0x0 minor code: 0 completed: No
at org.jacorb.orb.iiop.ClientIIOPConnection.connect(ClientIIOPConnection.java:199)
at org.jacorb.orb.giop.GIOPConnection.write(GIOPConnection.java:745)
at org.jacorb.orb.CDROutputStream.write(CDROutputStream.java:394)
at org.jacorb.orb.giop.ServiceContextTransportingOutputStream.write_to(ServiceContextTransportingOutputStream.java:272)
at org.jacorb.orb.giop.GIOPConnection.sendMessage(GIOPConnection.java:804)
at org.jacorb.orb.giop.GIOPConnection.sendRequest(GIOPConnection.java:787)
at org.jacorb.orb.giop.ClientConnection.sendRequest(ClientConnection.java:303)
at org.jacorb.orb.giop.ClientConnection.sendRequest(ClientConnection.java:284)
at org.jacorb.orb.Delegate.invoke_internal(Delegate.java:1058)
at org.jacorb.orb.Delegate.invoke(Delegate.java:967)
at org.jacorb.orb.Delegate.is_a(Delegate.java:1493)
at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112) |
Si je lance le client d'un PC il déclenche l'exception et d'un autre PC il plante.
Le code où ça plante est:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public SSLSocket createSocket(SocketFactory factory, String host, int port) throws IOException, UnknownHostException {
SSLSocket s = null;
int localPort;
InetAddress localHost = InetAddress.getLocalHost ();
if(!useSocketFactoryPortRange)
{
SSLSocket sock= new SSLSocket();
sock.set
trace_.debug("No port range configured for SecSSLSocketFactory");
return (SSLSocket) factory.createSocket(host, port);
}
} |
Le problème est factory.createSocket
Quelqu'un aurait une suggestion ?
Merci d'avance.