Hallo,
nachdem ich nun eine ganze Weile an MBeans entwickelt habe wollte ich nun eine Kommunikation von einem lokalen JBoss zu einem jBoss auf nem anderen Rechner einrichten und dabei bin ich auf folgendes Problem gestoßen:
Mein Stückchen Quellcode:
funktioniert wunderbar auf meinen lokalen Rechner (also lokal gestartet und zur lokalen jBoss-Instanz verbunden).
Versuche ich das nun mit einem Remote-jBoss:
kriege ich folgende Exception:
seltsamerweise kriege ich, wenn ich den lokalen jBoss runterfahre und die Verbindung aus einem normalen kleinen Java-Client teste, noch eine andere Exception:
Ich habe den jBoss von meinem lokalen Rechner 1 zu 1 auf den entfernten Rechner kopiert (die Rechner stehen beide im selben Lan ... können sich also gegenseitig ohne Probleme erreichen) ...
Führe ich dort meinen Code aus passiert das gleiche analog ... Zugriff auf den dort lokal laufenden jBoss funktioniert, Zugriff auf den Remote nicht ...
Ich habe versucht ob es was bringt, in der conf/jboss-service.xml die
<attribute name="BindAddress">${jboss.bind.address}</attribute>
auf
<attribute name="BindAddress"></attribute>
zu setzen, aber da gabs gar keine Änderungen.
Wenn ich versuche eine Verbindung mit Twiddle aufzubauen bekomme ich die gleichen Exceptions ...
An einem Firewall kanns nicht liegen, die sind deaktiviert ...
Ich kann mir nur noch vorstellen, dass das irgendeine jBoss-Konfigurationsgeschichte ist.
Kann mir da irgendwer weiter helfen und mir sagen, wo ich was einstellen muss, um remote auf einen jBoss zugreifen zu können!?
btw: Zugriff über die JMX-Console bringt an der Stelle nichts, da ich ja meine eigene Klasse mit dem JMX-Interface des jBoss verbinden will ...
Ich wäre für Tips und Hilfe dankbar!
Grüße
Steffen
nachdem ich nun eine ganze Weile an MBeans entwickelt habe wollte ich nun eine Kommunikation von einem lokalen JBoss zu einem jBoss auf nem anderen Rechner einrichten und dabei bin ich auf folgendes Problem gestoßen:
Mein Stückchen Quellcode:
Code:
Hashtable attr = new Hashtable();
attr.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
attr.put(Context.PROVIDER_URL, "jnp://localhost:1099");
InitialContext ic = new InitialContext(attr);
Enumeration names = ic.list("");
while(names.hasMoreElements()) {
NameClassPair name = (NameClassPair)names.nextElement();
System.out.println(name);
}
funktioniert wunderbar auf meinen lokalen Rechner (also lokal gestartet und zur lokalen jBoss-Instanz verbunden).
Versuche ich das nun mit einem Remote-jBoss:
Code:
Hashtable attr = new Hashtable();
attr.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
attr.put(Context.PROVIDER_URL, "jnp://192.168.1.3:1099");
InitialContext ic = new InitialContext(attr);
Enumeration names = ic.list("");
while(names.hasMoreElements()) {
NameClassPair name = (NameClassPair)names.nextElement();
System.out.println(name);
}
kriege ich folgende Exception:
Exception in thread "main" javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at de.tutorials.JBossRMIConnectorExampleModified.main(JBossRMIConnectorExampleModified.java:27)
Caused by: java.rmi.NoSuchObjectException: no such object in table
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
... 3 more
seltsamerweise kriege ich, wenn ich den lokalen jBoss runterfahre und die Verbindung aus einem normalen kleinen Java-Client teste, noch eine andere Exception:
Exception in thread "main" javax.naming.CommunicationException [Root exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.2; nested exception is:
java.net.ConnectException: Connection refused]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at de.tutorials.JBossRMIConnectorExampleModified.main(JBossRMIConnectorExampleModified.java:27)
Caused by: java.rmi.ConnectException: Connection refused to host: 127.0.0.2; nested exception is:
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:574)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:94)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
... 3 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
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 java.net.Socket.connect(Socket.java:466)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:179)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:569)
... 8 more
Ich habe den jBoss von meinem lokalen Rechner 1 zu 1 auf den entfernten Rechner kopiert (die Rechner stehen beide im selben Lan ... können sich also gegenseitig ohne Probleme erreichen) ...
Führe ich dort meinen Code aus passiert das gleiche analog ... Zugriff auf den dort lokal laufenden jBoss funktioniert, Zugriff auf den Remote nicht ...
Ich habe versucht ob es was bringt, in der conf/jboss-service.xml die
<attribute name="BindAddress">${jboss.bind.address}</attribute>
auf
<attribute name="BindAddress"></attribute>
zu setzen, aber da gabs gar keine Änderungen.
Wenn ich versuche eine Verbindung mit Twiddle aufzubauen bekomme ich die gleichen Exceptions ...
An einem Firewall kanns nicht liegen, die sind deaktiviert ...
Ich kann mir nur noch vorstellen, dass das irgendeine jBoss-Konfigurationsgeschichte ist.
Kann mir da irgendwer weiter helfen und mir sagen, wo ich was einstellen muss, um remote auf einen jBoss zugreifen zu können!?
btw: Zugriff über die JMX-Console bringt an der Stelle nichts, da ich ja meine eigene Klasse mit dem JMX-Interface des jBoss verbinden will ...
Ich wäre für Tips und Hilfe dankbar!
Grüße
Steffen