GlassFish 5 上带有 JSF 2.3 Web 应用程序的上下文根

Posted

技术标签:

【中文标题】GlassFish 5 上带有 JSF 2.3 Web 应用程序的上下文根【英文标题】:Context-root with JSF 2.3 Web Application on GlassFish 5 【发布时间】:2018-09-10 14:47:40 【问题描述】:

我很难为我的 Web 应用程序配置上下文根,该应用程序包含两个工件,一个 Web 存档和一个 EJB.jar(XYZ_war.war 和 XYZ_ejb.jar)

我可以毫无问题地访问应用程序 本地主机/XYZ (或在远程服务器上使用 www.domain.xy/XYZ)

但是

使用本地主机 (或 www.domain.xy)

显示来自 docroot 目录的 Glassfish 默认网站('您的服务器现在正在运行...')

我使用 GlassFish Web 管理控制台进行部署。 到目前为止,我在这里或其他地方的所有搜索都没有帮助。 我错过了什么?

任何帮助将不胜感激。 谢谢!

glassfish-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish 
Application Server 3.1 Servlet 3.0//EN" 
"http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
    <context-root>/XYZ</context-root>
</glassfish-web-app>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">
    <display-name>XYZ</display-name>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>
</web-app>

域.xml:

<network-listeners>
    ...
    <network-listener protocol="http-listener-1" port="80" name="http-listener-1" thread-pool="http-thread-pool" transport="tcp">
    ... 
</networklistener>
...
<applications>
    <application context-root="/XYZ" object-type="user" name="XYZ_war" location="$com.sun.aas.instanceRootURI/applications/XYZ_war/">
        ...
    </application>
    <application object-type="user" name="XYZ_ejb" location="$com.sun.aas.instanceRootURI/applications/XYZ_ejb/">
        ...
    </application>
</applications>

【问题讨论】:

【参考方案1】:

所以如果我理解正确,您将context-root 设置为/XYZ 并且您希望它是/?设置成/怎么样?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish 
Application Server 3.1 Servlet 3.0//EN" 
"http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
    <context-root>/</context-root>
</glassfish-web-app>

玩得开心:)

【讨论】:

非常感谢您的帮助。我按照您的建议更改了 glassfish-web.xml 中的上下文根。不幸的是,它仍然不起作用(仍然显示 GlassFish 的“欢迎页面”)。 终于解决了。我在 *** 上找到了解决方案。 ***.com/questions/41585188/…谢谢!

以上是关于GlassFish 5 上带有 JSF 2.3 Web 应用程序的上下文根的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Glassfish3.1.2.2/MyFaces2.1.9/JSF 管理的性能优于 TomEE1.5+/CDI 管理的性能?

IDEA 2020.2 部署JSF项目

为什么GlassFish 5.1.0中的JSF将我的@ViewScoped CDI bean的ID属性设置为null?

FacesContext 在带有 JSF 2.3 的 Wildfly 14 中不可注入(Mojarra,主模块)

JSF2 + Eclipse + Glassfish 奇怪的输出问题

GlassFish 域中的 JSF 托管 Bean 唯一性