12

已经定义了带有注释@WebService的Java 接口 编译了运行良好的代码

例子:

@WebService
public interface HelloWorldIfc{

现在我尝试将端点接口定义为

 @WebService (endpointInterface = "com.ws.HelloWorldIfc")
    public interface HelloWorldIfc{

这也编译得很好

那么-我应该在接口上还是在实现类上定义端点接口?
这个属性有什么用吗?它的目的是什么?
如果我不定义它会发生什么 - 我会失去什么?
谢谢,
萨蒂什

4

2 回答 2

22

JAX-WS 规范在第 3.3 节,第 30 页中明确了这一点:

您可以使用endpointInterface属性将实现类和接口分开。基本上,这决定了wsdl:portType在您部署服务并wsdl:definition生成服务时将映射到您的内容。

如果您没有定义带endpointInterface注释的类的所有公共方法,则将被映射到wsdl:operation(只要您不使用@WebMethod注释影响此行为)。

如果您确实定义了endpointInterface,它必须指向带注释的类实现的某种类型(或者,如您的问题所示,它本身)。然后,这种类型的公共方法用于映射wsdl:portType,而不是注解类的方法。

总结一下:只有在实现类上使用 并且希望基于它实现的接口生成 WSDL 时,的定义endpointInterface才有意义。@WebService在您在界面上使用注释的当前设置中com.ws.HelloWorldIfc,确实没有任何区别。因此,您只需跳过它就不会失去任何东西。如果您希望实现类提供不应进入生成的 WSDL 的公共方法,则该注释很有用。

于 2013-01-14T15:15:58.577 回答
0

定义 endpointInterface 很有用,因为接口方法的 @WebParam 注释正在工作,而无需在实现类中再次定义它们。

于 2016-11-05T23:04:44.913 回答