我什么时候需要使用@WebServiceRef?
从客户端,如果我想访问Web服务,我只需使用.这是我的 Web 服务参考。wsimport
那么,注释@WebServiceRef在哪里发挥作用呢?它是否意味着仅在服务器端使用,以获取对托管在同一环境中的Web服务的注入引用?
从客户端,如果我想访问Web服务,我只需使用.这是我的 Web 服务参考。wsimport
那么,注释@WebServiceRef在哪里发挥作用呢?它是否意味着仅在服务器端使用,以获取对托管在同一环境中的Web服务的注入引用?
不一定,但它确实取决于服务器的实现。例如,要访问远程服务,它需要能够访问生成的客户端,并可以选择访问WSDL文档和方案文件(按照惯例应该在 中),以便WEB-INF/wsdl
public class HelloServlet extends HttpServlet {
@WebServiceRef(HelloMessengerService.class) // class with @WebServiceClient
private HelloMessenger port; // the SEI
...
}
该类是存根,并且具有具有属性的注释(指向本地或远程 WSDL 文档)。HelloMessengerService
@WebServiceClient
wsdlLocation
但你可以有这样的东西
@WebServiceRef(wsdlLocation = "META-INF/wsdl/AnyService/Any.wsdl")
private HelloMessengerService service;
或
@WebServiceRef
public HelloMessengerService service;
如果使用处理程序链来更改传入和传出的 SOAP 消息:
@WebServiceRef(HelloMessengerService.class)
@HandlerChain(file="handler-chain.xml")
private HelloMessenger port;
注释的使用必须应用于 JAX-WS 管理的客户机,如 Servlet、EJB 或其他 Web 服务。@WebServiceRef
为了补充Paul Vargas的答案,注释是完成Java EE平台向完全托管环境的演进的工具。可以这样想:@WebServiceRef
Java EE堆栈中的几乎每个组件都可以通过某种方式注入,EJB,JSF管理的bean,CDI bean等。为什么不能注入 Web 服务引用?由于能够使用此注释注入 Web 服务引用,因此以下是现成的注入目标:@Resources