我有一个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/