2011-01-16 8 views
2

Ich habe einen EJB-Container, der auf JBoss 5.1 auf einer virtuellen Amazon AWS Fedora 8-Maschine bereitgestellt wird. Ich habe eine andere Anwendung, die ich auf diesen EJB-Behälter über das Internet remote zugreifen möchte. Aber ich erhalte die folgende AusnahmeRemote-EJB-Schnittstelle funktioniert nicht über das Internet

javax.naming.CommunicationException [Root exception is java.rmi.ConnectException: Connection refused to host: xxx.xxx.xx.x; nested exception is: java.net.ConnectException: Connection timed out] 

Caused by: java.rmi.ConnectException: Connection refused to host: xxx.xxx.xx.x; nested exception is: java.net.ConnectException: Connection timed out 

Caused by: java.net.ConnectException: Connection timed out 

Hier xxx.xxx.xx.x ist die interne IP der Maschine die EJB ausgeführt wird. Hier

ist der Code, den ich verwendet, um darauf zuzugreifen

Properties props = new Properties(); 
props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); 
props.setProperty(Context.INITIAL_CONTEXT_FACTORY,org.jboss.security.jndi.JndiLoginInitialContextFactory"); 
props.setProperty(Context.PROVIDER_URL, "<external-ip>:1099"); 
props.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); 
props.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces"); 
props.put("java.naming.provider.url", "jnp://<external-ip>:1099"); 
InitialContext ic = new InitialContext(props); 
ic.lookup("EJBName"); 

Ich habe auch die /etc/hosts Datei wie

bearbeitet
127.0.0.1 localhost.localdomain localhost 
xxx.xxx.xx.x hostname alias 

und begann JBoss mit

-Djboss.bind.address=0.0.0.0 -Djava.rmi.server.hostname=xxx.xxx.xx.x -Dremoting.bind_by_host=false 

Ich denke, ich habe alle notwendigen Konfigurationen vorgenommen und den Code dafür korrigiert, scheint aber nicht zu funktionieren. Bitte helfen Sie mir, dieses Problem zu lösen, das mich seit über einer Woche nervt. Und entschuldige das Ausblenden der aktuellen ips aus Sicherheitsgründen.

Antwort

2

Verbindungs-Timeout Es könnte ein Firewall-Problem sein. Stellen Sie sicher, dass der Port geöffnet ist:

Sie können auch versuchen, die Eigenschaften festzulegen: "org.omg.CORBA.ORBInitialHost" und "org.omg.CORBA.ORBInitialPort".

+0

Ich benutze den JBoss 5.1 auch auf der Client-Seite. Also denke ich, dass ich die ORB-Port-Eigenschaften dafür nicht benötigen werde. Der Anfangskontext gibt den Naming-Stub mit der internen IP an den Client zurück. Aber wenn versucht wird, nachzuschlagen, gibt es mir diese Ausnahme. –

+0

Wenige Überprüfungen: 1. Telnet auf EJB Port 3700/33700 2. Sniffing mit Wireshark, um sicherzustellen, dass eine externe Verbindung versucht wird 3. "netstat -na | grep 3700", um sicherzustellen, dass der Parameter bind.address berücksichtigt wird. – h3xStream

1

Können Sie Telnet an: Host-Adresse und Orb-Port. d. h. 127.0.0.xxx 3700

Wenn Sie keine Antwort erhalten, ist es definitiv ein Problem mit der Firwall.

Verwandte Themen