[
https://jira.jboss.org/jira/browse/JBESB-3021?page=com.atlassian.jira.plu...
]
David Ward closed JBESB-3021.
-----------------------------
Resolution: Done
My initial guess was close. There was nothing wrong with SOAPProxy. It was static
caching done by HttpClient (used by our HttpRouter/HttpProtocol). I blame HttpClient.
Thank goodness for open source, otherwise I wouldn't have figured out what the heck it
was doing, or how to fix it. Basically, HttpClient's "Protocol" class has a
static map where it caches Protocol instances. Inside a protocol instance is a
SocketFactory. So what was happening was that every time a new HttpRouter is created - IN
THE SAME CLASSLOADER - the SocketFactory would get clobbered. Last one wins. The fix was
to use one of the overloaded methods of executeMethod, where I could pass in an
action-scoped HttpConfiguration with the proper Protocol. I also had to change the
MethodFactories so that they only constructed non-absolute URI's (otherwise
SocketFactory would get clobbered again, believe it or not). This bug would have hit any
use of HttpRouter (not just SOAPProxy) where one configures different
protocol-socket-factory(ies). OMG, what spaghetti code HttpClient 3.0.1 is. I wonder if
4.0.x is any better...
[dward@dwardlinux JBESB_4_7_CP]$ svn commit
product/rosetta/src/org/jboss/soa/esb/http/configurators/HttpProtocol.java
product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java
product/rosetta/src/org/jboss/soa/esb/actions/routing/http/GETHttpMethodFactory.java
product/rosetta/src/org/jboss/soa/esb/actions/routing/http/AbstractHttpMethodFactory.java
product/rosetta/src/org/jboss/soa/esb/actions/routing/http/POSTHttpMethodFactory.java
Adding
product/rosetta/src/org/jboss/soa/esb/actions/routing/http/AbstractHttpMethodFactory.java
Sending
product/rosetta/src/org/jboss/soa/esb/actions/routing/http/GETHttpMethodFactory.java
Sending product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java
Sending
product/rosetta/src/org/jboss/soa/esb/actions/routing/http/POSTHttpMethodFactory.java
Sending product/rosetta/src/org/jboss/soa/esb/http/configurators/HttpProtocol.java
Transmitting file data .....
Committed revision 30590.
SOAPProxies on different services shares configuration
------------------------------------------------------
Key: JBESB-3021
URL:
https://jira.jboss.org/jira/browse/JBESB-3021
Project: JBoss ESB
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Web Services
Affects Versions: 4.7
Environment: ER4
Reporter: Jiri Pechanec
Assignee: David Ward
Priority: Critical
Fix For: 4.7 CP1
Attachments: soapproxy-breaker.zip, two_proxies.log.gz
If a jboss-esb.xml file contains definition of two services and each uses SOAPProxy, then
the configuration is shared between them.
Check the attached example
1) Remove Proxy-breaker service from the config file, deploy and do ant runtest. The
execution is performed correctly and target service is invoked.
2) Enable Proxy-breaker service but disable <http-client-property
name="protocol-socket-factory"... in it, deploy and do ant run test. Although
you are invoking the first service the invocation will fail due to strict SSL setting.
3) Enable Proxy-breaker service and enable <http-client-property
name="protocol-socket-factory"... in it, deploy and do ant run test. The
execution is performed correctly and target service is invoked.
It proves that SOAPProxy settings on Proxy-breaker service DIRECTLY infulennces SOAPProxy
settings of Proxy service.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira