the targetURL in HTTPSender is shared by multiple threads, in a highly concurrent and multi-threaded environment, and multiple threads modifies the targetURL and the messages endup going to wrong endpoint.
Our customers experienced this problem in production environment and we created a simple test case to reproduce this, just place Thread.sleep(1000) right before calling writeToSocket ( ) and try to send messages from multiple threads to different endpoints. you would notice the messages going to wrong endpoints.
Fix: Remove the targetURL instance variable in HTTPSender.java and make it local to the public void invoke(MessageContext msgContext) throws AxisFault method. I am attaching the fixed HTTPSender.java. I fixed it on top of 1.4 release source. I thought it would benefit others who uses wsif-axis in multi-threaded environment.