Удаленный интерфейс EJB не работает через интернет - PullRequest
2 голосов
/ 16 января 2011

У меня есть контейнер EJB, который развернут на JBoss 5.1 на виртуальной машине Amazon AWS Fedora 8.У меня есть другое приложение, которое я хочу получить доступ к этому контейнеру EJB удаленно через Интернет.Но я получаю следующее исключение

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

Здесь xxx.xxx.xx.x - внутренний IP-адрес компьютера, на котором работает EJB.

Вот код, который я использовал для доступа к нему

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");

Я также отредактировал файл /etc/hosts как

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

и запустил JBoss с

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

Я думаю, что я выполнил все необходимые конфигурации и правильный кодэто, но не похоже на работу.Пожалуйста, помогите мне решить эту проблему, это беспокоило меня больше недели.И извините за сокрытие фактических ips по соображениям безопасности.

Ответы [ 2 ]

2 голосов
/ 16 января 2011

Тайм-аут соединения Это может быть проблема с брандмауэром. Убедитесь, что порт открыт: http://www.canyouseeme.org/

Вы также можете попробовать установить свойства: "org.omg.CORBA.ORBInitialHost" и "org.omg.CORBA.ORBInitialPort".

1 голос
/ 16 января 2011

Можете ли вы telnet on: адрес хоста и порт orb. то есть 127.0.0.xxx 3700

Если вы не получили ответа, то это определенно проблема с сетевым экраном.

...