java - WebSphere Application Server for Liberty 找不到上下文根

标签 java eclipse jsf websphere-liberty

我是使用 Java EE 在 Eclipse 中构建动态 Web 项目的新手。一开始一切顺利,我可以在我的 WebSphere Application Server for Liberty(版本 16.0.0.4)上本地运行我的 Web 项目,并从

localhost:9080/MainApplication

并推送到我在 IBM BlueMix 上的远程服务器,一切仍然有效。

在开发过程中,我发现了 JavaServer Faces 的功能。所以我在 eclipse 中进入我的项目,并使用 Mojara 2.2 JSF 实现库添加了 JSF facet。一旦我将 JSF 方面添加到我的项目中,每次我尝试在本地运行我的 Web 应用程序时,我都会遇到“找不到上下文根”错误页面。甚至尝试直接访问我的网页 (localhost:9080/MainApplication/index.html) 也会导致同样的错误。然而,推送到我的远程服务器仍然有效,我的 Web 项目正常运行 JSF,所以这让我相信我的本地计算机上的 WebSphere Application Server 配置有问题。

通过在 Eclipse 中从我的应用程序中删除 JSF facet 进行还原修复了问题,然后重新添加 facet 又重新引入了问题。根据这个link ,添加一个 JSF facet 只会将您选择的 JSF 实现库导入到项目中,添加一个“Faces 配置文件”并使用 faces servlet 配置更新您的 web.xml。所以我不明白为什么添加 JSF facet 会导致服务器找不到上下文根。 这是我的 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <display-name>MainApplication</display-name>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
    <context-param>
        <description>
        State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <context-param>
        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
        <param-value>resources.application</param-value>
    </context-param>
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>
    <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>
</web-app>

和 server.xml:

<server description="new server">

    <!-- Enable features -->
    <featureManager>
        <feature>webProfile-7.0</feature>
        <feature>localConnector-1.0</feature>
        <feature>adminCenter-1.0</feature>
    </featureManager>

    <basicRegistry id="basic">
      <user name="admin" password="adminpwd"/>
   </basicRegistry>

   <administrator-role>
      <user>admin</user>
   </administrator-role>

    <remoteFileAccess>
        <writeDir>${server.config.dir}</writeDir>
    </remoteFileAccess>

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>

    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>

    <applicationMonitor updateTrigger="mbean"/>
    <keyStore id="defaultKeyStore" password="adminpwd"/>

    <webApplication id="MainApplication" location="MainApplication.war" name="MainApplication" contextRoot="MainApplication" type=""/>
</server>

我试过开始一个新项目并从头开始添加 JSF,而不是以后再添加,但我遇到了同样的问题。我已经尝试将 contextRoot=”MainApplication” 添加到我的 web 项目下的 server.xml 中,但这也不起作用。如果我右键单击我的项目 -> 属性 -> Web 项目设置 -> 上下文根: 该值设置为 MainApplication。 一篇 stackoverflow 帖子在这里有类似的问题: WebSphere Liberty Profile: Context Root Not Found 但他的修复涉及一些我的项目中没有的文件(ibm-web-ext.xml 和 ibm-web-bnd.xml)。尽管如此,我尝试在我的 WEB-INF 目录中创建这些文件,但仍然没有成功。

过去 3 天我一直在寻找解决方案,但一无所获,用尽了我所有的想法。感谢您的帮助。

最佳答案

webProfile-7.0 特性引入了jsf-2.2 特性,因此问题可能是由于两个jsf 实现引起的。为确保这不是问题所在,您可以列出 webprofile 独立提供的每个功能,但删除 jsf,因此: jsp-2.3, ejbLite-3.2, managedBeans-1.0, beanValidation-1.1, servlet-3.1, ssl-1.0, jndi-1.0, jsonp-1.0, appSecurity-2.0, jdbc-4.1, jaxrs-2.0, jaxrsClient-2.0, el- 3.0、json-1.0、jpaContainer-2.1、cdi-1.2、distributedMap-1.0、websocket-1.1、jpa-2.1

加上您的其他两个功能:adminCenter-1.0、localConnector-1.0

关于java - WebSphere Application Server for Liberty 找不到上下文根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42708729/

相关文章:

jsf - 从JSF获得警告:在我们尝试为Flash设置传出Cookie时,响应已经提交

java - 使用 tc 服务器设置 kerberos 的问题

java - Logcat onclicklistener android 错误

java - 仅运行 JUnit 测试时 Hibernate SessionFactory 创建失败

java - 代码块在 Android Studio 中无法运行,但在 Eclipse 中运行良好?

css - 更改 p :tabMenu 中的 css 样式

jsf - 查找用户IP地址

java - 在 MainActivity 中存储包含附加内容的 bundle

java - 如何处理 HttpAsyncClient 异常

java - 康威的生命游戏模拟 - 绘图问题