The Java Platform, Standard Edition version 7.0 includes JAX-WS RI 2.2.The wsimport tool is available in the $JDK/bin folder.
Overview
Java 7 supports Java API for XML Web Services (JAX-WS) 2.2.4 or later,
For the top-down development strategy, wsimport is used to generate JAX-WS
portable artifacts to support the JAXWS application, which are used for
invoking a web service from a web service client, Following Figure shows a
graphic view of how wsimport fits into the process and the components it
generates.
Summary: The JAXWS runtime involve the running wsimport utility which requires the wsdl to generate all necessary portable artifacts to support and invoke the JAXWS application, additionally by adding the new –clientjar option in wsimport of Java 7 to packages all the generated artifacts into a specified jar. It should also fetch all the wsdls so that there is no need to fetch wsdls from endpoint each time a service instance is created, thus saving on network overhead.
Overview
These artifacts can be packaged in a WAR file with the WSDL and schema documentsalong with the endpoint implementation to be deployed. Also provides wsimportant task, see Wsimport ant task and JAX-WS Maven Plug-in, see wsimport mavenplug-in
Java
6 wsimport tool problem and limitation
The
problem with Java 6 wsimportis that the JAX-WS runtime needs to fetch the
wsdls from the endpoint each time a service instance is created,
which could incur a network overhead. The wsdls location is saved in
the generated artifacts so that the JAX-WS runtime fetches
the metadata and service. JAX-WS runtime may have access to local wsdls using
various methods such as a Service API, a jax-ws-catalog.xmlfile, or making
the wsdl available at a relative local location and using the
–wsdlLocation option when running the wsimport tool.The Ability of
reading metadata at runtime is useful when there is something made change in
the endpoint policy or the service definition and there is no need to
regenerate the clients. But it requires an additional connection to access the
metadata each time when a service instance is created which can network
overhead and costly at times. In the absence of the runtime fetch of the
metadata, the clients would need to be regenerated if the endpoint policy or
the service definition has changed. But this needs a workaround to overcome a
problem, to make wsdl accessible to the clients at runtime using various
methods such as a Service API, a jax-ws-catalog.xmlfile. But, it’s painful to
fetches the wsdls and schema associated with the service and
generate jax-ws catalog to use the local files.
So what is new in Java 7 wsimport
tool?
Java 7 support the JAX-WS 2.2.4, which has introduced a new (since JAX-WS RI 2.2.2) -clientjar option of wsimport tool, which automatically downloads the wsdls and schemas and packages all the generated client-side artifacts into a jar file, so just by including the generate jar file by this new option in the classpath, there is no need to fetch the wsdls from the end point each time a service instance is created, thus saving on network overhead.
Java 7 support the JAX-WS 2.2.4, which has introduced a new (since JAX-WS RI 2.2.2) -clientjar option of wsimport tool, which automatically downloads the wsdls and schemas and packages all the generated client-side artifacts into a jar file, so just by including the generate jar file by this new option in the classpath, there is no need to fetch the wsdls from the end point each time a service instance is created, thus saving on network overhead.
–clientjar
as shown in the following sample command:
wsimport -clientjar
wsclient.jar http://localhost:8080/ws/hello?WSDL
Summary: The JAXWS runtime involve the running wsimport utility which requires the wsdl to generate all necessary portable artifacts to support and invoke the JAXWS application, additionally by adding the new –clientjar option in wsimport of Java 7 to packages all the generated artifacts into a specified jar. It should also fetch all the wsdls so that there is no need to fetch wsdls from endpoint each time a service instance is created, thus saving on network overhead.
Very nice article – thanks for posting it.
ReplyDeletegood start :)
ReplyDelete