我试图弄清楚如何在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存储在属性中介中并尝试获取其值但是当我在generateSessionID之后单击postRequest操作时尝试它的操作。所有属性都被重置,我的sessionID属性给我null值。我该怎么做才能纠正这个问题?还有其他方法吗?
答案 0 :(得分:1)
你必须像这样创建servicecontext;
ConfigurationContext cfgCtx =(((Axis2MessageContext) synCtx).getAxis2MessageContext(). getConfigurationContext();
cfgCtx.getOperationContext().getServiceContext();
答案 1 :(得分:0)
您应该存储在Message上下文中,但是您已经存储在服务Context中。请参阅此内容以了解如何在不同范围设置属性。 Synapase(默认),Axis2,Transport等
请参阅此博客文章了解完整详情。 http://blog.facilelogin.com/2011/02/wso2-esb-property-mediator-different.html