天天看点

项目中tomcat的一些问题

springboot使用8080直接访问项目

部署到项目时是8080/项目名

导致使用相对路径有些jsp里的css找不到路径

修改tomcat配置文件来实现直接访问

server.xml

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!--
 <Context path="/" docBase="apply-service" reloadable="true" />
 <Context path="/" docBase="E:/apache-tomcat-7.0.77/webapps/apply-service" debug="0" reloadable="true" crossContext="true"/>
		Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
		
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>
		<Context path="/apply-service" docBase="apply-service" debug="0" reloadable="true" crossContext="true"/>
      </Host>
	  
           

添加

<Context path="" docBase="apply-service" debug="0" reloadable="true" crossContext="true"/>
           
然后tomcat启动时加载了两遍项目
           
可以修改path
           
<Context path="/apply-service" docBase="apply-service" debug="0" reloadable="true" crossContext="true"/>
           
tomcat 设置内存大小
在echo Using CATALINA_BASE:   "%CATALINA_BASE%"上面添加如下即可
           
set JAVA_OPTS=-Xms1024m -Xmx4096m -XX:PermSize=128m -XX:MaxPermSize=256m

           
加载两遍原因分析以及解决
           
  • appBase与docBase区别 appBase是指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录.如果没有此项,默认为<CATALINA_HOME>/webapps。 docBase是指定Web应用的文件路径.可以给定绝对路径,也可以给定相对于Host的appBase属性的相对路径. 如果Web应用采用开放目录结构,那就指定Web应用的根目录;如果Web应用是个WAR文件,那就指定WAR文件的路径。
  • tomcat配置文件配置以下参数时 <Host name="localhost" appBase="webapps"             unpackWARs="true" autoDeploy="true"               xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="D:/apache-tomcat-7.0.53/webapps/Test" debug="0" reloadable="true" />   </Host> 每次启动tomcat,项目会出现被加载两次的问题,配置文件如下图所示:
    项目中tomcat的一些问题
  • 出现上述问题的原因是tomcat加载玩appBase="webapps"之后又去加载docBase,因此造成加载两次项目的问题,修改path参数path="\Test"(项目名称),配置文件内容是 <Host name="localhost" appBase="D:/apache-tomcat-7.0.53"             unpackWARs="true" autoDeploy="true"               xmlValidation="false" xmlNamespaceAware="false">  <Context path="\Test" docBase="D:/apache-tomcat-7.0.53/webapps/Test" debug="0" reloadable="true" />  配置文件图显示如下:
    项目中tomcat的一些问题
  • 如果不想修改path="Test"的参数,那么可以修改appBase="webapps"的参数。这样的方式也可以解决当前多次加载问题;appBase的参数指到其他文件目录不能出现在tomcat的webapps目录下,这样也可以访问根目录不用敲项目名称。配置文件内容是 <Host name="localhost" appBase="D:/apache-tomcat-7.0.53"             unpackWARs="true" autoDeploy="true"               xmlValidation="false" xmlNamespaceAware="false">  <Context path="" docBase="D:/apache-tomcat-7.0.53/webapps/Test" debug="0" reloadable="true" />   </Host> 配置文件内容图显示:
    项目中tomcat的一些问题
  • 如果项目不是在MyEclipse中启动而是在linux操作系统中启动,可以把项目搬到其他目录中,前提是不能在webapps目录下,appBase="webapps"参数可有可无,配置文件内容是 <Host name="localhost" appBase="webapps"             unpackWARs="true" autoDeploy="true"             xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="D:/apache-tomcat-7.0.53/Test" debug="0" reloadable="true" />   </Host> 配置文件内容图显示:
    项目中tomcat的一些问题