Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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
如何在Tomcat7.0中设置web应用程序的上下文路径_Tomcat_Tomcat7_Root_Context.xml - Fatal编程技术网

如何在Tomcat7.0中设置web应用程序的上下文路径

如何在Tomcat7.0中设置web应用程序的上下文路径,tomcat,tomcat7,root,context.xml,Tomcat,Tomcat7,Root,Context.xml,我知道我可以将我的webapp(或它的WAR文件)重命名为ROOT,但这是一种可怕的方式,IMHO。现在我查看了tomcat文档&上面写着 不建议将图元直接放置在中 server.xml文件 所以我尝试了另一种方法 单个上下文元素可以显式定义:在 应用程序文件中位于/META-INF/context.xml的单个文件 因此,我用以下代码创建了一个/META-INF/context.xml <?xml version="1.0" encoding="UTF-8"?> <Conte

我知道我可以将我的webapp(或它的WAR文件)重命名为ROOT,但这是一种可怕的方式,IMHO。现在我查看了tomcat文档&上面写着

不建议将图元直接放置在中 server.xml文件

所以我尝试了另一种方法

单个上下文元素可以显式定义:在 应用程序文件中位于/META-INF/context.xml的单个文件

因此,我用以下代码创建了一个
/META-INF/context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>

但在部署后,当我重新启动服务器时,它仍然无法在“/”处加载上下文,它仍然使用
“/”


任何有用的指针。

您可以做的是:

/conf/Catalina/localhost/

此ROOT.xml将覆盖该引擎和主机(Catalina和localhost)tomcat安装的根上下文的默认设置

在ROOT.xml文件中输入以下内容:

<Context 
  docBase="<yourApp>" 
  path="" 
  reloadable="true" 
/>

然后一切都会好起来的

这是唯一对我有效的解决方案。将以下内容添加到
conf/server.xml
文件中的
主机节点中

<Context path="" docBase="yourAppContextName">
 
  <!-- Default set of monitored resources -->
  <WatchedResource>WEB-INF/web.xml</WatchedResource>

</Context>

WEB-INF/WEB.xml

这个小代码对我来说很有用,它使用虚拟主机

<Host name="my.host.name" >
   <Context path="" docBase="/path/to/myapp.war"/>
</Host>


下面的技巧对我很有效

1) 注释/删除tomcat的server.xml文件(conf文件夹内)中的以下配置

2) 删除驻留在tomcat webapps文件夹中的现有根文件夹(如果有)。并将war(例如:test.war)文件重命名为ROOT.war

请记住,将war文件重命名为ROOT.war时,“ROOT”应该是大写的


限制:您只能在一个tomcat实例中部署一个应用程序。

我一个月来一直面临这个问题,将上下文标记放在server.xml中是不安全的,它会影响为所有其他主机部署上下文元素,对于大型应用程序,可能会出现连接错误,例如,您可能会通过名为domain2.com/domain1Folder的文件夹访问其他网站!!还加载了两次数据库会话连接! 另一种方法是放置具有完整路径的上下文标记的ROOT.xml文件,例如:

 <Context path="" docBase="/var/lib/tomcat7/webapps/ROOT" />

在conf/catalina/webappsfoldername中 并将war文件作为ROOT.war部署到webappsfoldername中 并指定主机 这样

 <Host name="domianname"  appBase="webapps2" unpackWARs="true"  autoDeploy="true"  xmlValidation="false" xmlNamespaceAware="false" >

        <Logger className="org.apache.catalina.logger.FileLogger"
               directory="logs"  prefix="localhost_log." suffix=".txt"
          timestamp="true"/>
</Host>

在这种方法中,同样对于同类型的应用程序,用户会话也没有很好的隔离! 如果app1与app2相同,您可以在app1内通过服务器端会话登录后自动登录到app2?! 因此,您必须将用户会话保持在客户端缓存中,而不是使用jsessionid! 我们可以从localhost更改引擎名称来解决此问题。
但是让我们说,与tomcat一起玩比与其他猫一起玩需要更多的时间

最快也是最好的解决方案是在
/conf/Catalina/localhost/ROOT.xml中包含以下内容

<Context 
  docBase="/your_webapp_location_directory" 
  path="" 
  reloadable="true" 
/>
<Context docBase="web" path="/web" reloadable="true" source="org.eclipse.jst.jee.server:web"/>


您的webapp将在http://://

上提供。不建议更新server.xml或ROOT.xml等服务器配置

您可以将context.xml配置文件放在web应用程序META-INF目录下,并包含上下文路径设置。这将覆盖默认服务器设置

i、 e:


转到Tomcat server.xml文件并将路径设置为空


在Tomcat9.0中,我只需在
server.xml

<Context 
  docBase="/your_webapp_location_directory" 
  path="" 
  reloadable="true" 
/>
<Context docBase="web" path="/web" reloadable="true" source="org.eclipse.jst.jee.server:web"/>


Tomcat 8: 经过多次搜索后,这是唯一有效的代码: 在server.xml中

<!-- Set /apple as default path -->
    <Host name="localhost"  appBase="webapps"
         unpackWARs="true" autoDeploy="true">
     <Context path="" docBase="apple">
         <!-- Default set of monitored resources -->
         <WatchedResource>WEB-INF/web.xml</WatchedResource>
     </Context>
    </Host>

WEB-INF/WEB.xml
重新启动Tomcat,确保当您访问127.0.0.1:8080时,它将以127.0.0.1:8080/apple的格式显示内容


我的项目是由netbeans创建的java web应用程序,我在项目配置中设置了上下文路径,没有其他事情,甚至我把apple.war放在了webapps文件夹中。

对我来说,两个答案都有效

  • 在/conf/Catalina/localhost中添加名为ROOT.xml的文件/
  • 
    
  • 在server.xml中添加条目
  • 
    WEB-INF/WEB.xml
    
    注意:当您在上下文下声明docBase时,请忽略主机上的appBase

  • 不过,我更喜欢将我的war名称转换为
    ROOT.war
    ,并将其放在webapps下。因此,现在来自其他战争(ContextPath)的不匹配url请求将进入这场战争。这是处理根(“/**”)上下文路径的更好方法
    第二个选项是(双重)从Webapps文件夹加载wars。此外,它只需要未压缩的war文件夹,这是一个令人头痛的问题。

    在Tomcat 8.X中,在server.xml中的Tomcat主目录/conf/folder下,您可以在
    标记下添加
    标记,如下所示。但您必须重新启动服务器才能生效

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
    
         <Context docBase="${catalina.base}\webapps\<Your App Directory Name>" path="<your app path you wish>" reloadable="true" />
      </Host>
    
    
    
    或者,如果您使用的是Tomcat 7.X,则可以在项目的WEB-INF文件夹中添加context.xml文件。我使用的文件的内容如图所示。这对我来说很好。在这种情况下,您不必重新启动服务器

    <?xml version="1.0" encoding="UTF-8"?>
    
    <Context docBase="${catalina.base}\webapps\<My App Directory Name>" path="<your app path you wish>" reloadable="true" />
    

    最简单、灵活的解决方案如下: 在${Tomcat_home}/config/server.xml内部

    <!-- Set /apple as default path -->
        <Host name="localhost"  appBase="webapps"
             unpackWARs="true" autoDeploy="true">
         <Context path="" docBase="apple">
             <!-- Default set of monitored resources -->
             <WatchedResource>WEB-INF/web.xml</WatchedResource>
         </Context>
        </Host>
    
    更改主机下的autoDeploy=“false”deployOnStartup=“false”元素,如下面的这是必须的。

    <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false" deployOnStartup="false">
    
    
    
    在主体元素下添加下一行

    <Context path="" docBase="ServletInAction.war"  reloadable="true">
                <WatchedResource>WEB-INF/web.xml</WatchedResource>
            </Context>
    
    
    WEB-INF/WEB.xml
    

    通过上述方法,我们可以在webapps下添加具有不同上下文路径名的应用程序。

    这是否适用于常规webapps文件夹中的其他WAR?查看docs docbase,路径是/to/yourApp,路径必须为“”(因此为空字符串),这意味着根上下文要解决双重部署问题,您还可以同时设置这两个路径“部署启动”和“自动部署”f
    <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false" deployOnStartup="false">
    
    <Context path="" docBase="ServletInAction.war"  reloadable="true">
                <WatchedResource>WEB-INF/web.xml</WatchedResource>
            </Context>