我在SAP NetWeaver 7.3 EHP 1(JEE5认证)上,我为现有的WSDL生成了一个Web服务框架。这个Web服务中的所有方法都是非阻塞的,因此用@Oneway
注释。该服务本身工作得很好。JAX-WS - 将WebServiceContext注入@WebService,只有@Oneway方法
虽然我也需要访问一个注入的WebServiceContext
,这是麻烦开始的地方。我可以很好地注入上下文,但每次调用都只会在服务器特定的NPE或ISE中结束。我有些可以理解,因为非阻塞调用是由SAP的JAX-WS实现异步执行的。但是,我试图通过查看JAX-WS规范来验证此行为。现在我要么是盲人,要么规范没有明确说明WebServiceContext
不能用于非阻塞网络方法。实际上,在最新版规范的第5.3章中,@Oneway
并没有提及一次。主要描述是
的javax.xml.ws.WebServiceContext接口使得能够为一个 端点实现对象和潜在的任何其他对象 共享它的执行上下文来访问关于所述被服务 请求信息。 调用 其中一个Web服务方法之外的组件调用 WebServiceContext上的任何方法的结果未定义。如果一个实现检测到这种用法,应该抛出一个 java.lang.IllegalStateException异常。
我想这一点是“请求服务”的定义。在异步处理SOAP操作时,HTTP请求已完成。但是,再次,我没有访问上下文“之外的一个调用,如果它的Web服务方法”。我很困惑...
你们有没有人知道我是否应该被允许在非阻塞网络方法中访问WebServiceContext
?谢谢!