Module
java.xml.ws
Package javax.xml.ws.spi.http
提供用于在容器(例如servlet容器)中便携式部署JAX-WS Web服务的HTTP SPI。
此SPI不适用于最终开发人员,但为容器开发人员提供可移植部署JAX-WS服务的方式。
便携式部署完成如下:
- 容器为应用程序创建
Endpoint
个对象。 创建端点对象的必要信息可能来自Web服务部署描述符文件。 - 容器需要创建
HttpContext
对象进行部署。 例如,可以使用servlet配置(例如url-pattern)在servlet容器情况下为Web服务创建HttpContext。 - 然后使用
Endpoint.publish(HttpContext)
发布所有端点。 在publish()期间,JAX-WS运行时注册一个HttpHandler
回调来处理传入请求或HttpExchange
个对象。 HttpExchange对象封装了HTTP请求和响应。
Container JAX-WS runtime
--------- --------------
1. Creates Invoker1, ... InvokerN
2. Provider.createEndpoint(...) --> 3. creates Endpoint1
configures Endpoint1
...
4. Provider.createEndpoint(...) --> 5. creates EndpointN
configures EndpointN
6. Creates ApplicationContext
7. creates HttpContext1, ... HttpContextN
8. Endpoint1.publish(HttpContext1) --> 9. creates HttpHandler1
HttpContext1.setHandler(HttpHandler1)
...
10. EndpointN.publish(HttpContextN) --> 11. creates HttpHandlerN
HttpContextN.setHandler(HttpHandlerN)
请求处理完成如下(对于每个请求):
Container JAX-WS runtime
--------- --------------
1. Creates a HttpExchange
2. Gets handler from HttpContext
3. HttpHandler.handle(HttpExchange) --> 4. reads request from HttpExchange
<-- 5. Calls Invoker
6. Invokes the actual instance
7. Writes the response to HttpExchange
便携式取消部署完成如下:
Container
---------
1. @preDestroy on instances
2. Endpoint1.stop()
...
3. EndpointN.stop()
- 从以下版本开始:
- 1.7, JAX-WS 2.2
-
类摘要 Class 描述 HttpContext HttpContext表示Web服务的根URI路径与HttpHandler
之间的映射,该对象被调用以处理在关联容器上发往该路径的请求。HttpExchange 此类封装了收到的HTTP请求和在一个交换中生成的响应。HttpHandler 被调用以处理HTTP请求的处理程序。