编译RESTEasy并在Wildfly的Arquillian容器里调试
目前Arquillian对Wildfy的支持还不是特别完善。Arquillian对每一种容器的每一个版本都要有特别的支持,所以维护起来比较困难。Arquillian的Wildfly容器在这里:
https://github.com/wildfly/wildfly-arquillian
Arquillian对容器的支持有三种模式:
- embedded
- managed
- remote
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-test
的pom.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=...
以上是对工作的简单记录。