细节:
Ant Build(带有maven扩展,这是我公司的解决方案
不能改变)
JBoss 7
容器将独立启动
设定:
我的测试如下:
@RunWith(Arquillian.class)
public class ArquillianArqTest {
@Deployment @TargetsContainer("jbossas_remote")
public static WebArchive create() {
return ShrinkWrap.create(WebArchive.class);
}
@Test
public void testMyDummy() {
Assert.assertTrue(Boolean.TRUE);
}
}
我有一个arquillian.xml如下:
<protocol type="jmx-as7">
<property name="executionType">REMOTE</property>
</protocol>
<configuration>
<property name="providerUrl">jnp://127.0.0.1:15090</property>
<!--
<property name="managementAddress">TEST</property>
<property name="managementPort">TEST2</property>
-->
</configuration>
</container>
让我惊讶的是,如果我尝试使用属性managementAddress arquillian会完全忽略它。好像我使用providerUrl一样,它将尝试连接到定义的host:port。
=>这怎么可能?它不应该尝试对JBoss 7使用managementAddress吗?
问题:
arquillian.xml似乎已被拾取,@ TargetsContainer似乎也已生效。但是,当我尝试运行测试时,没有任何反应。我的意思是部署没有发生,只是挂在那里。我现在不确定我是否使用正确的管理端口。请查看conf / standalone-dev.xml的摘录:
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<any-address/>
</interface>
<interface name="unsecure">
<inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-native" interface="management" port="15199"/>
<socket-binding name="management-http" interface="management" port="15190"/>
<socket-binding name="management-https" interface="management" port="15143"/>
<socket-binding name="ajp" port="15009"/>
<socket-binding name="http" port="15080"/>
<socket-binding name="https" port="15043"/>
<socket-binding name="jacorb" interface="unsecure" port="15028"/>
<socket-binding name="jacorb-ssl" interface="unsecure" port="15029"/>
<socket-binding name="messaging" port="15045"/>
<socket-binding name="messaging-throughput" port="15055"/>
<socket-binding name="remoting" port="15047"/>
<socket-binding name="txn-recovery-environment" port="15012"/>
<socket-binding name="txn-status-manager" port="15013"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
错误:
org.jboss.arquillian.container.spi.client.container.LifecycleException:
无法连接到容器...原因:
javax.naming.CommunicationException:无法获得与的连接
这些网址中的任何一个:127.0.0.1:15090,发现失败并显示错误:
javax.naming.CommunicationException:接收超时[根异常
是java.net.SocketTimeoutException:接收超时] [根异常
是javax.naming.CommunicationException:无法连接到服务器
127.0.0.1:15090 [根本异常是javax.naming.ServiceUnavailableException:无法连接到服务器
=>我的问题是上面列出的正确的管理端口是什么?
更新1月31日星期五4:10 PM
啊哈,我认为15199端口是正确的。我没有注意到我收到以下错误:
引起原因:javax.naming.CommunicationException:无法获取
连接到以下任何URL:localhost:15199,发现失败
错误:javax.naming.CommunicationException:接收超时
[根本异常是java.net.SocketTimeoutException:接收超时]
[根本异常是javax.naming.CommunicationException:无法
从服务器本地主机检索存根:15199 [根本异常是
java.io.StreamCorruptedException:无效的流头:0000000C]]
在org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1562)
在org.jnp.interfaces.NamingContext.lookup(NamingContext.java:634)
在org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
在javax.naming.InitialContext.lookup(InitialContext.java:392)处
org.jboss.arquillian.container.jbossas.remote_6.JBossASRemoteContainer.initDeploymentManager(JBossASRemoteContainer.java:204)
在
org.jboss.arquillian.container.jbossas.remote_6.JBossASRemoteContainer.start(JBossASRemoteContainer.java:87)
... 61更多原因:javax.naming.CommunicationException:失败
从服务器本地主机检索存根:15199 [根本异常是
java.io.StreamCorruptedException:无效的流标头:0000000C]在
org.jnp.interfaces.NamingContext.getServer(NamingContext.java:268)在
org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1533)
... 66更多原因:java.io.StreamCorruptedException:无效
流头:0000000C
这可能意味着我可能会混合使用不同版本的库吗?
最佳答案
您似乎正在引用JBoss AS 6的远程容器。您应该参考JBoss AS7。org.jboss.arquillian.container.jbossas.remote_6