从客户端来看,如果我想访问Web服务,我只需使用它生成代理wsimport.这是我的Web服务参考.
那么注释@WebServiceRef在哪里发挥作用?它是否仅用于服务器端,以获取对同一环境中托管的Web服务的注入引用?
Pau*_*gas 20
不一定,但它确实是取决于服务器实现的东西.例如,要访问远程服务,它需要访问生成的客户端,并可选择访问WSDL文档和方案文件(按惯例应该在WEB-INF/wsdl),以便
public class HelloServlet extends HttpServlet {
@WebServiceRef(HelloMessengerService.class) // class with @WebServiceClient
private HelloMessenger port; // the SEI
...
}
Run Code Online (Sandbox Code Playgroud)
的HelloMessengerService类是短截线,并且具有@WebServiceClient具有注释
wsdlLocation属性(点到本地ö远程WSDL文档).
但你可以有类似的东西
@WebServiceRef(wsdlLocation = "META-INF/wsdl/AnyService/Any.wsdl")
private HelloMessengerService service;
Run Code Online (Sandbox Code Playgroud)
要么
@WebServiceRef
public HelloMessengerService service;
Run Code Online (Sandbox Code Playgroud)
如果使用处理程序链来更改传入和传出的SOAP消息:
@WebServiceRef(HelloMessengerService.class)
@HandlerChain(file="handler-chain.xml")
private HelloMessenger port;
Run Code Online (Sandbox Code Playgroud)
@WebServiceRef必须将注释的使用应用于JAX-WS管理的客户端,如Servlet,EJB或其他Web服务.
为了补充Paul Vargas的答案,@WebServiceRef注释是一个工具,用于完成Java EE平台向完全托管环境的演变.以这种方式思考:
几乎Java EE堆栈中的每个组件都可以通过某种方式@Resources注入,EJB,JSF托管bean,CDI bean 等.为什么不能注入Web服务引用?通过使用此注释注入Web服务引用的功能,以下是准备注入目标:
| 归档时间: |
|
| 查看次数: |
19958 次 |
| 最近记录: |