在web.xml中使用来自测试范围的过滤器

时间:2014-10-06 09:46:12

标签: maven jetty maven-jetty-plugin

我有一个项目,用作许多不同的webapps的基础。我正在尝试使用jetty-maven插件在“测试”模式下运行它。

该项目是一个多模块项目。 Filter位于另一个模块中,该模块是我尝试运行的模块的依赖项,如下所示:

<dependency>
    <groupId>my.example.test</groupId>
    <artifactId>test</artifactId>
    <version>X.X.X</version>
    <scope>test</scope>
</dependency>

然后将该依赖项中的过滤器类添加为web.xml中的过滤器:

<filter>
    <filter-name>test</filter-name>
    <filter-class>my.example.test.test.TestFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>test</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

最后,通过调用jetty-maven插件(mvn jetty:run-forked)启动项目,该插件设置如下:

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>9.2.2.v20140723</version>
    <configuration>
        <webApp>
            <contextPath>/test</contextPath>
            <descriptor>src/test/webapp/WEB-INF/web.xml</descriptor>
        </webApp>
        <useTestScope>true</useTestScope>
        <jvmArgs>some arguments</jvmArgs>
        <jettyXml>jetty.xml,jetty-ssl.xml,jetty-https.xml</jettyXml>
        <stopKey>stopJetty</stopKey>
        <stopPort>12345</stopPort>
    </configuration>
</plugin>

项目运行并显示index.html文件,但过滤器永远不会应用于任何请求。是否可以按照我设置的方式运行测试范围应用程序?我还能错过什么?

1 个答案:

答案 0 :(得分:1)

如果服务器启动,没有错误,那么过滤器就在那里。

也许您可以将日志记录添加到过滤器init()doFilter()以验证其实际运行。

此外,如果您使用的是javax.websocket,那么这些HTTP / 1.1 WebSocket升级请求将无法过滤。