The wsimport tool
The wsimport tool reads a WSDL and generates all the required artifacts for web service development, deployment, and invocation. The wsimport tool supports the top-down approach to developing JAX-WS Web services, where you are starting from a wsdl.
The wsimport tool generated JAX-WS portable artifacts include Service Endpoint Interface (SEI), Service, Exception class mapped from wsdl:fault (if any), JAXB generated value types (mapped java classes from schema types) etc. These artifacts can be packaged in a WAR file with the WSDL and schema documents along with the endpoint implementation to be deployed.
The wsgen tool
The wsgen tool reads an existing web service implementation class (SIB) and generates the required JAX–WS portable artifacts for web service development and deployment. The wsgen tool can be used for bottoms-up approach, where you are starting from a service endpoint implementation (SIB) rather than a wsdl.
Can we say that wsgen and wsimport command generates same classes (same JAX-WS artifacts)?
Can we say that wsgen and wsimport command is used to generate both server and client side code ?
can wsgen command be used to generate a WSDL file ?
1. Can we say that wsgen and wsimport command generates same classes (same JAX-WS artifacts)?
2. Can we say that wsgen and wsimport command is used to generate both server and client side code ?
3. can wsgen command be used to generate a WSDL file ?
Correct me if I am wrong.
wsgen and wsimport generates JAX-WS artifacts from SBI and WSDL respectively.
If those JAX-WS artifacts do not exist, when the service is published using Endpoint.publish or web service container (Tomcat), those artifacts are dynamically generated.
If those artifacts exist (generated by wsgen), the Endpoint.publish does not generate those artifacts.
1. Yes. wsgen and wsimport generate request and response wrapper bean classes and the JAXB classes (XXX.class and XXXResponse.class).
However, wsgen generates the JAXB classes and put them in a jaxws folder. But wsimport does not put those classes in any folder instead in the current directory.
2. The JAX-WS artifacts generated can be used by both server and client side.
3. I think wsgen can be used to generate WSDL. Here is an example at http://www.mkyong.com/webservices/jax-ws/jax-ws-wsgen-tool-example/