[
https://issues.apache.org/jira/browse/CXF-5298?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13781613#comment-13781613
]
Noman ali abbasi edited comment on CXF-5298 at 9/30/13 5:42 AM:
----------------------------------------------------------------
Hi daniel Kulp,
This issue has been fixed by adding
messageContext.put(Message.MAINTAIN_SESSION, Boolean.TRUE); in every request
and in struts app i have configured a httpsessionlistener and stored a client
on each user session, eventually its working fine now.
HTTPSessionListener in Struts1 app:
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
HttpSession httpSession = httpSessionEvent.getSession();
MarsWebClient client = new MarsWebClient();
if(httpSession.getAttribute(httpSession.getId()) == null){
httpSession.setAttribute(httpSession.getId(), client);
System.out.println("sessionId: " + httpSession.getId());
}
}
Struts1 action
HttpSession httpSession = request.getSession();
Client client = (Client) httpSession.getAttribute(httpSession.getId());
Web Service Implementation Class:
public String getUserInfo() {
HTTPSession httpSession = getHttpSession(context);
return "logged-in: user: " + httpSession.get(SESSION_USER) + " id: " +
httpSession.getSession().getId();
}
protected HTTPSession getHttpSession(WebServiceContext webServiceContext){
messageContext = webServiceContext.getMessageContext();
messageContext.put(Message.MAINTAIN_SESSION, Boolean.TRUE);
HttpServletRequest httpServletRequest =
HttpServletRequest)messageContext.get(AbstractHTTPDestination.HTTP_REQUEST);
HTTPSession httpSession = new HTTPSession(httpServletRequest);
return httpSession;
}
was (Author: [email protected]):
Hi daniel Kulp,
This issue has been fixed by adding
messageContext.put(Message.MAINTAIN_SESSION, Boolean.TRUE); in every request
and in struts app i have configured a httpsessionlistener and stored a client
on each user session, eventually its working fine now.
HTTPSessionListener in Struts1 app:
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
HttpSession httpSession = httpSessionEvent.getSession();
MarsWebClient client = new MarsWebClient();
if(httpSession.getAttribute(httpSession.getId()) == null){
httpSession.setAttribute(httpSession.getId(), client);
System.out.println("sessionId: " + httpSession.getId());
}
}
Web Service Implementation Class:
public String getUserInfo() {
HTTPSession httpSession = getHttpSession(context);
return "logged-in: user: " + httpSession.get(SESSION_USER) + " id: " +
httpSession.getSession().getId();
}
protected HTTPSession getHttpSession(WebServiceContext webServiceContext){
messageContext = webServiceContext.getMessageContext();
messageContext.put(Message.MAINTAIN_SESSION, Boolean.TRUE);
HttpServletRequest httpServletRequest =
HttpServletRequest)messageContext.get(AbstractHTTPDestination.HTTP_REQUEST);
HTTPSession httpSession = new HTTPSession(httpServletRequest);
return httpSession;
}
> Session is not maintaining
> ---------------------------
>
> Key: CXF-5298
> URL: https://issues.apache.org/jira/browse/CXF-5298
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.7.5
> Reporter: Noman ali abbasi
> Fix For: NeedMoreInfo
>
>
> i m always getting new session id on each request, i m using apache cxf 2.7.5
> version, i have also tried various solutions like,
> Map<String, Object> properties = new HashMap<String, Object>();
> properties.put("thread.local.request.context", Boolean.TRUE);
>
> properties.put("org.apache.cxf.message.Message.MAINTAIN_SESSION",Boolean.TRUE);
>
> factory = new JaxWsProxyFactoryBean();
> factory.getInInterceptors().add(new LoggingInInterceptor());
> factory.getOutInterceptors().add(new LoggingOutInterceptor());
> factory.setServiceClass(MarsWebService.class);
> factory.setAddress("http://localhost:8080/HelloWorld/ws/HWebService?wsdl");
> but no luck, i have also bind an user with session id and set web service
> client at session level like
> HTTP Session Listner
> if(webServiceClient.get(httpSession.getId()) == null){
> Client client = new Client();
> httpSession.setAttribute(httpSession.getId(), client);
> }
> Struts1 action
> HttpSession httpSession = request.getSession();
> Client client = (Client) httpSession.getAttribute(httpSession.getId());
--
This message was sent by Atlassian JIRA
(v6.1#6144)