如何将 root(/) 上下文中的 war 文件部署到 Wildfly 9.0.1 版

Posted

技术标签:

【中文标题】如何将 root(/) 上下文中的 war 文件部署到 Wildfly 9.0.1 版【英文标题】:How to deploy war file in root(/) context to Wildfly ver 9.0.1 【发布时间】:2015-11-21 09:28:48 【问题描述】:

我是 Wildfly 的新手,直到现在我都在使用 tomcat 来部署我的应用程序。现在只是为了添加 Wildfly 的功能,我们要继续进行此操作。 我正在使用 Windows 操作系统,我已经完成了 wildfly 的基本实现以启动服务等,但无法部署 ROOT.war 代替欢迎页面。我已经研究并浏览了很多链接,我在我的项目 WEB-INF 文件夹中添加了 jboss-web.xml,并在链接中添加了以下设置。 但我仍然无法在独立部署中部署 ROOT.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_5_1.xsd">
    <context-root>/</context-root>
</jboss-web>`

我已经创建了管理员用户,但是为了部署,我只使用 wildfly 用户设置。为此,我还取消了 bin/init.d wildfly.conf fly 中的字段的注释。 但完全没有意识到错误。

注意:我们也在 linux 机器上尝试过,但 ROOT.war 也没有部署在那里。used

【问题讨论】:

请粘贴部署的server.log 先生,我翻阅了一本电子书,里面还有一些 bat 文件要执行。如果你能帮我解决这个问题,那将是一个 grd 帮助,因为你在 jboss 上做了很多工作。任何邮件 ID 先生 【参考方案1】:

这是为那些在项目中使用 Maven 的人提供的解决方案。要让 Wildfly 在/ 下托管您的应用程序,您必须将包含该应用程序的war 文件命名为“ROOT.war”。要自动执行此操作,请将 pom.xml 中的默认 war 文件名更改为 ROOT,如下所示:

...
</dependencies>
<build>
    <!-- <finalName>$project.artifactId</finalName> -->
    <finalName>ROOT</finalName>

这样,当使用 Maven 将应用程序部署到 Wildfly 时,文件会自动托管在根目录中。

【讨论】:

【参考方案2】:

欢迎页面底部有注释,

要替换此页面,请在您的服务器中将“enable-welcome-root”设置为 false 使用 / 作为其上下文路径配置和部署您自己的战争。

请确认您是否将 enable-welcome-root 设置为 false。

【讨论】:

先生,我使用的是没有此属性的 9.0.1 版本,我在某处读到不需要这样做,只需在您的应用程序中添加 jboss-web.xml 和上下文路径“/” .【参考方案3】:

在创建war文件之前,必须在WEB-INF文件夹中添加两个文件

    jboss-web.xml

    <?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_5_1.xsd">
        <context-root>/</context-root>
    </jboss-web>
    

    bean.xml

【讨论】:

对我来说仍然一无所获,我有一个简单的 helloWorld servlet,可以在 tomcat 中工作,但不能在 wildfly 9 中使用【参考方案4】:

如果你的网络模块在耳朵里,你可以使用以下语法

<host name="default-host" alias="localhost" default-web-module="myApp.ear.myWebApp.war">

【讨论】:

【参考方案5】:

对于我的 wildfly 9.0.1 部署,我们执行了以下两个操作,并且成功了。

    jboss-web.xml 由其他专家如上所述。

    在standalone.xml中,

    <host name="default-host" alias="localhost, myAppDomain.com" default-web-module="myApp.war">
        <location name="/" handler="welcome-content"/>
        <filter-ref name="server-header"/>
        <filter-ref name="x-powered-by-header"/>
    </host>
    

【讨论】:

【参考方案6】:

要使用 Wildfly 覆盖欢迎 webapp,您需要在 webapp 的 WEB-INF 中创建一个 jboss-web.xml 并使用以下内容:

<jboss-web>
    <context-root>/</context-root>
</jboss-web>

但是如果您尝试访问根目录(例如http://localhost:8080/),您仍然会看到默认的欢迎内容。要删除它,您只需将 Wildfly 目录中的目录welcome-content 重命名即可。

【讨论】:

以上是关于如何将 root(/) 上下文中的 war 文件部署到 Wildfly 9.0.1 版的主要内容,如果未能解决你的问题,请参考以下文章

在外部 tomcat 中定义 Spring Boot 应用程序的上下文路径

在tomcat 7中设置默认应用程序

如何从打包在war文件中的jar文件中加载资源? [复制]

使用spring boot loader WarLauncher时如何在war文件之外加载属性文件?

如何在 Tomcat 7.0 中设置 Web 应用程序的上下文路径

如何在 WAR 存档中包含应用程序配置文件?