[jboss-user] [Javassist user questions] - How can we manage session using JAX-WS?

contactnag do-not-reply at jboss.com
Mon Oct 1 08:32:02 EDT 2007


Hi,

We are currently using the Jboss 4.0.5 GA, JAX-WS webservices. I am trying to implement session management.  I am getting WebServiceContext injection is null.  Please find the code below which I have implemented Server and client side for session management. Can anyone help me why I am getting WebServiceContext null. If you have any code works on Jboss4.0.5 it is really helpful for me

Server Side code
--------------------
/*
 * Hello.java
 *
 * Created on September 24, 2007, 10:42 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package cisco;

import javax.jws.*;
import javax.xml.ws.WebServiceContext;
import javax.annotation.Resource;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.handler.MessageContext;
import javax.servlet.http.HttpSession;

@WebService
public class Hello {    
    /**
     * WebServiceContext is injected by the JAX-WS Runtime
     */
    @Resource
    private WebServiceContext wsContext;

    /**
     * another way to inject WebServiceContext
     * make sure this is not a WebMethod
     *
     */
    /*
     @WebMethod(exclude = true)
     @Resource public void initializeContext(WebServiceContext wsContext) {
     System.out.println("Setting WebServiceContext");
     this.wsContext = wsContext;
     }
    */
   @WebMethod
    public int getCounter() {
        MessageContext mc = wsContext.getMessageContext();
        HttpSession session = ((javax.servlet.http.HttpServletRequest) mc.get(MessageContext.SERVLET_REQUEST)).getSession();
        // Get a session property "counter" from context
        if (session == null)
            throw new WebServiceException("No session in WebServiceContext");
        Integer counter = (Integer) session.getAttribute("counter");
        if (counter == null) {
            counter = new Integer(0);
            System.out.println("Starting the Session");
        }
        counter = new Integer(counter.intValue() + 1);
        session.setAttribute("counter", counter);
        
        return counter;

    }

    /**
     * Lifecycle method called before servicing any requests
     */
    @PostConstruct
    @WebMethod(exclude = true)
    public void onBeginService() {
        System.out.println("Called onBeginService: Session test");
        // Initialize resources need by the Service
        // ....
    }

    /**
     * Lifecycle method called before destroying the service instance
     */
    @PreDestroy
    @WebMethod(exclude = true)
    public void onEndService() {
        System.out.println("Called onEndService: Session test");
        // Clean up resources need by the Service
        // ....
    }
}

 Client Clode:
       try {
        cisco.HelloService service = new cisco.HelloService();
        cisco.Hello port = service.getHelloPort();
        ((BindingProvider)port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY,new Boolean(true));
        // TODO process result here
        //int result = port.getCounter();
        //out.println("Result = "+result);
        
        //Hello proxy = new HelloService().getHelloPort();
        //((BindingProvider)proxy).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY,true);
        int result = port.getCounter();
        System.out.println(result);
        result = port.getCounter();
        System.out.println(result);
        
        } catch (Exception ex) {
                ex.printStackTrace();
        }





View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4090201#4090201

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4090201



More information about the jboss-user mailing list