3.2. JAX-WS Web Service Endpoints
3.2.1. 关于 JAX-WS Web 服务端点
JAX-WS Web 服务端点是 Web 服务的服务器组件。客户端和其他 Web 服务使用称为简单对象访问协议(SOAP)的 XML 语言通过 HTTP 协议与其通信。端点本身部署到 JBoss EAP 容器中。
可以通过以下两种方式之一创建 WSDL 描述符:
- 手动编写 WSDL 描述符.
- 使用 JAX-WS 注释来自动创建 WSDL 描述符。这是创建 WSDL 描述符的最常用方法。
端点实施标有 JAX-WS 注释并部署到服务器。服务器会自动生成并发布 WSDL 格式的抽象合同,供客户端使用。所有 marshalling 和 unmarshalling 都委派至用于 XML 绑定(JAXB)服务的 Java 架构。
端点本身可能是 Plain Old Java 对象(POJO)或 Java EE Web 应用。您还可以使用 EJB3 无状态会话 Bean 来公开端点。它打包成 Web 存档(WAR)文件。打包端点的规范,称为 Java 服务端点(JSE),在 JSR-181 中定义。与 JAX-WS API 规范对应的 Jakarta EE 是 Jakarta Web Services 元数据规范 2.1。
示例:POJO 端点
@WebService @SOAPBinding(style = SOAPBinding.Style.RPC) public class JSEBean { @WebMethod public String echo(String input) { ... } }
示例:Web 服务端点
<web-app ...> <servlet> <servlet-name>TestService</servlet-name> <servlet-class>org.jboss.quickstarts.ws.jaxws.samples.jsr181pojo.JSEBean01</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestService</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
以下 EJB3 无状态会话 Bean 在远程接口和端点操作上公开相同的方法:
@Stateless @Remote(EJB3RemoteInterface.class) @WebService @SOAPBinding(style = SOAPBinding.Style.RPC) public class EJB3Bean implements EJB3RemoteInterface { @WebMethod public String echo(String input) { ... } }
服务端点接口
JAX-WS 服务通常实施 Java 服务端点接口(SEI),它可以从 WSDL 端口类型(直接或使用注释)映射。此 SEI 提供了一个高级抽象,隐藏了 Java 对象及其 XML 表示之间的详细信息。
端点供应商接口
在某些情况下,JAX-WS 服务需要能够在 XML 消息级别上操作。端点 提供程序
界面向实施它的 Web 服务提供此功能。
使用和访问端点
部署 Web 服务后,您可以使用 WSDL 创建组件存根,这是应用程序的基础。然后,您的应用可以访问端点来开展工作。