WildFly:如何分离web应用?
WildFly: How to separate web applications?
我在 WildFly 15 上有一个 JEE 应用程序的 2 个 Web 界面。两者都有不同的 SSL 证书。它们也有不同的 REST 方法/URL。并且客户端不应该能够看到/访问相应的其他方法。
通过添加额外的 HTTPS 侦听器在不同的端口上拥有不同的 SSL 证书完全没有问题。但现在我正在为 Web 应用程序的分离而苦苦挣扎。
您可以通过在 Web 应用程序附带的 jboss-web.xml 中定义它们来使用不同的虚拟主机。但是您不能在 WildFly 配置中的虚拟主机上定义 HTTP 和 HTTPS 侦听器(在我的例子中,特别是在 standalone-full.xml 中)。您必须添加另一个(网络)服务器才能这样做。到目前为止,这也有效。
所以我在 jboss-web.xml 中定义了我的第二个(网络)服务器的虚拟主机。但是我无法部署 Web 应用程序,因为我总是收到 WildFly 找不到虚拟服务器的错误消息:
2019-02-12 15:06:07,930 ERROR [org.jboss.as.controller.management-operation] (External Management Request Threads -- 1) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "myapp-ear-1.0.4.ear")]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.server.default-server.myapp-host"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.deployment.subunit.\"myapp-ear-1.0.4.ear\".\"myapp-web-1.0.4.war\".undertow-deployment.UndertowDeploymentInfoService is missing [jboss.undertow.server.default-server.myapp-host]",
"jboss.deployment.subunit.\"myapp-ear-1.0.4.ear\".\"myapp-web-1.0.4.war\".undertow-deployment is missing [jboss.undertow.server.default-server.myapp-host]"
]
}
2019-02-12 15:06:07,931 ERROR [org.jboss.as.server] (External Management Request Threads -- 1) WFLYSRV0021: Deploy of deployment "myapp-ear-1.0.4.ear" was rolled back with the following failure message:
{
"WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.server.default-server.myapp-host"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.deployment.subunit.\"myapp-ear-1.0.4.ear\".\"myapp-web-1.0.4.war\".undertow-deployment.UndertowDeploymentInfoService is missing [jboss.undertow.server.default-server.myapp-host]",
"jboss.deployment.subunit.\"myapp-ear-1.0.4.ear\".\"myapp-web-1.0.4.war\".undertow-deployment is missing [jboss.undertow.server.default-server.myapp-host]"
]
}
"default-server"网络服务器当然没有"myapp-host"。它在 "myapp-server" 中。但我无法在 jboss-web.xml:
中定义
<jboss-web>
<virtual-host>myapp-host</virtual-host>
</jboss-web>
有人知道吗?
编辑:
正如 NikosParaskevopoulos 所指出的:还有一个附加参数。所以整个事情(jboss-web.xml)应该是这样的:
<jboss-web>
<server-instance>myapp-server</server-instance>
<virtual-host>myapp-host</virtual-host>
</jboss-web>
我已经测试过了,它运行良好。谢谢 NikosParaskevopoulos。
在 JBoss/WildFly 文档中,有一个 <server-instance>
元素:
[...] specifies which server instance configuration this application belongs to
因此,将 jboss-web.xml 更改为:
<jboss-web>
<virtual-host>myapp-host</virtual-host>
<server-instance>myapp-server</server-instance>
</jboss-web>
顺便说一下,所有 WildFly 配置 XML 的 XSD 和 DTD 都可以在 docs/schema 下的 WildFly 发行版中找到。它们包含足够的文档,我发现它们非常有用。
我在 WildFly 15 上有一个 JEE 应用程序的 2 个 Web 界面。两者都有不同的 SSL 证书。它们也有不同的 REST 方法/URL。并且客户端不应该能够看到/访问相应的其他方法。
通过添加额外的 HTTPS 侦听器在不同的端口上拥有不同的 SSL 证书完全没有问题。但现在我正在为 Web 应用程序的分离而苦苦挣扎。
您可以通过在 Web 应用程序附带的 jboss-web.xml 中定义它们来使用不同的虚拟主机。但是您不能在 WildFly 配置中的虚拟主机上定义 HTTP 和 HTTPS 侦听器(在我的例子中,特别是在 standalone-full.xml 中)。您必须添加另一个(网络)服务器才能这样做。到目前为止,这也有效。
所以我在 jboss-web.xml 中定义了我的第二个(网络)服务器的虚拟主机。但是我无法部署 Web 应用程序,因为我总是收到 WildFly 找不到虚拟服务器的错误消息:
2019-02-12 15:06:07,930 ERROR [org.jboss.as.controller.management-operation] (External Management Request Threads -- 1) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "myapp-ear-1.0.4.ear")]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.server.default-server.myapp-host"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.deployment.subunit.\"myapp-ear-1.0.4.ear\".\"myapp-web-1.0.4.war\".undertow-deployment.UndertowDeploymentInfoService is missing [jboss.undertow.server.default-server.myapp-host]",
"jboss.deployment.subunit.\"myapp-ear-1.0.4.ear\".\"myapp-web-1.0.4.war\".undertow-deployment is missing [jboss.undertow.server.default-server.myapp-host]"
]
}
2019-02-12 15:06:07,931 ERROR [org.jboss.as.server] (External Management Request Threads -- 1) WFLYSRV0021: Deploy of deployment "myapp-ear-1.0.4.ear" was rolled back with the following failure message:
{
"WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.server.default-server.myapp-host"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.deployment.subunit.\"myapp-ear-1.0.4.ear\".\"myapp-web-1.0.4.war\".undertow-deployment.UndertowDeploymentInfoService is missing [jboss.undertow.server.default-server.myapp-host]",
"jboss.deployment.subunit.\"myapp-ear-1.0.4.ear\".\"myapp-web-1.0.4.war\".undertow-deployment is missing [jboss.undertow.server.default-server.myapp-host]"
]
}
"default-server"网络服务器当然没有"myapp-host"。它在 "myapp-server" 中。但我无法在 jboss-web.xml:
中定义<jboss-web>
<virtual-host>myapp-host</virtual-host>
</jboss-web>
有人知道吗?
编辑:
正如 NikosParaskevopoulos 所指出的:还有一个附加参数。所以整个事情(jboss-web.xml)应该是这样的:
<jboss-web>
<server-instance>myapp-server</server-instance>
<virtual-host>myapp-host</virtual-host>
</jboss-web>
我已经测试过了,它运行良好。谢谢 NikosParaskevopoulos。
在 JBoss/WildFly 文档中,有一个 <server-instance>
元素:
[...] specifies which server instance configuration this application belongs to
因此,将 jboss-web.xml 更改为:
<jboss-web>
<virtual-host>myapp-host</virtual-host>
<server-instance>myapp-server</server-instance>
</jboss-web>
顺便说一下,所有 WildFly 配置 XML 的 XSD 和 DTD 都可以在 docs/schema 下的 WildFly 发行版中找到。它们包含足够的文档,我发现它们非常有用。