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

Java 如何为远程JBoss 7容器配置arquillian,java,ant,jboss7.x,integration-testing,jboss-arquillian,Java,Ant,Jboss7.x,Integration Testing,Jboss Arquillian,详细信息: Ant Build(带有maven扩展,这是我公司的一个解决方案 无法更改) JBoss7 容器将独立启动 设置: 我有一个测试如下: @RunWith(Arquillian.class) public class ArquillianArqTest { @Deployment @TargetsContainer("jbossas_remote") public static WebArchive create() { return Shrink

详细信息:

  • Ant Build(带有maven扩展,这是我公司的一个解决方案 无法更改)
  • JBoss7
  • 容器将独立启动
设置:

我有一个测试如下:

@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);
    }

}
<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>
我有一个arquillian.xml,如下所示:

@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);
    }

}
<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>

遥远的
jnp://127.0.0.1:15090
令我惊讶的是,如果我尝试使用物业管理地址,arquillian会干脆忽略它。其中,如果我使用providerUrl,它将尝试连接到定义的主机:端口。 =>这怎么可能?它是否应该尝试使用JBoss7的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:无法获取到的连接 以下任意URL:127.0.0.1:15090,发现失败,错误为: javax.naming.CommunicationException:接收超时[根异常] 是java.net.SocketTimeoutException:Receive超时][根异常 is javax.naming.CommunicationException:无法连接到服务器 127.0.0.1:15090[根异常为javax.naming.ServiceUnavailableException:无法连接到服务器

=>我的问题是上面列出的正确管理端口是什么

更新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:无效的流头:0000000 c]] 位于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:未能 从服务器localhost:15199检索存根[根异常为 java.io.StreamCorruptedException:位于的流头无效:0000000 c] org.jnp.interfaces.NamingContext.getServer(NamingContext.java:268)位于 org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1533) …66更多原因:java.io.StreamCorruptedException:无效 流头:0000000 c


这是不是意味着我可能会混合使用不同版本的库?

看起来您将JBoss作为6的远程容器引用。您应该将JBoss作为7引用。
org.JBoss.arquillian.container.jbossas.remote\u 6

看起来您将JBoss作为6的远程容器引用。您应该将JBoss作为7引用。
org.JBoss.arquillian.container.jbossas.remote_6

看起来您将JBoss引用为6的远程容器。您应该将JBoss引用为7。
org.JBoss.arquillian.container.jbossas.remote_6
看起来您将JBoss引用为6的远程容器。您应该将JBoss引用为7。
org.JBoss.arquillian.container.jbossas、 remote_6

这就是原因!谢谢你,约翰!这就是原因!谢谢你,约翰!这就是原因!谢谢你,约翰!这就是原因!谢谢你,约翰!