To exand a little more, in MetaMatrix we supported source calls that returned xml through:
-doc literal/doc literal wrapped
-post with dynamic xml document as the content
-get with a single parameter / dynamic xml document value
-get with dynamic parameter values
All of the consumption is at the message level, there is no expectation that generated object models, or in many cases even wsdls are available at runtime. There was also a variety of security (predominately basic auth) and ws-* options supported depending up the actual call.
Ideally all transport and environmentally dependent information would be held externally to the Teiid configuration. Utilizing ESB functionality (as opposed to, or in addition to) standard AS is fine too. Out of the box though ESB does not support the latter 4 HTTP invocation modes, since it expects http routers to have their query strings pre-configured.
Ramesh Reddy wrote:
In Teiid project, we provide "connectors" that consume XML based data from variety of sources including "web-services" for data integration purposes. Previously, Teiid was running in its own VM, so we provided custom web service client code using the JAX-WS "Dispatch" interface and Axis2's Call interface to invoke the web-service calls along with Teiid's own configuration.
In 7.0 release of Teiid, we are working towards integrating the Teiid into JBoss AS and re-evaluating our data consumption model. In this environment, we feel it is probably verbose for us to provide yet another way to configure web-service client. We want to use any predefined methods that are in work through JBossWS project.
The requirements are
- Should be able to invoke Doclitral/wrapped service
- Shoud be able to invoke a JAX-RPC based service
- REST support would be great
We want users to define a web-service client using some configuration in the AS, then when the user supplies the bound service name to the Teiid, Teiid should be dynamically able to invoke the call on the service and grab results. Dispatch is perfect, but all examples show them how to use in the code, not through configuration. We are willing to extend any technique to fit our needs. Any advise for us?
JBossWS implements JAX-WS API, hence that's what you should be using. Speaking of client side, yes dispatch is probably the solution that gives you better flexibility, as you basically send the xml message you want. Besides that, there're jbossws specific configurations for advanced things like ws-security, mtom, ... you should refer to the documentation for that (http://community.jboss.org/wiki/JBossWS)
I might be missing the real point here, but if you're looking for "predefined", "smart", "different" ways for defining a client, you might want to look at what JBoss ESB does. Also JBoss Wise might be interesting to you, given its facilities for simplified jaxws client programming.
DocLit vs Wrapped is not a problem at all, supported by JBossWS implementation.
JAX-RPC is implemented by JBossWS-Native and available with CXF and Metro based stack starting from AS 6 M3.
REST is out of scope for JBossWS, you should refer to RestEasy project.