簡體   English   中英

如何在tomcat或jetty下更改Java webapp'WEB-INF路徑'約定

[英]How to change the Java webapp 'WEB-INF path' convention under tomcat or jetty

在Java Webapp下,

我想將/ WEB-INF / lib設置為D:/ somepath / lib

/ WEB-INF / classes到E:/ somepath / classes

web.xml到F:/somepath/config.xml

如何在tomcat或jetty下配置這些來改變約定?

規范(Java™Servlet規范版本2.3)僅提到標准文件夾:

Web應用程序類加載器必須首先從WEB-INF / classes目錄加載類,然后從WEB-INF / lib目錄中的庫JAR加載類。

使用Tomcat或Jetty,您無法使用“開箱即用”提供的功能:

Tomcat

WebappX - 為部署在單個Tomcat實例中的每個Web應用程序創建一個類加載器。 Web應用程序的/ WEB-INF / classes目錄中的所有解壓縮的類和資源,以及Web應用程序的/ WEB-INF / lib目錄下的JAR文件中的類和資源,都對此Web應用程序可見,但不是到其他人。

碼頭

正常配置是為每個Web上下文(Web應用程序或war文件)提供它自己的類加載器,它具有系統類加載器作為它的父級。 這樣的類加載器層次結構在Java中是正常的,但是servlet規范通過要求以下內容使層次結構復雜化:

WEB-INF / libWEB-INF / classes中包含的優先於父類加載器上的類。 這與java 2類加載器的正常行為相反。

但是,您可以:

  1. 為Jetty添加額外的類路徑
  2. 將目錄添加到Tomcat類路徑

干杯

在Unix系統上,您可以通過設置從預期位置到其他磁盤上的位置的軟鏈接來手動執行此操作。

您提到的兩個應用程序服務器都是開源的,因此您可以編寫自己的版本。 我想實現Web應用程序的類加載器的部分是您必須更改的部分。

但是,如果你必須參與這樣的詭計,你應該懷疑你早些時候做出了錯誤的決定。 我認為沒有理由去做你想做的事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM