[Design of JBoss ESB] - Re: SOAPProxy Enhancements
by dward
"ammppp" wrote : One other request related to this area - and I think HttpRouter already supports it (so SoapProxy probably does as well), though I don't think it is documented.
| ...
| In this case, it would be nice if the SoapProxy could send a message and store back a response in some ESB location other than the default message body because the default message body is storing the main ESB service message that is going to be augmented.
| ...
This is current functionality. SOAPProxy uses SOAPProxyTransports per endpoint, the HttpSOAPProxyTransport wraps HttpRouter (setting sensible defaults - minus Authorization ;) ), and HttpRouter uses MessagePayloadProxy to store the payload in the Message.
If you look at MessagePayloadProxy.java, you'll see:
public MessagePayloadProxy(ConfigTree config) {
| AssertArgument.isNotNull(config, "config");
| setDataLocations(new String[] {config.getAttribute(GET_PAYLOAD_LOCATION, Body.DEFAULT_LOCATION)},
| new String[] {config.getAttribute(SET_PAYLOAD_LOCATION, Body.DEFAULT_LOCATION)});
| }
those constants are:
GET_PAYLOAD_LOCATION = "get-payload-location"
| SET_PAYLOAD_LOCATION = "set-payload-location"
| Body.DEFAULT_LOCATION = "org.jboss.soa.esb.message.defaultEntry"
So, all you should have to do is specify:
<action name="..." class="...SOAPProxy">
| <property name="get-payload-location" value="..."/>
| <property name="set-payload-location" value="..."/>
| </action>
Make sense? Some of the actions document these, some don't. I thought this was somewhere more global in the documentation also, though...
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4245643#4245643
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4245643
16 years, 8 months
[Design of JBoss ESB] - Re: SOAPProxy Enhancements
by ammppp
One other request related to this area - and I think HttpRouter already supports it (so SoapProxy probably does as well), though I don't think it is documented.
In some cases, SoapProxy may be used within the ESB action chain for more than just serving as THE internal endpoint for the ESB service.
For example, consider a case in order for the ESB to transform the incoming client request to the request needed by the endpoint WS, the ESB needs to get additional information from a different auxiliary web service (maybe to get defaults, maybe to check authorization, maybe to check system load, maybe something else). In this case, the client sends request to the ESB, the ESB invokes a check authorization web service or get defaults web service, augments the original client's message and forwards to the internal WS endpoint.
In this case, it would be nice if the SoapProxy could send a message and store back a response in some ESB location other than the default message body because the default message body is storing the main ESB service message that is going to be augmented.
One could write some custom actions to move ESB message parameters around before/after invoking the auxiliary web service, but would be nice if the SoapProxy could just specify that message to be sent is coming from a different location than the default message body and the auxillery SoapProxy response could be stored in a different location than the default message body. Probably wouldn't want the HTTP parameters and such to be set on the ESB message default locations either since it's not the "real" service being invoked.
Hope that makes sense.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4245611#4245611
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4245611
16 years, 8 months
[Design of JBoss ESB] - Re: SOAPProxy Enhancements
by ammppp
One customer requirement we've had related to this is to be able to dynamically provide the SoapProxy endpoint. Essentially, this would allow SoapProxy to be used as a load balancer. Here are two specific needs I've seen:
1.) Client is exposing a web service via the ESB that has 400 internal endpoints that the ESB can route to. Client is storing the endpoints in a registry and each endpoint has an associated "available" flag. Client wants the WS request to come to the ESB and then have the ESB route it (after potential authentication, authorization, transformation, auditing, etc.) to one of the "available" endpoints - where the list of "available" endpoints is not known when the ESB deployment is done (so can't be listed in jboss-esb.xml).
2.) Client is exposing a web service via the ESB that has 100 internal endpoints that the ESB can route to. Client is using JON, JMX, or some other mechanism to determine average response time of each internal endpoint and wants requests routed to less busy (defined by low response time) endpoints.
I don't think the implementation of this has to be too complicated - don't think we necessarily need to make SoapProxy a complex load balancer. But, if SoapProxy could accept an endpoint that is passed into it as a parameter on the ESB message, that would allow clients to write a preceding action that used whatever mechanism they desired to determine where that particular message should be routed to by storing the desired endpoint in the ESB message prior to the SoapProxy action being executed.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4245605#4245605
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4245605
16 years, 8 months