我正在使用maven-tomcat-plugin在tomcat6服務器上部署tapestry應用程序。部署過程正常,但現在我需要多次使用不同的路徑進行生產/開發/測試/等。環境,這是通過使用maven配置文件。Tapestry url編碼tomcat的webapp路徑
我已將一個部署配置文件的上下文路徑設置爲:/myapp/latest
。該URL生成用於部署如下所示:
http://example.com:8080/manager/deploy?path=%2Fmyapp%2Flatest&update=true
的Tomcat現在使用的一些約定:哈希跡象得到由斜線代替(#
得到由/
代替)在的.war文件的文件名,來構建應用程序的URL 。戰爭解壓縮到一個文件夾,該文件夾的名稱是沒有.war擴展名的war文件名。
應用程序無法啓動,原因似乎是從日誌很清楚:
Caused by: java.io.FileNotFoundException: /var/lib/tomcat6/webapps/myapp%23latest/WEB-INF/classes/de/myapp/services/AppModule.class (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at org.apache.tapestry5.internal.plastic.PlasticInternalUtils.getStreamForPath(PlasticInternalUtils.java:408)
at org.apache.tapestry5.internal.plastic.PlasticInternalUtils.readBytecodeForClass(PlasticInternalUtils.java:370)
/var/lib/tomcat6/webapps/myapp%23latest/
不存在的路徑,它應該是當然的/var/lib/tomcat6/webapps/myapp#latest/
。 %23
是一個散列符號,所以我想在某個時候它得到了url編碼。我在這個問題上找不到太多的東西,只是一些similiar issue對於涉及雙重哈希的tomcat7,不幸的是沒有任何解決方案。
我可以通過不使用子路徑避免這個問題,但我知道這個應該工作:我已經在灰熊/澤西項目中使用同樣的方法沒有任何問題。
如何正確設置子路徑?有什麼辦法可以告訴應用程序不對路徑進行編碼嗎? tomcat插件在這裏似乎沒有提供太多的選項,那麼有什麼方法可以在像web.xml或context.xml這樣的配置文件中設置路徑嗎?
我相信'在/ var/lib中/ tomcat6中/ webapps /下的myapp%23latest /'不會獲得創建作爲日誌意味着錯誤發生在應用程序的初始化過程中,而不是發現問題。我想知道'getStreamForPath'是否爲該路徑應用了不正確的轉義 –