无法将多个 war 包部署到侦听 Wildfly 8.1.0 Final 上不同端口的不同主机?
Not able to deploy multiple war packages to different hosts listening to different ports on Wildfly 8.1.0 Final?
我的用例涉及在单个 Wildfly 服务器上部署两个不同的包(war 个文件)。
在 standalone-full.xml 中,我的套接字绑定组在添加额外套接字后如下所示
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<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:9993}"/>
<socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
<socket-binding name="jacorb" interface="unsecure" port="3528"/>
<socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/>
<socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<socket-binding name="mylocal-internal" port="8099"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
在 standalone-full.xml 中,添加外部服务器后我的子系统如下所示
<subsystem xmlns="urn:jboss:domain:undertow:1.1">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<single-sign-on path="/"/>
</host>
</server>
<server name="mylocal-internal-server">
<http-listener name="config-listener" socket-binding="mylocal-internal"/>
<host name="mylocal-host" alias="localhost2">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<single-sign-on path="/"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="WildFly/8"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
还有我的 jboss-web.xml myapp war 文件如下所示
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.jboss.com/xml/ns/javaee
http://www.jboss.org/j2ee/schema/jboss-web_8_0.xsd">
<context-root>/myapp</context-root>
<virtual-host>mylocal-host</virtual-host>
<server-instance>mylocal-internal-server</server-instance>
</jboss-web>
当我在 9990 通过管理控制台上传和部署 war 文件时,一切都部署成功,但是当我尝试在新端口 8099 上访问 myapp 时,我收到 404 Not Found 错误。
我正在尝试像 http://mydomain:8099/myapp
一样访问它
但是,如果我为端口 8080 部署 war,那么它可以在 http://mydomain:8080/myapp
上成功使用
请指教。
从评论中摘录的这个答案的一些历史来完善图片。
这个问题的配置设置取自 JBoss 论坛中现有的站外问答,这清楚地表明设置没有什么问题,因为它是;正确的配置已经到位,只是其中仍然需要重新配置一些东西。 https://developer.jboss.org/message/857103
稍微比较一下,唯一可以发现的区别是主机别名配置不同(localhost -> localhost2)。然而,上述 JBoss 论坛帖子中的源代码 material 并未配置用于生产部署,它是用于在本地主机上进行开发的设置。这个问题是关于在适当的域名后面将服务器部署到生产环境中。这就是失踪的 link 所在的地方。
正如这个现有的相关 Whosebug 问题所指出的,您需要在别名中输入正确的主机名才能使其正常工作。 Wildfly / Undertow : Multiple aliases for one host
这也是这个问题的最终解决方案;将域名添加到主机别名。
<host name="mylocal-host" alias="localhost2, my.domainname.com">
...
</host>
在我的情况下 (),我必须为虚拟服务器添加 "default-host"(除了其他答案中建议的内容)。
<server name="jolokia-server" default-host="jolokia-host">
否则,我无法从系统外部访问不同端口上的服务。 Here你可以找到完整的配置。
我的用例涉及在单个 Wildfly 服务器上部署两个不同的包(war 个文件)。
在 standalone-full.xml 中,我的套接字绑定组在添加额外套接字后如下所示
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<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:9993}"/>
<socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
<socket-binding name="jacorb" interface="unsecure" port="3528"/>
<socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/>
<socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<socket-binding name="mylocal-internal" port="8099"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
在 standalone-full.xml 中,添加外部服务器后我的子系统如下所示
<subsystem xmlns="urn:jboss:domain:undertow:1.1">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<single-sign-on path="/"/>
</host>
</server>
<server name="mylocal-internal-server">
<http-listener name="config-listener" socket-binding="mylocal-internal"/>
<host name="mylocal-host" alias="localhost2">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<single-sign-on path="/"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="WildFly/8"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
还有我的 jboss-web.xml myapp war 文件如下所示
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.jboss.com/xml/ns/javaee
http://www.jboss.org/j2ee/schema/jboss-web_8_0.xsd">
<context-root>/myapp</context-root>
<virtual-host>mylocal-host</virtual-host>
<server-instance>mylocal-internal-server</server-instance>
</jboss-web>
当我在 9990 通过管理控制台上传和部署 war 文件时,一切都部署成功,但是当我尝试在新端口 8099 上访问 myapp 时,我收到 404 Not Found 错误。 我正在尝试像 http://mydomain:8099/myapp
一样访问它但是,如果我为端口 8080 部署 war,那么它可以在 http://mydomain:8080/myapp
上成功使用请指教。
从评论中摘录的这个答案的一些历史来完善图片。
这个问题的配置设置取自 JBoss 论坛中现有的站外问答,这清楚地表明设置没有什么问题,因为它是;正确的配置已经到位,只是其中仍然需要重新配置一些东西。 https://developer.jboss.org/message/857103
稍微比较一下,唯一可以发现的区别是主机别名配置不同(localhost -> localhost2)。然而,上述 JBoss 论坛帖子中的源代码 material 并未配置用于生产部署,它是用于在本地主机上进行开发的设置。这个问题是关于在适当的域名后面将服务器部署到生产环境中。这就是失踪的 link 所在的地方。
正如这个现有的相关 Whosebug 问题所指出的,您需要在别名中输入正确的主机名才能使其正常工作。 Wildfly / Undertow : Multiple aliases for one host
这也是这个问题的最终解决方案;将域名添加到主机别名。
<host name="mylocal-host" alias="localhost2, my.domainname.com">
...
</host>
在我的情况下 (
<server name="jolokia-server" default-host="jolokia-host">
否则,我无法从系统外部访问不同端口上的服务。 Here你可以找到完整的配置。