2013-02-12 153 views
12

是否可以配置Tomcat,使其在開發過程中在我的'webapp'目錄的單獨位置查找?如何在不重新啓動Tomcat的情況下更改HTML/JS/CSS?

我在一個目錄中有我的git源代碼,而在另一個目錄中安裝了tomcat。我不希望在兩個地方進行更改,或者手動複製文件,或者每次對CSS或Javascript進行簡單更改時重新生成/部署。


編輯 - 2013年2月21日

遺憾的是沒有任何的建議工作,我懷疑這可能是因爲我沒有提供關於如何我有事情奠定了足夠的信息。

我有Tomcat安裝在我的主目錄(我在Mac上)名爲「開發」的目錄中。

/Users/dbrogdon/Development/apache-tomcat-7.0.35 

我在我旁邊有我的git源代碼。

/Users/dbrogdon/Development/myproject 

在myproject的目錄中,我實際的Web文件位於:

/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp 

我編譯時把appname.war到

/Users/dbrogdon/Development/apache-tomcat-7.0.35/webapps 

基礎上更新的信息,在我的conf/server.xmlconf/Catalina/localhost/appname.xml中,我應該提供什麼作爲docBase?

+0

應該是tomcat的默認配置。請看看這個線程http://stackoverflow.com/questions/3942655/getting-tomcat-to-reload-a-web-app-with-a-static-context – carlosavoy 2013-02-21 13:20:47

回答

1

您可以使用本地Apache服務器,並重寫從單獨位置獲取的HTML/CSS/JS /文件。

看到這個問題的一個例子,如何重寫JS文件:HOWTO: rewrite requests for images, css and js to different folders for each application?

現在你可以配置Apache去到Tomcat的Tomcat的網址,但在Apache的配置和CSS/JS/HTML文件執行這些重寫可以完全從另一個文件夾中拾取。

你也許可以使用這個Tomcat過濾器:http://tuckey.org/urlrewrite/,雖然你仍然需要一個Apache web服務器來託管靜態文件,但是你可以使用Tomcat來訪問主要的tomcat URL併爲所有的人添加重定向到你的apache實例靜態文件。這節省了必須使用Apache配置mod_jk或其他東西。

+1

這是解決問題的辦法之一,Apache是​​一個Web服務器,Tomcat是一個Java Web容器。無論如何,您不會在生產環境中將Tomcat用作獨立Web服務器,因此開發人員必須使用Apache + Tomcat。 downvote意味着答案是沒有用的。 – cowls 2013-02-21 21:22:49

+0

我的歉意。我想我誤解了Tomcat的目的。 – 2013-02-21 21:57:12

-2

當在IDE中打開git源代碼時,添加tomcat服務器後,可以配置tomcat的'Runtime Environment'來引用tomcat目錄中的'Runtime Environment'。

+0

但是,如果我不想要運行IDE?我是一名UI開發人員,不會執行任何Java編碼,所以我更願意使用TextMate編輯HTML/CSS/JS。 – 2013-02-12 03:43:43

2

在你的tomcat安裝目錄下的「conf」下,你會發現一個文件server.xml。在該文件中搜索標籤「主機」。你會發現像

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

變化應用平臺到Web應用程序目錄的父文件夾。所以說你的應用程序「myapp」目錄下是說c:\ git \ source,把appBase作爲「c:\ git \ source」

重新啓動你的tomcat。現在你的tomcat看起來 「C:\ git的\源」 爲所有網絡應用中,具有代替部署的的webapps

鏈接到Tomcat的配置描述應用平臺使用 http://tomcat.apache.org/tomcat-7.0-doc/config/host.html

該虛擬主機的應用程序基目錄。這是可能包含部署在此虛擬主機上的web應用程序爲 的目錄的路徑名稱 。 您可以指定絕對路徑名稱, 或相對於$ CATALINA_BASE目錄的路徑名。有關自動識別和部署Web應用程序的更多信息,請參閱 自動應用程序部署。 如果未指定,將使用 默認值webapps將被使用。

+1

@darrell不知道如果評估上述選項?如果你所需要的只是在你的開發環境中的tomcat指向一個不是默認的「webapps」的文件夾,那麼上面的解決方案應該足夠好了。 – Zenil 2013-02-21 02:30:23

+0

OP想要這樣做_without_ restarting tomcat。 – Raad 2013-02-21 15:20:22

+0

@Raad這是一次性設置。基本上告訴tomcat尋找他的開發環境目錄而不是默認的「webapps」目錄。之後,不需要重新啓動,不需要部署或複製。 – Zenil 2013-02-21 18:21:42

2

方法可以做到你在找什麼期待

  • 配置Apache Web服務器提供靜態內容和路由動態內容到Tomcat服務器。這是使用該代理的JSP請求到tomcat但通過這個代理的,JS等

使用完成在worker.properties

<Location *> 
SetHandler jakarta-servlet 
SetEnvIf REQUEST_URI \.(html|png|gif|jpg|css|js)$ no-jk 
</Location> 

這可能不是最好的服務,如圖片的靜態內容MOD JK連接器完成因爲它改變了你的所有部署架構

  • 是Zenil提出的server.xml配置在conf下的解決方案

這個限制將是在你的tomcat中部署的所有應用程序都將從D:/newWebApps提供服務。這可能不符合你的目的,因爲只需要將源代碼庫中的應用程序映射到你的tomcat。

  • 我想下面將給出 情景

更適合你創建一個文件applicationName.xml &限定以下

<?xml version="1.0" encoding="UTF-8"?> 
<Context docBase="D:\newWebApps" path="/js/*" /> 

,並把這個文件放在\conf\Catalina\localhost目錄。將tomcat會選擇這個時自動

現在,您可以通過

http://servername:8080/applicationName/js/anything.js 

訪問此請參閱此http://tomcat.apache.org/tomcat-7.0-doc/config/context.html的更多詳細信息設置的docBase外面的Tomcat默認diretories

您的server.xml
+0

我嘗試了第二次建議創建applicationName.xml。不幸的是,這樣做會導致所有內容都變爲404。 – 2013-02-21 19:56:04

+0

我應該注意到你的答案可能沒有錯。我的實施是。 – 2013-02-21 21:57:42

1

更新和修改「主機「爲你的應用程序有兩個目的:

1)指向您的git源代碼目錄爲tomcat啓動您的應用程序。這將避免必須在兩個地方進行更改或複製更改。

需要更改:更新您的應用程序的「主機」,並將'appBase'設置爲您的git源目錄。

<Host name="localhost" appBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp" 
      unpackWARs="true" autoDeploy="true"> 

2)添加不同的地點供服務您的靜態內容。這將幫助你避免重新啓動Tomcat的每次你改變你的CSS/JS

更改所需:添加上下文的服務你的JS和CSS

<Host name="localhost" appBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp" 
      unpackWARs="true" autoDeploy="true"> 
    <Context docBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp/js/" path="/js/*" /> 
    <Context docBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp/css/" path="/css/*" /> 
</Host> 
+1

經過更新以反映OP提供的新信息。 – MickJ 2013-02-21 20:21:10

1

如果我沒有理解這個問題吧,你只是想Tomcat的webapps/MY_WEBAPP指向您檢出git存儲庫的內部,因此您可以將其修改爲「一次」。假設你只編輯靜態資源,我不認爲tomcat緩存它們,所以你可能會從tomcat的webapps /到你的git文件夾位置創建一個符號鏈接。或者從webapps/x/y的符號鏈接回到你的git等效文件夾(甚至特定的文件)。

我還聽說謠言的tomcat可以「熱插拔」 JSP類和靜態的,所以如果它是相關的:how to enable hot deploy in tomcat

相關問題