如何为远程JBoss 7容器配置arquillian

时间:2014-01-31 13:16:59

标签: java ant jboss7.x integration-testing jboss-arquillian

详细信息:

  • 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。 =&GT;这怎么可能?它不应该尝试将管理地址用于JBoss 7吗?

问题:

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:接收超时[Root exception   是java.net.SocketTimeoutException:接收超时] [Root exception   是javax.naming.CommunicationException:无法连接到服务器   127.0.0.1:15090 [根异常是javax.naming.ServiceUnavailableException:无法连接到服务器

=&GT;我的问题是上面列出的正确的管理端口是什么?

1月31日星期五下午4:10更新

啊哈,我认为15199端口是正确的。我没有注意到我收到以下错误:

  

引起:javax.naming.CommunicationException:无法获取   连接到以下任何URL:localhost:15199并且发现失败   错误:javax.naming.CommunicationException:接收超时   [根异常是java.net.SocketTimeoutException:接收超时]   [根异常是javax.naming.CommunicationException:失败   从服务器localhost检索存根: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)at   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:失败   从服务器localhost检索存根:15199 [根异常是   java.io.StreamCorruptedException:无效的流标题:0000000C] at   org.jnp.interfaces.NamingContext.getServer(NamingContext.java:268)at at   org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1533)     ... 66更多引起:java.io.StreamCorruptedException:无效   流标题:0000000C

这可能意味着我可能混合版本的库吗?

1 个答案:

答案 0 :(得分:3)

看起来你正在引用JBoss AS 6的远程容器。您应该参考JBoss AS 7. org.jboss.arquillian.container.jbossas.remote_6