Sometimes, you encounter old WSDL service definitions, based on RPC style SOAP instead of the newer Document based litteral encoding.
To discover wether a WSDL is using RPC or literal encoding, check the “style” parameter of the “binding” element, such as
<binding name="A_WebServiceBinding" type="tns:A_WebServiceRPC">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
In Java, RPC based SOAP is implemented by JAX-RPC, a quite old API developed for Java 1.4. As it is older than JAXB, it even implements its own XML to Java object mapping.
When SOAP 1.2 was released, the Java platform switched to the newer JAX-WS implementation to support it along with other stuffs, namely HTTP Binding (aka XML over HTTP without SOAP), a new data mapping model and support for WS-I basic profile 1.1
You can read this IBM article for a very good, while concise, description of JAX WS vs JAX RPC.
In NetBeans 7.0, only JAX WS is provided out of the box. When you encounter older WSDL, based on RPC encoding, you must manually install JAX-RPC. However this plugin is not provided in the default plugin repository anymore. You will need to add another plugin repository :
- Select “Tools” in the menu, then “Plugins”, then the “Settings” tab.
- Add a Repository with the name you choose and this URL : http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastStableBuild/artifact/nbbuild/nbms/updates.xml.gz
- Then go back to “Available Plugins” and type RPC in the search box, you should find JAX-RPC in the list of proposed plugins.
- Follow the instructions to download and install the plugins.
Et voilà, you are now ready to create JAX RPC based Java clients by choosing the “File” menu, then “New File” then choose “Web Service Clients” in the “Web Services” section.