Exception javax.naming.CommunicationException

ChantalM

Mitglied
Hab folgendes Phänomen :eek:
(überall java -version 1.6.0)

Swing-Client von Debian/Gnome per RMI->JBoss auf Vista: :mad: FEHLER (siehe unten)
Swing-Client von WinXP per RMI->JBoss auf Vista: :D läuft durch


Code:
 Properties objProperties = new Properties(); 
 objProperties.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory"); 
 objProperties.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces"); 
 objProperties.put(Context.PROVIDER_URL, "localhost:2001" ); 

 javax.naming.InitialContext initial = new javax.naming.InitialContext(objProperties); 
  
 NamingEnumeration ne=initial.list(""); 
 while(ne.hasMore()) 
 { 
  System.out.println("Bind Objects :"+ne.next()); 
 } 
/*ergibt 
Bind Objects :project_projectQ: $Proxy58 
Bind Objects :projectD_adminE: $Proxy87 
Bind Objects :project_adminE: $Proxy64 
Bind Objects :project_ServiceContext: $Proxy70 
Bind Objects :TopicConnectionFactory: org.jboss.naming.LinkRefPair 
Bind Objects :projectD_projectDE: $Proxy85 
Bind Objects :jmx: org.jnp.interfaces.NamingContext 
Bind Objects :projectD_ServiceContext: $Proxy93 
Bind Objects :project_projectE: $Proxy62 
Bind Objects :HTTPXAConnectionFactory: org.jboss.mq.SpyXAConnectionFactory 
Bind Objects :ConnectionFactory: org.jboss.mq.SpyConnectionFactory 
Bind Objects :UserTransactionSessionFactory: $Proxy12 
Bind Objects :HTTPConnectionFactory: org.jboss.mq.SpyConnectionFactory 
Bind Objects :XAConnectionFactory: org.jboss.mq.SpyXAConnectionFactory 
Bind Objects :UserTransaction: org.jboss.tm.usertx.client.ClientUserTransaction 
Bind Objects :UILXAConnectionFactory: javax.naming.LinkRef 
Bind Objects :project_projectS: $Proxy66 
Bind Objects :UIL2XAConnectionFactory: javax.naming.LinkRef 
Bind Objects :projectD_AdminS: $Proxy91 
Bind Objects :project_AdminS: $Proxy68 
Bind Objects :queue: org.jnp.interfaces.NamingContext 
Bind Objects :topic: org.jnp.interfaces.NamingContext 
Bind Objects :console: org.jnp.interfaces.NamingContext 
Bind Objects :UIL2ConnectionFactory: javax.naming.LinkRef 
Bind Objects :projectD_adminQ: $Proxy83 
Bind Objects :project_adminQ: $Proxy60 
Bind Objects :HiLoKeyGeneratorFactory: org.jboss.ejb.plugins.keygenerator.hilo.HiLoKeyGeneratorFactory 
Bind Objects :UILConnectionFactory: javax.naming.LinkRef 
Bind Objects :projectD_projectDS: $Proxy89 
Bind Objects :projectD_projectDQ: $Proxy81 
Bind Objects :QueueConnectionFactory: org.jboss.naming.LinkRefPair 
Bind Objects :UUIDKeyGeneratorFactory: org.jboss.ejb.plugins.keygenerator.uuid.UUIDKeyGeneratorFactory 
*/ 

 //hier die Exception obwohl project_projectQ gebunden 
 Object ref=initial.lookup("project_projectQ");                
/* 
javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: project.query.projectQHome] 
*/
 
Wills nochmal verdeutlichen:
Hab also einen Swing-Client, der per RMI auf einen JBoss 4.0.5 (PC mit Vista) zugreift.

Der Swing-Client läuft auf WinXP und führt die Dienste auf dem JBoss ordnungsgemäß aus.
Wenn aber der gleiche Swing-Client auf einer grafischen Linuxoberfläche läuft (Debian/Gnome), gibt es die Exception.

Beim lookup passiert es:

Code:
 Object obj = initial.lookup("project_projectQ");                
 projectQHome home = (projectQHome) javax.rmi.PortableRemoteObject.narrow(obj, projectQHome.class);                
 projectQ con_project = home.create();


nicht etwa Object 'obj' ist null sondern offensichtlích 'initial.lookup("project_projectQ")'
und wie schon geschrieben, das project_projectQ ist eigenlich im initial gebunden.
 
die Exception wird offensichtlich ausgelöst durch das

initial.lookup("project_projectQ")

Es handelt sich ja um eine CommunicationException bzw. ClassNotFoundException,


von der Debian-Maschine sind aber die Ports 2001,2000,4444 und 8083 erreichbar/sichtbar und bei der WinXP-Maschine läuft Swing-Client wie er soll.
 
Anmerkung:

hat zwar nichts mit dem Problem direkt zu tun, aber alle anderen Netwerkfunktionen so das EMail versenden gehen auch auf der Debian-Maschine.
 
Wie startest du denn den Client?
Möglichweise ist der Classpath *doch* irgendwie unvollständig oder falsch?

Ich würde da schon der java.lang.ClassNotFoundException trauen.
 
den einzigen unterschied zwischen WinXP und Debian sehe ich in den Umgebungsvariablen:

WinXP hat:
CLASSPATH=D:\ProjectSES\Java\JBoss\server\default\lib\javax.servlet.jar;D:\ProjectSES\Java\JBoss\server\default\lib\jboss-j2ee.jar;

Debian hat garnichts gesetzt.
 
Ich fasse nochmal zusammen:

Es wird eine Exception beim Swing-Client auf der Debian-Maschine geworfen, und zwar hier:

initial.lookup("project_projectQ");

Die Exception lautet:
java.lang.ClassNotFoundException: project.query.projectQHome
(in diesem Moment gibt es keine einzige Reaktion im Server-Log des JBoss (der Vista-Maschine), auch nicht im Debug-Modus)

Die project.query.projectQHome ist bei uns ein Interface in einer project.ear, die auf dem JBoss (der Vista-Maschine) deployed ist.

Das Interface project.query.projectQHome existiert nicht in der .jar-Datei des Swing-Client (und soll dort auch nicht existieren).

Bisher hatte ich mich nicht darum gekümmert, weil der Swing-Client völlig problemlos auch auf Vista- und WinXP-Maschinen läuft, die im Grunde nichts mit der Client-Entwicklung zu tun haben und lediglich über eine jre 1.6.0 verfügen und auch keinen speziellen SET CLASSPATH besitzen.

Der Swing-Client läuft also völlig konfliktfrei auf diversen Machinen, auf denen nur ein Netzwerkzugang und jre 1.6.0 vorhanden sein muss.


Auf der Debian-Maschine laufen alle Funktionalitäten des Swing-Client normal, auch ein Email-Versand funktioniert reibungslos,
aber hier wirfts die Exception schon nur beim Versuch von initial.lookup("project_projectQ"),
als wenn die Kommunikation nicht klappen würde. Dabei sind alle Ports des JBoss (der Vista-Maschine) von der Debian-Maschine aus erreichbar/sichtbar.

Hauptfragestellung:
1.
Warum funtioniert das initial.lookup("project_projectQ") nicht auf der Debian-Maschine?
2.
Woher kennt die Exception den Namen des Interfaces project.query.projectQHome?
3.
Warum können die in der Variable javax.naming.InitialContext initial = new javax.naming.InitialContext(objProperties);
offensichtlich vorhandenen Informationen für das Naming-Objekt "project_projectQ" im initial.lookup("project_projectQ"); nicht genutzt werden?
 
Zurück