I have a multithreaded app that is issuing SOAP requests via AXIS. It seems that if thread 1 sets a http.proxyHost AxisProperty then it's visible to thread 2 when he calls AxisProperties.getProperty(). (Because AxisProperties is tied to the current ClassLoader?).
The problem I have is that I would like to have these multiple http requests on different threads potentially target different (or no) proxy hosts, ie, each thread gets its own AxisProperties. To complicate things there seems to be an additional layer involved which is that down in the DefaultSocketFactory.create() logic during the "writeToSocket" there is a call to TransportClientPropertiesFactory.create("http") which returns a cached properties object, but I *think* all that he is doing is making calls to AxisProperties.getProperty(). Anyone have a recommendation for how to go about this? Thoughts occurring to me are to replace the socket factory class with my own (with AxisProperties.setProperty("axis.socketFactory",.. )?) and use ThreadLocal to get the proxy values down to that level from my app code, and avoid the TransportClientProperties cached object. But that seems a little inelegant. Anyone any ideas? -gr