Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Path Tomcat 8.5上下文路径工作不正常_Path_Web.xml_Context.xml_Tomcat8.5 - Fatal编程技术网

Path Tomcat 8.5上下文路径工作不正常

Path Tomcat 8.5上下文路径工作不正常,path,web.xml,context.xml,tomcat8.5,Path,Web.xml,Context.xml,Tomcat8.5,我有一个名为cat_tiger.war的应用程序,它被部署为localhost:8080/cat_tiger,但我想将上下文路径改为localhost:8080/cat/lion/。我将META-INF/context.xml文件添加为 以及要创建的server.xml文件 但它仍然部署为localhost:8080/cat_tiger/ 还有什么需要改变的吗 编辑: [1] Tomcat 8.5.3 [2] 2018年9月4日13:50:41.830信息[localhost-startSt

我有一个名为cat_tiger.war的应用程序,它被部署为localhost:8080/cat_tiger,但我想将上下文路径改为localhost:8080/cat/lion/。我将META-INF/context.xml文件添加为

以及要创建的server.xml文件

但它仍然部署为localhost:8080/cat_tiger/

还有什么需要改变的吗

编辑: [1] Tomcat 8.5.3

[2] 2018年9月4日13:50:41.830信息[localhost-startStop-1]org.apache.catalina.startup.HostConfig.deployDescriptor配置描述符[/opt/tomcat/conf/catalina/localhost/cat_tiger.xml]的部署在[2750]毫秒内完成 ... ... 2018年9月4日13:50:39.070警告[localhost-startStop-1]org.apache.catalina.startup.HostConfig.deployDescriptor已指定主机应用库中的docBase[/opt/tomcat/webapps/cat_tiger],将被忽略


[3] 我正在通过Netbeans进行部署,但最终将不得不部署在Docker容器中。

我不明白您为什么会遇到问题,但我已经使用Netbeans 8.2文件>新建项目创建了web项目…>Java Web>Web应用程序,并成功地更改了上下文,因此,如果我提供项目的详细信息,您可能会发现其中的关键区别

cat\u tiger\web\META-INF\context.xml

我的文件看起来与您的相同:

<?xml version="1.0" encoding="UTF-8"?>
<Context copyXML="true" docBase="cat_tiger" path="/cat/lion"/>
实际上,您可能不需要运行应用程序来查看问题;只需从弹出菜单中选择Deploy而不是Run。这是我从部署中获得的输出:

[3] Tomcat日志

以下是Tomcat日志中的部署详细信息,您可以看到我的部署正确显示了上下文,而您的部署没有:

05-Sep-2018 23:09:09.321 INFO [http-nio-8080-exec-6] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying configuration descriptor [C:\apache-tomcat-8.5.20\conf\Catalina\localhost\cat#lion.xml]
05-Sep-2018 23:09:09.334 INFO [http-nio-8080-exec-6] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor [C:\apache-tomcat-8.5.20\conf\Catalina\localhost\cat#lion.xml] has finished in [13] ms
05-Sep-2018 23:09:09.338 INFO [http-nio-8080-exec-5] org.apache.catalina.util.LifecycleBase.start The start() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/cat/lion]] after start() had already been called. The second call will be ignored.
[4] C:\apache-tomcat-8.5.20\conf\Catalina\localhost\catlion.xml

这是部署应用程序时创建的Tomcat文件:

<?xml version="1.0" encoding="UTF-8"?>
<Context copyXML="true" docBase="D:\NB82\cat_tiger\build\web" path="/cat/lion"/>
更新日期:2018年9月6日:

忽略上面给出的答案!尽管这种方法碰巧适用于我的配置,但Tomcat文档中明确禁止这种方法

具体来说,不应在应用程序META-INF目录中的context.xml文件的内部指定路径。从上下文容器的中的路径描述:

只有在中静态定义上下文时,才能使用此属性 xml。在所有其他情况下,将从 用于.xml上下文文件或docBase的文件名

即使在server.xml中静态定义上下文,该属性 除非docBase不位于 主机的appBase或deployOnStartup和autoDeploy都为false。如果 如果不遵守此规则,可能会导致双重部署


这对我有用。你能用以下信息更新你的帖子而不是发表评论吗:[1]你正在使用的Tomcat版本。[2] 发布部署时在Tomcat的catalina日志中看到的内容。我看到了:部署配置描述符[C:\apache-tomcat-8.5.20\conf\Catalina\localhost\catlion.xml]您看到了类似的情况吗?[3] 请详细说明您是如何将应用程序部署到Tomcat的:手动还是通过IDE,您是在停止Tomcat,复制了哪些文件,等等……我刚刚注意到您的标题中有Tomcat版本。你能添加一个tomcat8.5标记吗?谢谢你的详细回答,很遗憾,我仍然无法让它与应用程序的context.xml文件一起工作。目前,我求助于在server.xml中手动添加上下文元素:D@GrizzLee好吧,我不明白为什么它不适合你。但是您知道不鼓励直接更新server.xml,对吗?这很好,可以启动并运行,但在NetBeans中使用它仍然是值得的,它对我来说绝对有效。您可以尝试的另一个简单更改是将docBase中的绝对路径放在context.xml中。@grizzle我刚刚阅读了,并相应地更新了我的答案。我们试图做的事情是无效的,即使它对我有效,并且将server.xml放在您正在做的事情中是合适的。很抱歉响应太晚,是的,这就是我最终要做的。令人困惑的是,文档如何说它是在每个应用程序中都有一个context.xml的选项,但后来又说我们只能更改server.xml中的路径。。。谢谢你的帮助!
05-Sep-2018 23:09:09.321 INFO [http-nio-8080-exec-6] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying configuration descriptor [C:\apache-tomcat-8.5.20\conf\Catalina\localhost\cat#lion.xml]
05-Sep-2018 23:09:09.334 INFO [http-nio-8080-exec-6] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor [C:\apache-tomcat-8.5.20\conf\Catalina\localhost\cat#lion.xml] has finished in [13] ms
05-Sep-2018 23:09:09.338 INFO [http-nio-8080-exec-5] org.apache.catalina.util.LifecycleBase.start The start() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/cat/lion]] after start() had already been called. The second call will be ignored.
<?xml version="1.0" encoding="UTF-8"?>
<Context copyXML="true" docBase="D:\NB82\cat_tiger\build\web" path="/cat/lion"/>
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
    <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
    <GlobalNamingResources>
        <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
    </GlobalNamingResources>
    <Service name="Catalina">
        <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" relaxedQueryChars="[]|{}^+\`&quot;&lt;&gt;"/>
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
        <Engine defaultHost="localhost" name="Catalina">
            <Realm className="org.apache.catalina.realm.LockOutRealm">
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
            </Realm>
            <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>
                <Context docBase="C:\apache-tomcat-8.5.20\wtpwebapps\PlusServlet" path="/PlusServlet" reloadable="true" source="org.eclipse.jst.jee.server:PlusServlet"/>
            </Host>
        </Engine>
    </Service>
</Server>