[ 
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)

Reply via email to