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 : 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);
}
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 : 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)
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
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 : 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);
        }
}
Le problème est factory.createSocket

Quelqu'un aurait une suggestion ?

Merci d'avance.