# Kummunikation Application Client - Session Bean



## New_User_20 (5. Apr 2010)

Hallo,

Ich versuche schon seit einiger Zeit eine einfache Java Klasse mit einer Session Bean zu "verknüpfen", dabei bin ich genau nach diesem Tutorial Java EE - Hello world EJB3 in Netbeans @ The price of everything vorgegangen, habe aber auch schon auf den Netbeans Seiten die Tutorials probiert. Ich verwende Netbeans 6.8 und den aktuellen Glassfish App. Server 3, jedoch kommt bei ausführen des Clients (nach dem Vorgehen im Tutorial) folgende Fehlermeldung:


```
INFO: Using com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate as the delegate
org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:3431)
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:3452)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:256)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:269)
        at com.sun.corba.ee.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:125)
        at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:188)
        at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:186)
        at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.is_a(CorbaClientDelegateImpl.java:352)
        at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112)
        at org.omg.CosNaming.NamingContextHelper.narrow(NamingContextHelper.java:69)
        at com.sun.enterprise.naming.impl.SerialContext.narrowProvider(SerialContext.java:355)
        at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:327)
        at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:271)
        at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at helloclient.Main.main(Main.java:22)
Caused by: java.lang.RuntimeException: java.net.ConnectException: Connection refused: connect
        at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:340)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:239)
        ... 13 more
Caused by: java.net.ConnectException: Connection refused: connect
        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:106)
        at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:325)
        ... 14 more
Exception in thread "main" javax.naming.NamingException: Lookup failed for 'java:global/HelloEJB/HelloWorldBean' in SerialContext ,orb'sInitialHost=localhost,orb'sInitialPort=3700 [Root exception is javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext ,orb'sInitialHost=localhost,orb'sInitialPort=3700 [Root exception is org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No]]
        at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at helloclient.Main.main(Main.java:22)
Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext ,orb'sInitialHost=localhost,orb'sInitialPort=3700 [Root exception is org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No]
        at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:276)
        at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
        ... 2 more
Caused by: org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:3431)
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:3452)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:256)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:269)
        at com.sun.corba.ee.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:125)
        at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:188)
        at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:186)
        at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.is_a(CorbaClientDelegateImpl.java:352)
        at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112)
        at org.omg.CosNaming.NamingContextHelper.narrow(NamingContextHelper.java:69)
        at com.sun.enterprise.naming.impl.SerialContext.narrowProvider(SerialContext.java:355)
        at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:327)
        at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:271)
        ... 3 more
Caused by: java.lang.RuntimeException: java.net.ConnectException: Connection refused: connect
        at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:340)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:239)
        ... 13 more
Caused by: java.net.ConnectException: Connection refused: connect
        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:106)
        at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:325)
        ... 14 more
Java Result: 1
```

Ich habe wirklich überhaupt keine Ahnung woran es liegen könnte und beschäftige mich auch noch nicht so lange mit JavaEE (also bitte nicht zu kompliziert erklären :bahnhof, ich hoffe ihr könnt mir weiterhelfen .


----------



## FArt (5. Apr 2010)

Connection refused heißt, dass die Kommunikation nicht klappt.
Wie sehen die JNDi Properties des Clients aus? Kannst du den Server pingen? Kannst du einen Telnet auf den Port des Servers machen? Firewall? Andere Netzwerkprobleme?


----------



## New_User_20 (5. Apr 2010)

Also bei den JNDI Properties am Client habe ich eigentlich nichts geändert. Was müsste ich da denn einstellen und wo? Das Problem ist, dass ich nicht sicher bin auf welchen Port die "Kommunikation" läuft, glassfish startet ja mehrere Ports, in der Firewall habe ich den Standardport für den HttpListener (dieser entspricht dem, welcher auch bei JSP,... verwendet wird) freigegeben. Gibt es noch einen anderen eigenen Port für JNDI, denn dieser taucht beim starten des Servers als Start-Log nicht mit auf.


----------



## FArt (6. Apr 2010)

Ich kenne das Tutorial nicht und ich habe mit Glassfish noch nicht gearbeitet. In der Regel ist der Standardinvoker für Beankommunikation nicht ein HTTP-Invoker sondern ein RMI Invoker.
Schaue dich in der Einsteigerdoku um und schalte die passenden Ports frei. Schalte die Firewall erst mal aus.

Die Tutorials "klicke hier und drücke dort" sind nicht unbedingt hilfreich, da viele Konfigurationen defaultet werden bzw. im Hintergrund vorgenommen werden (z.B. von der IDE).


----------



## New_User_20 (6. Apr 2010)

Firewall abschalten hat leider nichts gebracht, ich hab noch die Vermutung, das evtl. bei der Installation des Glassfish Servers ein Fehler unterlaufen ist weil evtl. ein Port besetzt war,... Anscheindend wird der Standardport 3700 für den IIOP Port (Corba) benötigt, da Java den NameService von Corba zu nutzen scheint (hoffe liege mit der Vermutung nicht völlig daneben). Deshalb wollte ich fragen, wo man die Ports, die der Glassfish verwendet einsehen kann, (habe schon gegoogelt aber nichts brauchbares gefunden).


----------



## FArt (6. Apr 2010)

Ja, dem Stacktrace nach wird wohl CORBA verwendet. Ein Konflikt sollte aber im Logfile des Servers zu sehen sein, weil dann der enstpechende Service nicht gestartet werden kann.


----------



## New_User_20 (6. Apr 2010)

Es geht .

Es lag daran, dass wie bereits vermutet der Port beim Installieren wahrscheinlich belegt war. Nach hinzufügen der Properties zur InitialContext funktioniert es.

Vielen Dank für deine Hilfe!


----------



## Javaoon (16. Dez 2010)

Hallo,

ich hab genau das gleiche Problem wie mein Vorposter. 

Das Problem wurde ja gelöst nur werde ich aus dem Satz "Nach hinzufügen der Properties zur InitialContext funktioniert es." nicht schlau :/. Kann mir das einer verständlich erklären was ich machen muss?

Benutze Glassfish V3 Server
IDE: Netbeans 6.9.1

Hier nochmal die Fehlermeldung: 


```
16.12.2010 12:16:12 com.sun.enterprise.transaction.JavaEETransactionManagerSimplified initDelegates
INFO: Using com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate as the delegate
Exception in thread "main" javax.naming.NamingException: Lookup failed for 'java:global/HelloEJB/HelloWorldBean' in SerialContext ,orb'sInitialHost=localhost,orb'sInitialPort=3700 [Root exception is javax.naming.NameNotFoundException: HelloEJB]
        at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at helloclient.Main.main(Main.java:24)
Caused by: javax.naming.NameNotFoundException: HelloEJB
```

Danke


----------



## FArt (17. Dez 2010)

Javaoon hat gesagt.:


> nur werde ich aus dem Satz "Nach hinzufügen der Properties zur InitialContext funktioniert es." nicht schlau :/. Kann mir das einer verständlich erklären was ich machen muss?



Dieser Satz dürfte nichts mit der Lösung zu tun gehabt haben. Wenn ein InitalContext erstellt werden soll, kann ich zu verwendenden Properties entweder als Objekt im Konstruktor mitgeben, oder der Context erwartet, dass die Properties als Systemproperties gesetzt sind bzw. eine Datei jndi.properties im Klassenpfad abgelegt sind, die die nötigen Einstellungen vornehmen.

In deinem Fall kannst du den Server sehen. Jedoch antwortet dieser, dass unter dem Namen, mit dem du im NamingService nachsiehst, kein EJB registriert ist. Entweder gab es einen Fehler beim Deployment (sieht man im Logfile) oder das Bean liegt im JNDI woander bzw. unter einem anderen Namen.
Müsste man aber alles beim Deploymentvorgang und bei entsprechender Logkonfiguration am Server im Logfile sehen können.


----------

