1

我试图弄清楚如何在 wso2 esb 中实现会话管理。所以我编写了一个类调解器,它生成我想要存储的 session_ID。为了存储会话 id,我使用以下代码:

org.apache.axis2.context.ServiceContext serviceContext = org.apache.axis2.context.MessageContext
            .getCurrentMessageContext().getServiceContext();
serviceContext.setProperty("SessionIDGlobal", uuid);

但是在我的 esb 代理中运行它时,它会在 getCurrentMessageContext 部分引发空指针异常。我采用了另一种方法,我将 sessionID 存储在属性中介中并尝试获取它的值,但是当我在 try 的 generateSessionID 操作之后单击 postRequest 操作时-它。所有属性都被重置,我的 sessionID 属性给了我空值。我应该怎么做才能纠正这个问题?有没有替代方法?

4

2 回答 2

1

您必须像这样创建服务上下文;

ConfigurationContext cfgCtx =(((Axis2MessageContext) synCtx).getAxis2MessageContext(). getConfigurationContext();

cfgCtx.getOperationContext().getServiceContext();
于 2013-04-16T18:56:50.623 回答
0

您应该存储在消息上下文中,但您已存储在服务上下文中。请参考this以了解如何在不同范围内设置属性。Synapase(默认)、Axis2、Transport 等。

有关完整的详细信息,请参阅此博客文章。 http://blog.facilelogin.com/2011/02/wso2-esb-property-mediator-different.html

于 2013-04-16T18:57:31.113 回答