Как развернуть приложение через Интернет с JBoss AS 7 - PullRequest
3 голосов
/ 23 марта 2012

Я использую JBoss 7 AS. Я развертываю проекты через окно linux с помощью cmd, вот так

bin / standalone.sh -b [ipaddress]

Это работает нормально только когда я нахожусь в сети, но не работает, когда я нахожусь вне сети или через Интернет.

Как мне запустить его, чтобы люди могли получить к нему доступ через Интернет?

Я пробовал это, но это не работает.

bin / standalone.sh -b 0.0.0.0

Там написано:

Google Chrome не смог загрузить веб-страницу, потому что ответ занял слишком много времени. Возможно, веб-сайт не работает или у вас возникли проблемы с подключением к Интернету.

Ответы [ 3 ]

7 голосов
/ 17 апреля 2012

Ваш первый шаг - понять и настроить интерфейс и привязки портов. Прежде чем мы перейдем к этому, следует уточнить, что переключатель времени выполнения -b был активен с JBoss AS7.0.2, но не присутствовал в предыдущих выпусках AS 7. Обратитесь к следующей ссылке для получения дополнительной информации через приложение JBoss Форумы сообщества Server 7.

https://community.jboss.org/thread/168789

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

Группы сокетов и привязки портов

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
    <socket-binding name="ajp" port="8009"/>
    <socket-binding name="http" port="8080"/>
    <socket-binding name="https" port="8443"/>
    <socket-binding name="osgi-http" interface="management" port="8090"/>
    <socket-binding name="remoting" port="4447"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>

Вы можете видеть, что коннектор http связан с портом 8080, и вы также можете видеть, что привязки портов API управления связаны с токенами java. Это значения, которые вы можете переопределить (отсюда и синтаксис "${thing:value}"), но вы теряете способность переопределять их, если вы жестко их кодируете. Это актуально, потому что интерфейс по умолчанию - это Java-токен, позволяющий использовать переключатель -b для его переопределения

Интерфейсы

Вот публичный интерфейс по умолчанию в файле standalone.xml. Слово «публика» - просто относительная ручка. Вы можете «вызывать» его как угодно, только если это что-то значит для вас, и вы можете позже связать с ним группы серверов и привязки сокетов. Это отличная особенность AS 7, позволяющая объявлять набор атрибутов в одном элементе и наследовать их атрибуты в другом месте, ссылаясь на имя этого элемента.

Следующий пример позволяет вам ссылаться на интерфейс public в другом месте без необходимости знать, каково действительное значение адреса Inet.

<interfaces>
    <interface name="public">
        <inet-address value="${jboss.bind.address:127.0.0.1}"/>
    </interface>
</interfaces>

Получение Gooey

Вы можете изменить эти значения либо через CLI управления, либо через консоль управления (следуя указаниям рабочего процесса, лучше использовать API-интерфейсы управления и оставить XML в покое). Как и большинство графических интерфейсов, в Консоль управления проще всего перейти. Вот экран привязки сокета. Обратите внимание, что в автономном экземпляре есть только одна «группа привязки сокетов», в данном случае это группа standard-sockets.

Socket binding groups in the Management Console

При необходимости вы можете редактировать привязку http, но вам также следует подумать об интерфейсе, который вы используете для подключения к Интернету. Я собираюсь предположить, что вы настроили свой веб-сервер в соответствии со своими потребностями (что, вероятно, больше относится к apache, чем к JBoss). Вот вид консоли для настроек интерфейса.

Interface settings in the Management Console

Показывает интерфейс public, к которому относится группа привязки standard-sockets в файле конфигурации. Расширенные конфигурации могут использовать раздел Advanced для создания упорядоченных условий для разделения трафика. Вы даже можете включить элемент <any-address/>, который описан в первой ссылке, которую я разместил выше.

На этих двух экранах вы сможете настроить требуемый интерфейс и привязки портов для отображения вашего приложения в Интернете.

0 голосов
/ 12 мая 2015

Поскольку я не могу комментировать ответ drri, я добавляю примечание в качестве ответа.

Когда вы настраиваете больше привязок портов, вы также должны добавить к нему соединитель внутри

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">

следующим образом: когда вы добавляете привязку с именем some-binding на порт 10000, вы указываете ее следующим образом:

        <socket-binding name="some-binding" port="10000"/>

и затем добавляете соединитель соответственно:

<connector name="some-binding" protocol="HTTP/1.1" scheme="http" socket-binding="some-binding"/>
0 голосов
/ 24 марта 2012

Привязка -b 0.0.0.0 не работает в JBoss AS7.Вместо этого вы должны настроить интерфейсы в standalone/configuration/standalone.xml.

<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
    </interface>
    <interface name="public">
        <inet-address value="${jboss.bind.address:<your-public-ip>}"/>
    </interface>
</interfaces>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...