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)
Je ne sais pas pourquoi le code plante au lieu de générer une exception CORBA::TRANSIENT
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 try{ session._is_a("...string" ); }catch ( Exception ex ){ list_session.remove(session); }
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:
Voilà l'exception dans le bon cas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Si je lance le client d'un PC il déclenche l'exception et d'un autre PC il plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Le code où ça plante est:
Le problème est factory.createSocket
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Quelqu'un aurait une suggestion ?
Merci d'avance.
Partager