2011-04-05 54 views
3

我正在阅读JAX-WS。何时使用wsgen?

我已经使用Eclipse和手工成功构建了JAX-WS RI服务。两种方法都使用apt。在通过Eclipse将应用程序部署到应用程序服务器或创建一个war(带或不带sun-jaxws.xml,取决于正在使用的容器)并手动部署它时,JAX-WS运行时将生成相应的WSDL自动。

什么时候使用wsgen有用?

+0

你使用的'apt'是什么? – bmargulies 2011-04-05 23:49:18

+0

@bmargulies - apt是'annotation processing tool';它会生成编组/请求和响应SOAP消息的服务器端存根控件。 – wulfgarpro 2011-04-06 00:05:23

回答

4

wsgen生成响应和请求包装类,并且如您所述,可以生成WSDL。有些容器,如CXF,根本不需要这些包装类 - 它们在运行中生成它们。或者,你可能已经为自己创造了它们,或者,我猜也可以。

This link说明。

JAX-WS RI提供了一些apt工厂,并建议运行APT来生成一些代码。

事实上,我认为http://jax-ws.java.net/nonav/2.1.1/docs/jaxws-tools.html#mozTocId344067可能是您的原始问题的金标准答案。有点扩展:JAX-WS(标准)和JAX-WS(参考实现)是两个不同的东西。如果您使用Java 1.6或Metro或CXF等内置的RI,则会遇到不同的工具和需求。例如,在CXF中,对于Java优先服务,您根本不需要运行任何工具。

如果您需要将其发送给其他人,并且您不想启动该服务并使用?wsdl API,那么从命令行生成wsdl可能会有所帮助。

该标准不要求使用任何工具,但标准允许符合标准的实现使用工具。呼!

+0

感谢您的解释。似乎这些工具中的一些在功能上重叠。也许不同的Web服务栈出于同样的原因分发不同的工具。因此,wsgen是生成请求/响应类的推荐工具,为什么我会想要将WSDL生成为便携式工件? – wulfgarpro 2011-04-06 02:57:50