当前位置: 首页 > 知识库问答 >
问题:

如何通过CXF侦听器使会话无效?

卫子平
2023-03-14

我是Cxf webservice的新手,对提供的信息有点不知所措。我编写了一个cxf拦截器(cxf:outInterceptors),它扩展了AbstractPhaseInterceptor。我正在尝试在服务执行后使当前会话无效。我的问题是:

  1. 我是否在构造函数中使用了正确的阶段?(阶段发送)
  2. 如何从消息中获取会话信息?现在,对于下面的方法,请求实例返回null

或者有更好的方法吗?

  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

共有2个答案

赫连永怡
2023-03-14

我不确定这一点,但看看CXF阶段的描述,就像这里一样<代码>发送是在“协议”和“字节”级别处理消息后的最后一个阶段。会话的概念与HTTP协议有关,请求也是如此(请参见类名)。

我的建议是:尝试阶段。封送处理。

郑功
2023-03-14
@Resource
WebServiceContext wsContext;
@Context
private HttpServletRequest request;



 private HttpServletRequest invalidateSession() {
    MessageContext mc = wsContext.getMessageContext();
    HttpServletRequest req;
    if (mc != null) {
        req = (HttpServletRequest) mc.get(MessageContext.SERVLET_REQUEST);
    } else {
        req = request;
    }

    req.getSession().invalidate();
}
 类似资料:
  • 我们有web服务(jaxws),它正在调用另一个web服务(aslo jaxws)。Jaxws客户端配置如下所示-- 正如您所看到的,我们有两个拦截器和一个故障侦听器。我们希望在这些拦截器、故障侦听器和web服务代码之间进行通信。正如SO线程中所述,我们使用cxf交换对象在web服务和拦截器之间进行通信。 我们的inFaultInterceptor代码如下所示-- } Web服务代码如下所示- 但

  • 我正在使用版本来使用来自主题的消息。在使用者配置中,自动提交设置为,而设置为。与服务器协商为10秒。 在收到消息后,我将它的一部分保存到数据库中。我的数据库有时会非常慢,这会导致kafka侦听器会话超时: 组MyGroup得自动偏移量提交失败:无法完成提交,因为组已重新平衡并将分区分配给另一个成员.这意味着对poll()的后续调用之间的时间比配置的session.timeout.ms长,这通常意味

  • 嘿,当我运行应用程序时,它会给出一个错误java.lang.IllegalArgumentException:Invalid listener:null,这说明侦听器是空的。我是初学者,所以请大家帮忙解决这个问题。在这一行中出现错误:LocationManager.RequestLocationUpdates(provider,2000,0,locationListener);//这里是我的示例代

  • 我正在尝试创建一个应用程序,使用新的Android服务来读取所有通知,也可以删除它们,但它并不起作用。在我的舱单上: 我有一个类NotificationListener扩展了NotificationListenerService我重写了两个方法OnNotificationPost(StatusBarNotification sbn)、onNotificationRemoved(StatusBarN

  • 问题内容: 我当时在上网,但找不到很好的信息。我试图在每次运行应用程序时检测按键。我正在使用JavaFX并将其与FXML一起运行。我尝试了很多事情,但没有任何效果。请帮我。 问题答案: 您应该签出Ensemble示例。这是关键的侦听器代码。

  • 我正在使用Realex Payments的HPP API开发一个卡支付页面,其中包含一个iFrame,用于托管Realex页面。在Realex请求表单上,我将字段HPP_POST_维度和HPP_POST_响应设置为我的URL,如下所示: 付款页: www.example.com/account/payment.html 隐藏字段值用于在HPP页面大小更改和事务完成时,使用事件侦听器将数据从Real