I was doing a hello world application with JAX-WS from Martin Kalin's JWS - Up and running when I noticed that I had no wsdl in the project, yet it still works.
Do annotations like @Soapbind(Style=Style.RPC) replace the need for having a wsdl?
If you deploy an annotated web service endpoint implementation class to a server like, for instance, GlassFish, then the WSDL will be generated by GlassFish.
Actually, it is taken care of by the Metro web service stack, which also can be installed on Tomcat.
This approach in which the WSDL is generated is called a code-first approach. It has the drawback of risking changes to the WSDL in case the endpoint implementation class (etc) are changed, which may break the contract with clients using the earlier version of the WSDL.
The annotation used to tell the web service stack that a class is to be exposed as a web service is called @WebService.
The @SOAPBinding annotation specifies the following properties of a web service:
I see now that the WSDL being generated dynamically is POSSIBLY a result of using Endpoint.publish( which I guess is from Java SE 6 - Metro). I say possibly because I think I'm confused as to whether it's the standard java/wsdl mapping taking place or whether it's because I'm using Metro?