Bonjour,

J'utilise Glassfish en version 2 (Sun Java System Application Server 9.1_02) et un client lourd déployer en JWS sur une machine distante.

Le client est basé sur Netbean platform mais je doute que cela est une relation avec mon problème.

Je dispose de plusieurs EJB coté serveur auquel je fais appel sans problème coté client à partir du moment ou je dispose de tous les droits d'accès au niveau réseau. Dans le sens client => serveur bien sur mais également dans le sens serveur => client ce qui n'est pas logique.

En effet lors de l'appel à deux méthode bien précise d'un EJB particulier si un firewall bloque l'accès au client depuis le serveur j'obtient l'erreur suivante coté serveur sans même rentrer dans le code de la méthode appelée de mon EJB.

[#|2009-07-28T16:16:18.936+0200|WARNING|sun-appserver9.1|javax.enterprise.resource.corba.ee.S1AS-ORB.rpc.transport|_ThreadID=16;_ThreadName=p: thread-pool-1; w: 6;IIOP_CLEAR_TEXT;192.168.1.172;2947;_RequestID=049cd622-2fed-49e4-9746-347ee41e0bd7;|"IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: 192.168.1.172; port: 2947"
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No
at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2690)
at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2711)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:261)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:274)
at com.sun.corba.ee.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:130)
at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:192)
at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:181)
at org.omg.CORBA.portable.ObjectImpl._request(ObjectImpl.java:431)
at com.sun.org.omg.SendingContext._CodeBaseStub.meta(_CodeBaseStub.java:103)
at com.sun.corba.ee.impl.encoding.CachedCodeBase.meta(CachedCodeBase.java:127)
at com.sun.corba.ee.impl.io.IIOPInputStream.getOrderedDescriptions(IIOPInputStream.java:1264)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectUsingFVD(IIOPInputStream.java:1443)
at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:420)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:362)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:328)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:368)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readArguments(DynamicMethodMarshallerImpl.java:435)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:152)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
Caused by: java.lang.RuntimeException: java.net.ConnectException: Connexion terminée par expiration du délai d'attente
at com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:347)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:244)
... 28 more
Caused by: java.net.ConnectException: Connexion terminée par expiration du délai d'attente
at sun.nio.ch.Net.connect(Native Method)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:507)
at com.sun.corba.ee.impl.orbutil.ORBUtility.openSocketChannel(ORBUtility.java:105)
at com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:332)
... 29 more
|#]
Ou "192.168.1.172" correspond à l'IP de mon poste client et "2947" correspond à un port ouvert en écoute sur toutes les interfaces réseau par mon application cliente sur le poste client.

Voici le retour de la commande "netstat -ano" sur le poste client:
Proto Adresse locale Adresse distante Etat
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1200
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:990 0.0.0.0:0 LISTENING 2132
TCP 0.0.0.0:2947 0.0.0.0:0 LISTENING 11524
TCP 0.0.0.0:50783 0.0.0.0:0 LISTENING 648
TCP 127.0.0.1:1050 0.0.0.0:0 LISTENING 1656
TCP 127.0.0.1:2531 127.0.0.1:2532 ESTABLISHED 4028
TCP 127.0.0.1:2532 127.0.0.1:2531 ESTABLISHED 4028
TCP 127.0.0.1:2533 127.0.0.1:2534 ESTABLISHED 4028
TCP 127.0.0.1:2534 127.0.0.1:2533 ESTABLISHED 4028
TCP 127.0.0.1:2946 0.0.0.0:0 LISTENING 11524
TCP 127.0.0.1:2949 127.0.0.1:2950 ESTABLISHED 11524
TCP 127.0.0.1:2950 127.0.0.1:2949 ESTABLISHED 11524
TCP 127.0.0.1:2952 127.0.0.1:2953 ESTABLISHED 11524
TCP 127.0.0.1:2953 127.0.0.1:2952 ESTABLISHED 11524
TCP 127.0.0.1:2955 127.0.0.1:2956 ESTABLISHED 11524
TCP 127.0.0.1:2956 127.0.0.1:2955 ESTABLISHED 11524
TCP 127.0.0.1:2958 127.0.0.1:2959 ESTABLISHED 11524
TCP 127.0.0.1:2959 127.0.0.1:2958 ESTABLISHED 11524
TCP 127.0.0.1:5152 0.0.0.0:0 LISTENING 224
TCP 127.0.0.1:5152 127.0.0.1:2510 CLOSE_WAIT 224
TCP 127.0.0.1:5679 0.0.0.0:0 LISTENING 1276
TCP 127.0.0.1:7438 0.0.0.0:0 LISTENING 1276
TCP 192.168.1.172:139 0.0.0.0:0 LISTENING 4
TCP 192.168.1.172:2320 192.168.1.31:22 ESTABLISHED 8056
TCP 192.168.1.172:2859 192.168.1.31:9009 ESTABLISHED 10192
TCP 192.168.1.172:2951 192.168.1.31:3700 ESTABLISHED 11524
TCP 192.168.1.172:2954 192.168.1.31:3700 ESTABLISHED 11524
TCP 192.168.1.172:3064 192.168.1.37:139 ESTABLISHED 4
TCP 192.168.1.172:3087 192.168.1.24:8080 ESTABLISHED 4028
TCP 192.168.1.172:3088 192.168.1.24:8080 ESTABLISHED 4028
TCP 192.168.1.172:3089 192.168.1.24:8080 ESTABLISHED 4028
TCP 192.168.1.172:3090 192.168.1.24:8080 ESTABLISHED 4028
TCP 192.168.1.172:3091 192.168.1.24:8080 ESTABLISHED 4028
TCP 192.168.1.172:3092 192.168.1.24:8080 ESTABLISHED 4028
UDP 0.0.0.0:445 *:* 4
UDP 0.0.0.0:500 *:* 896
UDP 0.0.0.0:1025 *:* 1500
UDP 0.0.0.0:1026 *:* 1500
UDP 0.0.0.0:1146 *:* 1500
UDP 0.0.0.0:4500 *:* 896
UDP 127.0.0.1:123 *:* 1348
UDP 127.0.0.1:1027 *:* 896
UDP 127.0.0.1:1043 *:* 840
UDP 127.0.0.1:1900 *:* 1548
UDP 192.168.1.172:123 *:* 1348
UDP 192.168.1.172:137 *:* 4
UDP 192.168.1.172:138 *:* 4
UDP 192.168.1.172:1900 *:* 1548
Je ne comprends pas du tout pourquoi le serveur a besoin de contacter le client mais je comprends encore moins pourquoi il n'en a besoin que pour l'appel à seulement deux des méthodes d'un de mes EJB alors que le code est exactement le même pour tous les EJB.

J'ai fait pas mal de recherche sur ce problème avant de poster ici j'espère ne pas être passer à coté d'une évidence mais la je sèche vraiment.

Je n'ai pas de workarround pour mon problème car en prod le client et le serveur se situeront sur des réseaux différents et la configuration du firewall serait beaucoup trop fastidieuse.

Merci d'avance pour votre aide éventuelle.