试图让Tomcat 7应用程序开始运行并了解一些事情:
-
在早期版本的Tomcat中,Context Descriptor配置的内容通常存储在Tomcat的主配置文件server.xml中,但现在不建议这样做(尽管它目前仍然有效) .
-
上下文描述符的位置是:$ CATALINA_BASE / conf / [enginename] / [hostname] / [webappname] .xml $ CATALINA_BASE / webapps / [webappname] /META-INF/context.xml
所以这是我们的应用程序的布局方式(不可协商):
Tomcat + WAR: /some/dir/MyApp/* some/dir/MyApp/webapps
LOGS: /some/other/dir/logs/MyApp/
在应用程序启动后没有错误,我发出以下请求:
http://foo/static/index.html
当我在$ CATALINA_HOME / conf / server.xml中定义上下文时,一切都很美:
<Host name="localhost" appBase="webapps"
unpackWARs="false" autoDeploy="true">
<Context path="/" docBase=“MyApp.war" />
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="/some/other/dir/logs/MyApp"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
现在,为了避免在server.xml中放置上下文,我尝试了几件事 . 我从server.xml中删除了上下文,然后创建了$ CATALINA_HOME / conf / Catalina / localhost / MyApp.xml文件 .
<Context
docBase=“/some/dir/MyApp/webapps/MyApp.war"
path=""
reloadable="false"
swallowOutput="true"
sendRedirectBody="true"
>
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="localhost_access_log." suffix=".txt"
pattern="common"/>
</Context>
-
FAIL:13 / Jun / 2014:17:03:53 -0700]“GET /static/index.html HTTP / 1.1”404 -
-
MyApp.log:主机appBase中的docBase /some/dir/MyApp/webapps/MyApp.war已被指定,将被忽略
接下来我尝试从server.xml中删除上下文,删除$ CATALINA_HOME / conf / Catalina / localhost / MyApp.xml,但创建$ CATALINA_HOME / conf / context.xml:
<Context>
path = ""
docBase=“MyApp.war"
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
-
FAIL:13 / Jun / 2014:17:03:53 -0700]“GET /static/index.html HTTP / 1.1”404 -
我使用和不使用路径尝试了上面的context.xml,并且使用两者生成相同的404定义了docBase .
我错过了什么?
1 回答
您甚至不需要手动定义上下文 . 如果您希望将应用程序部署在根目录上,只需将您的战争重命名为ROOT.war并将其放在webapps目录中(删除所有出现的内容) .
Tomcat查看webapps目录(实际上,它可以通过主机上的appBase属性进行更改)来部署war .
See tomcat Documentation for more details.