tomcat去掉項目名稱


需求: 
把發布到Tomcat下的web項目,訪問路徑去掉項目名稱 

問題背景: 
以前的.net些的WebService,現在改用java來寫了。已經把wsdl搞的基本一致了,但是由於原webservice發布到iis網站的根目錄了,所以訪問的時候也就沒有虛擬目錄的名字。但是java寫的WebService,放到Tomcat下的時候,默認會帶上項目的名稱。就多了這么一段: 
如原來的wsdl為:http://localhost:8080/SearchReqService.asmx?wsdl 
現在的wsdl為:http://localhost:8080/Interface/SearchReqService.asmx?wsdl 
而且wsdl地址事先約定好了,不能改變,不然就牽扯到第三方改動、 

實現方式及原理: 

方式一: 
原理:Tomcat的默認根目錄是ROOT,實際上ROOT這個項目在實際生產環境是沒有用的,所以我們可以用我們的項目覆蓋ROOT項目 
操作過程: 
1.刪除ROOT下所有文件及文件夾 
2.把我們項目的war包解壓后,項目目錄下的所有文件和子目錄都拷貝到ROOT目錄下即可 
或者有更狠的一招:直接刪掉ROOT目錄,然后把我們的項目打包名稱改成ROOT.war,放到webapps下就行 

方式二: 
原理:Tomcat本身可以配置虛擬目錄。方法就是在Server.xml中<Engine><Host>節點下加入Context信息。如我們可以配置<Context path="/abc" docBase="D:\app\abc" ... />,那我們可以通過地址http://localhost:8080/abc來訪問我們放在D:\app\下面的abc項目。我們可以把這個path="/abc"修改為path=""。意思就是把abc映射到根目錄,訪問路徑就會變成http://localhost:8080/。 
操作過程: 
按照配置虛擬目錄的方式,在<Engine><Host>下添加一個Context節點,具體配置如下: 

Xml代碼   收藏代碼
  1. <Engine name="Catalina" defaultHost="localhost"...>  
  2. ...  
  3.     <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">  
  4.     <Context path="" docBase="Interface" reloadable="true" />  
  5. <!--注:我這里使用的是相對路徑,Interface項目是放在Tomcat的webapps目錄下的,當然也可以改為絕對路徑-->  
  6. ...  
  7.     </Host>  
  8. ...  
  9. </Engine>  


訪問方式就可以用http://localhost:8080/SearchReqService.asmx?wsdl了 
如果用虛擬目錄的方式,地址http://localhost:8080/Interface/SearchReqService.asmx?wsdl也可以訪問。 
同樣的方式,我們可以為path指定不同的路徑,解決訪問路徑區別項目名稱的需要。 


其它,去掉訪問的端口號8080.就是利用了HTTP請求訪問的端口默認是80的方式實現的,iis也一樣。我們只用把Tomcat的HTTP監聽端口號改為80(修改<Connector port="8080" protocol="HTTP/1.1"這里的端口號為80)即可。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM