尝试启动Tomcat 7应用程序并了解一些事情:
在Tomcat的早期版本中,Context Descriptor配置的内容通常存储在Tomcat的主配置文件server.xml中,但现在不鼓励这样做(尽管它目前仍然有效)。
上下文描述符的位置是: $ CATALINA_BASE / CONF / [引擎] / [主机名] / [webappname] .XML $ CATALINA_BASE / web应用/ [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>
- &gt;失败:13 / Jun / 2014:17:03:53 -0700]“GET /static/index.html HTTP / 1.1”404 -
- &gt; 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>
- &gt;失败:13 / Jun / 2014:17:03:53 -0700]“GET /static/index.html HTTP / 1.1”404 -
我使用和不使用路径尝试了上面的context.xml,并且定义了docBase,两者都产生相同的404。
我错过了什么?
答案 0 :(得分:2)
您甚至不需要手动定义上下文。如果您希望将应用程序部署在根目录上,只需将战争重命名为ROOT.war并将其放在webapps目录中(删除所有出现的内容)。
Tomcat查看webapps目录(实际上,它可以通过主机上的appBase属性进行更改)来部署war。