关于端点接口的jax-ws

时间:2013-01-14 14:45:19

标签: web-services jax-ws

使用注释 @WebService 定义了Java接口 编译好的代码

示例:

@WebService
public interface HelloWorldIfc{

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

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

此编译也很好

那么 - 我应该在界面上定义端点接口还是实现类? 这是任何用途的属性 - 它的目的是什么?
如果我不定义它会发生什么 - 我会失去什么? 谢谢,
萨蒂什南比亚

2 个答案:

答案 0 :(得分:20)

The JAX-WS Specification在第30页第3.3节中进行了此清除:

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

如果您定义endpointInterface注释类的所有公共方法都将映射到wsdl:operation(只要您不使用{{{{}}影响此行为1}}注释)。

如果你定义@WebMethod,它必须指向带注释的类实现的某种类型(或者,如你的问题所示,它本身)。然后,此类型的公共方法用于映射endpointInterface,而不是注释类的方法。

总结:如果在实现类上使用wsdl:portType并希望基于它实现的接口生成WSDL,则endpointInterface的定义才有意义。在您使用界面@WebService上的注释的当前设置中,确实没有任何区别。所以你只是跳过它就不会失去任何东西。如果希望实现类提供不应该生成的WSDL的公共方法,那么注释很有用。

答案 1 :(得分:0)

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