在J2EE平台中,要开发Web服务,可以使用两种技术:JAX-RPC和JAXM。而对于JAX-RPC,又有两种不同类型的服务端点:Servlet服务端点和EJB服务端点。基于Servlet的服务端点运行在Servlet容器中,基于EJB的服务端点运行在EJB容器中。 
  Servlet可以在客户端的多个调用之间保持会话状态,所以基于Servlet的JAX-RPC Web服务端点要保持客户的会话状态是可行的。但如果是EJB服务端点,
  具体查阅网址:http://www-128.ibm.com/developerworks/cn/webservices/ws-session/index.html

解决方案 »

  1.   

    可不可以得到httpRequest对象?
      

  2.   

    JAX-RPC以HTTP作为传输协议,那么会话的保持可以从HTTP应用入手。JAX-RPC两种服务端点中,只有基于Servlet的端点才能直接使用HTTP会话。要想在服务端点中访问HTTP会话,Web服务实现类必须实现javax.xml.rpc.server.ServiceLifecycle接口,实现了这个接口的服务端点的生命周期由JAX-RPC运行环境来管理。 
      通过ServletEndpointContext接口的getHttpSession来获得客户端的会话,这个会话由JAX-RPC运行环境维护。如果要在客户端使用HTTP会话,那么不论是Stub还是Call都必须设置SESSION_MAINTAIN_PROPERTY属性值为Boolean.TRUE。