Hi Devs,

I was trying to use several axis2 clients in multiple threads and found these problems.

1:

When clients are configured to use a separate transport listener the status of the listener (whether started or not) is kept in the ListenerManager and is checked by the static methods of the ClientUtils class. So this leads to synchronization problems and gives java.net.BindException.
Solution is to synchronize the methods in the ListenerManger and the ClientUtils classes. I can commit the fix for this.

2: NullpointerException at the AddressingOutHandler

java.lang.NullPointerException
    at org.apache.axis2.handlers.addressing.AddressingOutHandler.isAddressingHeaderAlreadyAvailable(AddressingOutHandler.java:407)
    at org.apache.axis2.handlers.addressing.AddressingOutHandler.invoke(AddressingOutHandler.java :130)
    at org.apache.axis2.engine.Phase.invoke(Phase.java:378)
    at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:418)
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:518)
    at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:263)
    at org.apache.axis2.client.ServiceClient.sendReceiveNonBlocking(ServiceClient.java:481)
    at org.apache.axis2.client.ServiceClient.sendReceive (ServiceClient.java:425)
    at userguide.clients.EBLoadClient.run(EBLoadClient.java:130)
java.lang.NullPointerException

The reason for this is we keep addressingNamespaceObject in the handler itself. So with multiple threads it produces undefined behavior.
I think we should give a better fix for this rather than synchronization.

So please have a look.

Thanks,

Jaliya


Reply via email to