Настройка нескольких портов на одном экземпляре JBoss? - PullRequest
1 голос
/ 02 марта 2011

Контекст проблемы

Вот ситуация.Мы запускаем симулятор сервлета с войны.Имитируемый сервлет имеет много экземпляров на одной машине, различающихся по номеру порта.Мы хотели бы развернуть только одну войну, к которой могут получить доступ многие порты.

Что у нас есть

Использование Java Filter (см. Ниже дляweb.xml) мы можем перенаправить к каждой реализации сервлета на основе номера порта (порты были добавлены путем добавления дополнительных коннекторов к deploy/jbossweb.sar/server.xml).Этот работает для всех вызовов веб-служб , но не для запросов wsdl , как http://localhost:8092/simulator/sim?wsdl, где 8092 - желаемая версия симулятора из многих (8091, 8092, 8093, 8094),По этому запросу wsdl возвращается правильно (каждая реализация симулятора немного отличается), за исключением того, что тег URL soap:address всегда использует порт 8091.

Примечание. Мы используем JBoss 5.0

соответствующие части web.xml:

  <filter>
      <filter-name>SimFilter</filter-name>
      <filter-class>com.example.filter.MyFilter</filter-class>
  </filter>

  <filter-mapping>
      <filter-name>SimFilter</filter-name>
      <url-pattern>/*</url-pattern>
      <dispatcher>REQUEST</dispatcher>
      <dispatcher>INCLUDE</dispatcher>
      <dispatcher>FORWARD</dispatcher>
  </filter-mapping>  

Ответы [ 2 ]

7 голосов
/ 02 марта 2011

Вам необходимо изменить конфигурацию Tomcat (JBoss использует встроенную версию Tomcat).

Соответствующий файл:

$ $JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml

Есть часть, где вы настраиваете порты привязки. Это то, что приходит по умолчанию:

  <!-- A HTTP/1.1 Connector on port 8080 -->
  <Connector port="8080" address="${jboss.bind.address}"
     maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
     emptySessionPath="true"
     enableLookups="false" redirectPort="8443" acceptCount="100"
     connectionTimeout="20000" disableUploadTimeout="true"/>

Вы можете добавить несколько "разъемов" . Один на каждый порт, который вам нужен.

Затем перезапустите JBoss.

Вы увидите что-то подобное в журнале:

16:29:13,803 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8080
16:29:13,804 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8091
16:29:13,805 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8092
16:29:13,805 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8093
16:29:13,805 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8094

Это то, что вам нужно добавить в файл server.xml:

  <Connector port="8091" address="${jboss.bind.address}"
     maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
     emptySessionPath="true"
     enableLookups="false" redirectPort="8443" acceptCount="100"
     connectionTimeout="20000" disableUploadTimeout="true"/>

  <Connector port="8092" address="${jboss.bind.address}"
     maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
     emptySessionPath="true"
     enableLookups="false" redirectPort="8443" acceptCount="100"
     connectionTimeout="20000" disableUploadTimeout="true"/>

  ....

Один тег XML для каждого нового порта.

0 голосов
/ 22 ноября 2011

Одно сомнение, поскольку все соединения перенаправляются на 8443, какой смысл давать множественную конфигурацию? это избежит перегрузки порта?

...