在 JBOSS EAP 6.4 中,上下文根目录自动更改为临时文件夹名称

Posted

技术标签:

【中文标题】在 JBOSS EAP 6.4 中,上下文根目录自动更改为临时文件夹名称【英文标题】:Context root automatically changing to temp folder name in JBOSS EAP 6.4 【发布时间】:2021-11-12 04:04:56 【问题描述】:

我有一个应用程序正在尝试部署到 JBoss EAP 6.4。部署应用程序时我没有看到任何错误。但是,当我尝试使用http://localhost:8080/contextroot/ 之类的上下文根访问应用程序时,我被重定向到http://localhost:8080/contextroot.war-345rdser34dwwe/login.jsp,其中contextroot.war-345rdser34dwwe 是在$jboss.home/standalone/tmp/vfs/temp 下创建的文件夹

这是我的 jboss-deployment-structure.xml

<jboss-deployment-structure>   <!-- Make sub deployments isolated by default, so they cannot see each others 
    classes without a Class-Path entry -->
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>   <!-- This corresponds to the top level deployment. For a war this is the 
    war's module, for an ear -->  <!-- This is the top level ear module, which contains all the classes in 
    the EAR's lib folder -->
<deployment>
    <resources>
        <resource-root path="WEB-INF/lib/bcprov-jdk16-1.46.jar"  use-physical-code-source="true"/>
    </resources>
      <!-- exclude-subsystem prevents a subsystems deployment unit processors running 
        on a deployment -->     <!-- which gives basically the same effect as removing the subsystem, but 
        it only affects single deployment -->
    <exclusions>
        <module name="org.javassist" />
        <module name="org.hibernate" />
        <module name="org.hibernate.validator" />
        <module name="org.jboss.msc" />
        <module name="javax.faces.api" />
        <module name="com.sun.jsf-impl" />
        <module name="org.apache.log4j" />
        <module name="org.slf4j" />
        <module name="org.slf4j.impl" />
        <module name="org.apache.commons.logging" />
        <module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider" />
    </exclusions>
         <!-- This allows you to define additional dependencies, it is the same as 
        using the Dependencies: manifest attribute -->
    <dependencies>
        <module name="com.company.app.config" optional="TRUE"/>         
        <module name="deployment.module.nested.app"/>
    </dependencies>
</deployment>
<module name="deployment.module.nested.app">
    <resources>
        <resource-root path="../contextroot.war"/>
    </resources>
</module>   

这是我的jboss-web.xml

<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

<jboss-web>  
    <security-domain>UserModule</security-domain>
    <security-domain>ServiceModule</security-domain>
</jboss-web>

这是我在standalone-ha.xml 中用于安全子系统的配置

    <security-domain name="UserModule" cache-type="default">
                    <authentication>
                        <login-module code="com.company.uas.service.authentication.loginmodule.UserLoginModule" flag="required"/>
                    </authentication>
                </security-domain>
                <security-domain name="ServiceModule" cache-type="default">
                    <authentication>
                        <login-module code="com.company.uas.service.authentication.loginmodule.ServiceLoginModule" flag="required"/>
                    </authentication>
    </security-domain>

我已经研究了几天,但在网上找不到与此问题相关的任何内容。

【问题讨论】:

在 jboss-web.xml 中设置上下文根不是有帮助吗? /context-root @jpangamarca 我试过了,但我仍然面临同样的问题。 【参考方案1】:

我不确定我是否认为这是一个答案,但我明白为什么我的 /contextroot 更改为 /contextroot.war-345rdser34dwwe。这是因为,我正在向 JBoss 部署一个 war 文件,而 JBoss 指向我的 war 文件的分解版本,该文件出于某种原因存在于 tmp 文件夹中。

我部署了我的 war 文件的分解版本,名称为 contextroot.war 作为文件夹的名称,它工作正常。

【讨论】:

以上是关于在 JBOSS EAP 6.4 中,上下文根目录自动更改为临时文件夹名称的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 应用程序部署在 JBOSS 6.4 eap 上,Java 服务作为后端

无法在 Jboss-eap-6.4 中部署 Spring Boot 应用程序

Jboss (6.4 EAP) 到 WebSphere (7.x)

从Jboss EAP 6.4迁移到EAP 7.1

JBOSS EAP 6.4 无法加载拓扑

在 JBoss EAP 6.4 中没有检测到 HTTP 安全头