Please remember that with web services the client and the server
are fundamentally disconnected. There are server side issues
and client side issues - DO NOT MIX the two.
In other words, if you setup an ejb3 endpoint using jsr181 any client
that adhers to the abstract contract in wsdl can talk to that endpoint.
If you want to implement a WS client using JBossWS (to what server
impl it talks to does not matter) you use wstools to generate the
WS4EE required artifacts from wsdl. The artifacts are
- Service Endpoint Interface (SEI)
- [User Types]
- [User Exceptions]
- jaxrpc-mapping.xml
The standard JAXRPC ServiceFactory does not have an API that
takes jaxrpc-mapping.xml into account. That is a flaw in the spec that
has been fixed with JSR109 preconfigured stubs that can be obtained
from JNDI in a J2EE-1.4 compliant appserver. Alternatively you use
the JBossWS propriatary API to point to the
CLIENT SIDE REQUIRED jaxrpc-mapping.xml.
Please make sure, you understand J2EE application clients i.e. the
benefit of runing your client app on a tiny jboss instance.
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBWSFAQClientModel
Most folks that have issues with WS clients do not understand the
WS4EE client side programming model or don't realize that jaxrpc-mapping.xml is needed to bridge the gap between
wsdl and java.
Other stacks do java reflection (i.e. guesswork that ignors the
abstract contract) or have another propriatary way to bridge that gap.