use*_*155 3 web.xml servlets modularity java-ee
我有不同的webapps共享web.xml配置的很大一部分.例如,某些servlet的映射方式对于所有应用程序都是相同的,但有些webapps具有自定义servlet,或者其他过滤器或共享托管bean.
每个webapp都是我IDE中的一个不同项目.我想将web.xml的公共部分重构为"通用"项目,并让所有特定于应用程序的web.xml扩展"通用"web.xml.有没有可能这样做?
是的你可以.假设Eclipse(您的问题历史证实您正在使用它),只需创建一个"Web Fragment Project":
并将其与向导中的主项目相关联:
您可以根据需要(重新)在主Web项目的"部署程序集"属性中配置它(或以任何其他方式配置构建,使其最终最终成为/WEB-INF/lib
主Web项目中的JAR ).
它基本上是一个具有以下文件夹结构的Java项目:
CommonWebProject
|-- com.example... (you can put e.g. @WebServlet classes here)
|
|-- META-INF
| |-- resources (you can put shared web resources here)
| | |-- common.css
| | |-- common.js
| | |-- template.jsp
| | :
| |
| |-- beans.xml
| |-- web-fragment.xml
| `-- MANIFEST.MF
:
Run Code Online (Sandbox Code Playgroud)
/META-INF/resources
文件夹中的任何内容都以与WAR的webcontent相同的方式解析(我的Eclipse Luna SR1没有预先/resources
创建文件夹,因此您需要手动创建它).而且,重要的是,WAR中已经具有相同名称的任何资源(包括类!)将具有优于JAR中的资源的加载优先级,因此如果需要,您可以通过这种方式"覆盖"来自WAR的公共JAR资源.
请注意,web-fragment.xml
文件必须完全相同,因此不能web.xml
.IDE应该只为您自动生成一个,但为了完整性,Servlet 3.0兼容的看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<web-fragment
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"
version="3.0"
>
<!-- Put shared web.xml config here. -->
</web-fragment>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1994 次 |
最近记录: |