Swing Client - поиск в EJB2 через HTTP в JBoss 5.1 - PullRequest
0 голосов
/ 04 января 2012

У меня есть свинг-клиент, который подключается к моему приложению ejb2, развернутому в JBoss 5.1.От Клиента есть особое требование сделать его доступным в Интернете.

Архитектура развертывания выглядит следующим образом:

swing_client -> extranet_ip | firewall |-> iis7_machine -> jboss5.1_machine.

Свойства jndi в клиенте следующие: Context.PROVIDER_URL = http://extranet_ip:9180/invoker/JNDIFactory Context.INITIAL_CONTEXT_FACTORY = org.jboss.naming.HttpNamingContextFactory

Эта конфигурация работает нормально, когда клиент находится внутри внутренней сети.Но он не работает в Интернете (экстрасеть).

При первоначальной попытке я получил сообщение об ошибке «Отказано в соединении». После просмотра некоторых сообщений на различных форумах я изменил файл server \ deploy \ http-invoker.sar.\ META-INF \ jboss-service.xml, чтобы отразить extranet_ip в invokerURL.

После этого я получаю следующую ошибку.

org.jboss.remoting.CannotConnectException: Не удается получить соединение с сервером.Проблема при установлении соединения с сокетом для InvokerLocator [socket: //10.200.1.193: 4546 /? DataType = invocation & enableTcpNoDelay = true & marshaller = org.jboss.invocation.unified.marshall.InvocationMarshaller & unmarshaller = org.jbossun.in.sh. 101.ht.*

Где 10.200.1.193 - это IP-адрес в интрасети компьютера с сервером JBoss.

Я попытался изменить параметр trasport в remoting-jboss-beans.xml на http, но в то время клиент не работал ви интранет, и экстранет.

Пожалуйста, кто-нибудь предложит способ решения этой проблемы.Или есть какой-то другой способ реализовать RMI поверх Http в JBoss?

Обновление : В качестве решения мне пришлось изменить архитектуру развертывания следующим образом.

swing_client --> extranet_ip | firewall |-> jboss5.1_machine

, где сервер приложений JBoss будет напрямую доступен через брандмауэр.Затем обновите clientConnectAddress в remoting-jboss-beans.xml до IP-адреса экстрасети.Также откройте порты 8080 и 4446 в брандмауэре для этого адреса.

Таким образом, клиент Swing работает, если я использую свойства jnid следующим образом.

Context.PROVIDER_URL: http://extranet_ip:8080/invoker/JNDIFactory
Context.INITIAL_CONTEXT_FACTORY: org.jboss.naming.HttpNamingContextFactory

Но все еще ищем решение, в котором нет необходимости открывать какие-либо нестандартные порты и не нужно напрямую выставлять сервер приложений.

1 Ответ

0 голосов
/ 01 февраля 2012

После долгой борьбы я нашел решение своей проблемы. Решением было изменить тип вызывающего EJB-контейнера на http в standardjboss.xml. Когда invoker является http, он будет использовать настройки в http-invoker.sar для удаленного связывания.

...