编译RESTEasy并在Wildfly的Arquillian容器里调试

目前Arquillian对Wildfy的支持还不是特别完善。Arquillian对每一种容器的每一个版本都要有特别的支持,所以维护起来比较困难。Arquillian的Wildfly容器在这里:

https://github.com/wildfly/wildfly-arquillian

Arquillian对容器的支持有三种模式:

IntelliJ支持这三种模式:

但需要注意的是,并不是对所有容器的所有版本都支持,因为Arquillian自身目前也不是支持所有容器的所有版本。

Managed模式是比较常用的,并且需要你在pom.xml里面自己配置好。目前针对Wildfly的配置比较复杂,主要是各组件的版本依赖关系比较复杂。最好是使用Arquillian提供的样例项目,在此基础上面进行修改:

https://github.com/arquillian/arquillian-examples

注意managed mode需要你自己的项目里有一个Arquillian配置文件:

这个文件要放在resources目录里。

RESTEasy自己的integreation-tests使用了Arquillian,并做了大量配置。

如果要手动重新执行integration-tests,需要首先重新编译项目修改的部分,然后编译项目里的jboss-modules项目:

注意生成的打包zip文件,这个是Wildfly的modules。在integration-tests里面,会在managed的Wildfly服务器里自动展开这个module:

上面是integration-testpom.xml文件。

这样,针对测试执行mvn install的时候,就会更新Wildfly里面的resteasy module了:

如果需要remote debug这个managed server,使用wildfly的--debug启动命令:

$ ./standalone.sh --debug -Dresteasy.server.tracing.type=ALL -Dresteasy.server.tracing.threshold=VERBOSE

此外Maven也支持远程调试:

$ mvn -q surefire:test -Dmaven.surefire.debug -Dtest=...

以上是对工作的简单记录。