Geoffrey De Smet
Geoffrey De Smet

Reputation: 27312

Arquillian: use different port(s) for the managed WildFly container than a normal WildFly process

During development, I want to be able to run my arquillian tests while my webapp is open. Both use a different instance of WildFly:

I want to be able to do those 2 actions in parallel, but when I do that, I get:

Address localhost:9990 is already in use.

or

org.jboss.arquillian.container.spi.client.container.LifecycleException: The server is already running! Managed containers do not support connecting to running server instances due to the possible harmful effect of connecting to the wrong server. Please stop server before running or change to another type of container.
To disable this check and allow Arquillian to connect to a running server, set allowConnectingToRunningServer to true in the container configuration

To fix this, I 'd like to change arquillian.xml so the tests are using different ports. How do I do that?

<container qualifier="jboss" default="true">
  <configuration>
    <property name="jbossHome">target/wildfly-${version.org.wildfly}</property>
    <property name="javaVmArguments">-Xms512m -Xmx1024m -XX:MaxPermSize=512m</property>
  </configuration>
</container>

Upvotes: 3

Views: 5520

Answers (3)

susey.angel
susey.angel

Reputation: 11

I got this kind of error too, because arquillian can't use the runnung Web container as it's already running. So, you just put one more property to "arquillian.xml" inside your src/test/resources with this line

<container qualifier="wildfly-managed" default="true">
        <configuration>
            ...
            <!-- this allow connecting to running server -->
            <property name="allowConnectingToRunningServer">true</property>            

        </configuration>
    </container>

Upvotes: 1

Geoffrey De Smet
Geoffrey De Smet

Reputation: 27312

Use WildFly's port offset to offset all ports, not just the management port.

<arquillian xmlns="http://jboss.org/schema/arquillian"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">

  <container qualifier="wildfly-managed" default="true">
    <configuration>
      <property name="jbossHome">target/wildfly-${version.org.wildfly}</property>
      <!-- Port offset allows running the tests while a WildFly server is already running -->
      <property name="javaVmArguments">-Djboss.socket.binding.port-offset=10000 -Xms512m -Xmx1024m -XX:MaxPermSize=512m</property>
      <property name="managementPort">19990</property>
    </configuration>
  </container>

</arquillian>

Mentioning the new managementPort in arquillian.xml is needed, but the mentioning the HTTP port is not needed. Same applies to JMS ports etc I presume.

The config above presumes the default managementPort is 9990, but I 've seen posts where it's 90 or 9999 too (probably older WildFly versions, this is WildFly 9.0.1.Final). The actual managementPort used is shown in WildFly's log during startup.

Upvotes: 2

sibnick
sibnick

Reputation: 4305

I think you should add to javaVmArguments property: -Djboss.socket.binding.port-offset=1000 and add new property <property name="managementPort">10990</property>

<container qualifier="jboss" default="true">
  <configuration>
    <property name="jbossHome">target/wildfly-${version.org.wildfly}</property>
    <property name="managementPort">10990</property>
    <property name="javaVmArguments">-Xms512m -Xmx1024m -XX:MaxPermSize=512m -Djboss.socket.binding.port-offset=1000</property>
  </configuration>
</container>

Upvotes: 4

Related Questions