我是Cxf webservice的新手,并且对所提供的信息感到不知所措。我编写了一个扩展AbstractPhaseInterceptor的cxf拦截器(cxf:outInterceptors)。我试图在服务执行后使当前会话无效。我的问题是:
或者有更好的方法吗?
public ServiceSessionInvalidator() {
super(Phase.SEND);
}
@Override
public void handleMessage(Message message) throws Fault {
System.out.println("Hitting Handler");
HttpSession session;
HttpServletRequest req = (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST);
session = (req != null)? req.getSession(): null;
if(req == null ){
System.out.println("Request is Null");
}
}
输出:
16 Jun 2015 13:35:40 INFO - Inbound Message
----------------------------
ID: 1
Address: http://localhost:8090/services/VariableService/variableService/
Http-Method: GET
---
---
Hitting Handler
Request is Null
16 Jun 2015 13:35:41 INFO - Outbound Message
---------------------------
ID: 1
Response-Code: 200
答案 0 :(得分:2)
ArrayList
答案 1 :(得分:1)
我对此不确定,但请查看CXF阶段说明,例如here。在处理“协议”和“字节”级别的消息之后,Send
是最后一个阶段。会话的概念与HTTP协议有关,请求也是如此(参见类名)。
我的建议:试试Phase.MARSHAL
。