我有一个项目,用作许多不同的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文件,但过滤器永远不会应用于任何请求。是否可以按照我设置的方式运行测试范围应用程序?我还能错过什么?
答案 0 :(得分:1)
如果服务器启动,没有错误,那么过滤器就在那里。
也许您可以将日志记录添加到过滤器init()
或doFilter()
以验证其实际运行。
此外,如果您使用的是javax.websocket
,那么这些HTTP / 1.1 WebSocket升级请求将无法过滤。