private void fillContextsFromSessionContext(MessageContext msgContext) throws AxisFault {
AxisService service = msgContext.getAxisService();
if (service == null) {
throw new AxisFault(Messages.getMessage("unabletofindservice"));
}
SessionContext sessionContext = msgContext.getSessionContext();
if (sessionContext == null) {
TransportListener listener = msgContext.getTransportIn().getReceiver();
sessionContext = listener.getSessionContext(msgContext);
if (sessionContext == null) {
createAndFillContexts(service, msgContext, sessionContext);
return;
}
}
String serviceGroupName = msgContext.getAxisServiceGroup().getServiceGroupName();
ServiceGroupContext serviceGroupContext =
sessionContext.getServiceGroupContext(serviceGroupName);
if (serviceGroupContext != null) {
//setting service group context
msgContext.setServiceGroupContext(serviceGroupContext);
// setting Service context
msgContext.setServiceContext(serviceGroupContext.getServiceContext(service));
} else {
createAndFillContexts(service, msgContext, sessionContext);
}
ServiceContext serviceContext = sessionContext.getServiceContext(service);
//found the serviceContext from session context , so adding that into msgContext
if (serviceContext != null) {
msgContext.setServiceContext(serviceContext);
serviceContext.setProperty(HTTPConstants.COOKIE_STRING, sessionContext.getCookieID());
}
}