WebSphere Liberty 配置文件:找不到上下文根

WebSphere Liberty Profile: Context Root Not Found

我似乎无法在本地运行它,即使相同的 WAR 在远程服务器上运行也是如此。当我在本地访问我的应用程序时,出现 "Context Root Not Found" 错误。 Liberty 配置文件版本为 8.5.5.5。

相关文件如下:

server.xml

<?xml version="1.0" encoding="UTF-8"?>
<server description="tlc server">
  <!-- Enable features -->
  <featureManager>
    <feature>jsp-2.2</feature>
    <feature>ssl-1.0</feature>
    <feature>localConnector-1.0</feature>
    <feature>restConnector-1.0</feature>
    <feature>json-1.0</feature>
    <feature>jaxrs-1.1</feature>
    <feature>servlet-3.0</feature>
    <feature>jpa-2.0</feature>
    <feature>beanValidation-1.0</feature>
    <feature>jndi-1.0</feature>
    <feature>jdbc-4.0</feature>
    <feature>monitor-1.0</feature>
  </featureManager>
  <httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" httpsPort="9443" virtualHost="default_host" />
  <jdbcDriver id="DerbyJDBCDriver">
    <library name="DerbyLib">
      <fileset dir="C:\tools\servers\wlp\lib" includes="derbyclient-10.6.1.0.jar" />
    </library>
  </jdbcDriver>
  <dataSource jndiName="jdbc/TLCDataSource" id="derbyDataSource" jdbcDriverRef="DerbyJDBCDriver">
    <properties.derby.client databaseName="TLC" password="APP" user="APP" />
  </dataSource>
  <applicationMonitor updateTrigger="mbean" />
  <application id="TLC_war" context-root="/TLC" location="C:\Users\nd26434\gitrepos\tlc\target\TLC-1.0.0-SNAPSHOT.war" name="TLC_war" type="war">
    <classloader delegation="parentLast">
      <privateLibrary>
        <fileset dir="C:\tools\servers\wlp\lib" includes="aspectjweaver-1.8.0.jar" />
      </privateLibrary>
    </classloader>
  </application>
</server>

message.log

[3/18/15 20:19:54:789 EDT] 0000001b com.ibm.ws.app.manager.AppMessageHelper                      A CWWKZ0022W: Application TLC_war has not started in 30.018 seconds.
[3/18/15 20:20:03:174 EDT] 0000001f com.ibm.ws.webcontainer.osgi.webapp.WebGroup                 I SRVE0169I: Loading Web Module: TLC-1.0.0-SNAPSHOT.
[3/18/15 20:20:03:175 EDT] 0000001f com.ibm.ws.webcontainer                                      I SRVE0250I: Web Module TLC-1.0.0-SNAPSHOT has been bound to tlc_host.

ibm-web-bnd.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-bnd_1_0.xsd"
    version="1.0">
    <virtual-host name="tlc_host"/>
    <resource-ref name="jdbc/TLCDataSource"
        binding-name="jdbc/TLCDataSource" />
</web-bnd>

ibm-web-ext.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-ext
    xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
    version="1.0">
    <reload-interval value="3"/>
    <context-root uri="TLC" />
    <enable-directory-browsing value="false"/>
    <enable-file-serving value="true"/>
    <enable-reloading value="true"/>
    <enable-serving-servlets-by-class-name value="false" />
</web-ext>

从您的 ibm-web-ext.xml 文件中删除 <virtual-host name="tlc_host"/>。因为你没有 tlc_host,但是 default_host.

找不到上下文根是由于其中一个配置文件中的问题引起的。 在我的例子中,web.xml 有一个未关闭的评论,因此 war 没有正确构建。

这导致 EAR 文件没有更新。

解法:

  1. 将您 web.xml 与以前的版本进行比较,看看有什么变化。
  2. 将war添加到服务器而不是ear文件中可以看到错误。 (如果在 Liberty 服务器上 运行)