如何在tomcat-maven-plugin中应用上下文配置?

时间:2013-02-03 14:35:28

标签: java tomcat cross-context embedded-tomcat-7

我的目标是使用tomcat-maven-plugin部署多个webapps,并在它们之间进行一些交叉上下文交互。这是为了原型设计目的。所以我创建了两个war模块(core& webapp1),将适当的context.xml放入两者的META-INF文件夹中并配置了tomcat7插件。但是使用默认上下文配置部署了webapps。当部署到常见的Tomcat 7容器中时,一切都很完美 - 我可以访问另一个webbapp的上下文。

我的问题是我做错了什么?或者这可能是嵌入式tomcat的限制(虽然我没有发现差异)?

这是我的context.xml:

<Context crossContext="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

配置tomcat插件(我想知道它是否重要,但谁知道):

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.0</version>
    <configuration>
        <path>/</path>
        <port>8080</port>
        <addContextWarDependencies>true</addContextWarDependencies>
        <addWarDependenciesInClassloader>true</addWarDependenciesInClassloader>        <warSourceDirectory>${project.build.directory}/${project.build.finalName}/</warSourceDirectory>
        <webapps>
            <webapp>
                <groupId>lfcms-several-webapps-proto</groupId>
                <artifactId>webapp1</artifactId>
                <version>1.0-SNAPSHOT</version>
                <type>war</type>
                <asWebapp>true</asWebapp>
            </webapp>
            <webapp>
                <groupId>lfcms-several-webapps-proto</groupId>
                <artifactId>webapp2</artifactId>
                <version>1.0-SNAPSHOT</version>
                <type>war</type>
                <asWebapp>true</asWebapp>
            </webapp>
        </webapps>
    </configuration>
</plugin>

这是核心servlet的代码:

final ServletContext additionalContext = ctx.getContext("/webapp1");
if (additionalContext == null) throw new ServletException("can't get context of /webapp1");
final RequestDispatcher disp = additionalContext.getRequestDispatcher("/webapp1");
disp.include(req, resp);

0 个答案:

没有答案