繁体   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