java - 如何从cxf out拦截器获取 session

标签 java spring session cxf

我有一个cxf“拦截器”绑定(bind)到接收阶段,将数据存储到 session 中。

MyCxfInInterceptor(拦截器中)

public class MyCxfInInterceptor extends AbstractSoapInterceptor {
    public MyCxfInInterceptor() {
        super(Phase.RECEIVE);
    }
    public void handleMessage(SoapMessage message) throws Fault {
        HttpServletRequest request (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST);
        HttpSession session = request.getSession(true);

        session.setAttribute("foo","bar");
    }
}

MyCxfOutInterceptor(输出拦截器)

public class MyCxfOutInterceptor extends AbstractSoapInterceptor {
      public MyCxfOutInterceptor() {
        super(Phase.SEND);
      }


      public void handleMessage(SoapMessage message) throws Fault {
        //TODO Retrieve data from session.
      }
    }

我想将这些数据检索到我的“输出拦截器”中。我该怎么做?

我不知道如何从 HttpServletResponse 检索 session 。也许该 session 不再可用。还有其他方法来存储和检索数据吗?

Spring 会有帮助吗?

最佳答案

您可以使用Exchange ,在in和out拦截器之间交换数据

在拦截器中

public void handleMessage(SoapMessage message) throws Fault {
  message.getExchange().put("foo","bar");
}

输出拦截器

public void handleMessage(SoapMessage message) throws Fault {
  Object obj = message.getExchange().get("foo");
 }

关于java - 如何从cxf out拦截器获取 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42209442/

相关文章:

java - 数据库持久化过程中的hibernate嵌套异常

java - 了解 Spring Data 接口(interface)

javascript - 新的 session cookie 直到下一个服务器请求才提供

java - Android 计算器给出错误答案

java - 数组上的递归插入排序的数组越界

java - 违反约束时静默失败

javascript - Facebook 连接 : Can't logout using PHP SDK + JS SDK

java - Spring 中的请求和 session bean 生命周期

java - 具有动态 FTP 属性的 Spring Integration 上传

java - Java 应用程序在 Eclipse 上运行良好,但在部署为可运行的 jar 后无法正常运行