Можно ли настроить GlassFish 2, чтобы сделать веб-сервис доступным ** только ** из определенного порта?
В настоящее время мы обслуживаем несколько веб-приложений в домене с портом 80. Этот порт доступен из Интернета.
Теперь должны быть развернуты некоторые EJB, которые представляют некоторые из их методов как веб-сервисы с использованием аннотации @WebMethod. Они не должны быть доступны с (общедоступного) порта 80, а только с порта 8000, доступ к которому возможен только из внутренней сети.
Я установил новый виртуальный сервер с именем "internal", который использует http-слушатель, который прослушивает порт 8000:
<virtual-server hosts="${com.sun.aas.hostName}" http-listeners="http-listener-3" id="internal" log-file="${com.sun.aas.instanceRoot}/logs/server.log" state="on">
<property name="sso-enabled" value="false"/>
<property name="docroot" value="${com.sun.aas.instanceRoot}/docroot"/>
<property name="accesslog" value="${com.sun.aas.instanceRoot}/logs/access"/>
</virtual-server>
<http-listener acceptor-threads="1" address="0.0.0.0" blocking-enabled="false" default-virtual-server="internal" enabled="true" family="inet" id="http-listener-3" port="8000" security-enabled="false" server-name="" xpowered-by="false">
<property name="proxiedProtocols" value="ws/tcp"/>
</http-listener>
Затем я назначил этот виртуальный сервер корпоративному приложению, в котором размещается служба, установив атрибут virtual-servers.
<application-ref disable-timeout-in-minutes="30" enabled="true" lb-enabled="false" ref="myapp" virtual-servers="internal"/>
Веб-сервисы теперь доступны как для портов 80 и 8000, но необходимо, чтобы они были доступны только для портов 8000, а не из 80. Есть ли способ добиться этого в GlassFish 2, используя один домен? Или должен использоваться второй домен?
1 ответ
Вам нужно вытащить свои веб-методы и поместить их в свое собственное приложение. Затем при развертывании приложения вы можете управлять (целевая вкладка), на каком сервере / виртуальных серверах они заканчиваются.