我有很多端点都带有@WebService(targetNamespace = "mynamespace")注释。每个@WebResult@WebParam都具有targetNamespace = "mynamespace"相同的定义。

有没有一种方法可以将JAX-WS(地铁实现)配置为默认使用"mynamespace"作为targetNamespace?

我想使用没有任何属性的注释,并摆脱重复的声明,就像约定优于配置一样。

最佳答案

只将targetNamespace放在服务端点接口(interface)或服务实现中
bean 。

/**
* Annotated Implementation Object
*/
@WebService(
    name = "CustomerService",
    targetNamespace = "http://org.company.services"
)
public class CustomerService {
    @WebMethod
    @WebResult(name="CustomerRecord")
    public CustomerRecord locateCustomer(
        @WebParam(name="FirstName") String firstName,
        @WebParam(name="LastName") String lastName,
        @WebParam(name="Address") USAddress addr) {
        ...
    }
};

如果@WebResult@WebParam没有targetNamespace,则默认值为
targetNamespaceWeb服务。

另一方面,您可以避免所有注释,仅在不需要使用JAX-B进行自定义的情况下才使用@WebService

JSR-181 Web Services Metadata for the JavaTM Platform中查看更多

07-24 18:56