# FAQ

## EJB clustering related questions

### Does CMIv2 work with JOnAS 4 ?

No, CMIv2 relies on Carol V3.x and is not compliant with JOnAS 4. By the way CMIv2 requires JDK5 and higher.

### Does EJB clustering with CMI require a change in the client application ?

No, new CMI (v2) is completely transparent for the client and doesn't require a pre-compilation step which is different from CMI v1 in JOnAS 4.

### Does EJB clustering with CMI require a change in the server application ?

EJB application doesn't require any change provided that the application design is clustering safe. Typically static field must not be used. If no clustering annotation are set into the POJO, the specific deployment descriptor can be added for describing the load-balancing logic.

## JGroups related questions

### About the network interface

To select the right network interface, set your IP with the attribute bind_addr of the element UDP into the JGroups configuration files:

    <config>
        <UDP bind_addr="192.168.0.1"
        ...
        />
    ...
    </config>

### About JGroups 2.2.9.x & IPv6

JGroups 2.2 doesn't support IPv6. It must be disabled in the JVM by setting the `java.net.preferIPv4Stack` to `true`. JGroups 2.2 is used both in the `cmi` and `discovery` services in JOnAS 4. JOnAS 5 embeds JGroups 2.6 that supports quite well IPv6.

In JOnAS 4, when IPv6 is not disabled, the following exceptions may appear:

    ...
    TP.down : failed sending message with java.io.IOException: Invalid argument
    ...
    org.jgroups.ChannelException: failed to start protocol stack

Parameter setting example with linux/unix system:

    export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"

### About JGroups 2.2.9.x & JDK6

JGroups 2.2 doesn't support JDK6. The problem is due to the JDK and is documented by Sun here. JGroups is used both in the `cmi`, `ha` and `discovery` services in JOnAS 4.

In a configuration JOnAS 4/JDK6, the following exceptions may appear:

    ...
    org.jgroups.ChannelException: failed loading class
    ...

The workaround consists in setting the `sun.lang.ClassLoader.allowArraySyntax` jvm property to `true`. Example of such setting in a linux system:

    export JAVA_OPTS="$JAVA_OPTS -Dsun.lang.ClassLoader.allowArraySyntax=true"

## Management related questions

### Does JOnAS provide a way to start remotely an instance.

Yes, JOnAS provides a cluster daemon which acts as a JOnAS instances bootstrap. The cluster daemon exposes a JMX remote interface enabling the remote control.