2014-06-14 57 views
0

外背景下試圖獲得一個Tomcat 7應用程序掉在地上,知道一兩件事情:故障定義的server.xml

  1. 在早期版本的Tomcat上下文描述符配置的含量通常存儲在Tomcat的主要配置文件server.xml中,但現在不鼓勵這樣做(雖然它目前仍然有效)。

  2. 爲背景描述符的位置是: $ 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 &quot;%r&quot; %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生成。

我錯過了什麼?

+0

爲什麼你在用上下文路徑瞎搞?爲什麼不讓Tomcat處理它,然後在前面放置一個反向代理(如nginx)。 –

回答

1

您甚至不需要手動定義上下文。如果你想讓你的應用程序部署在根目錄下,只需將你的war重命名爲ROOT.war並將其放入webapps目錄(刪除所有的事件)。

Tomcat查看webapps目錄(實際上,它可以通過主機上的appBase屬性進行更改)來部署war。

See tomcat Documentation for more details.

+0

通過閱讀這些文檔,只是覺得重命名爲ROOT.war並不是一件好事。進行更改後,當點擊'http:// foo/static/index.html'時獲得200,但獲得304s與任何資源在子目錄中,如http:// foo/static/js/bar。js' –

+0

是不是你想要的? 304不是錯誤,tomcat只是說你的瀏覽器自上次訪問它以來沒有更新資源。 –

+0

我如此開除......正在考慮重定向的原因,而不是沒有修改,並且頁面是一個STUBB,所以我點擊周圍,什麼都沒有發生。非常感謝... –