外背景下試圖獲得一個Tomcat 7應用程序掉在地上,知道一兩件事情:故障定義的server.xml
在早期版本的Tomcat上下文描述符配置的含量通常存儲在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/
應用程序沒有錯誤,我做請求後啓動0
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月/ 6/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,和docBase都使用相同的404生成。
我錯過了什麼?
爲什麼你在用上下文路徑瞎搞?爲什麼不讓Tomcat處理它,然後在前面放置一個反向代理(如nginx)。 –