users@jax-rpc.java.net

Re: cookie management between client and server

From: Roberto Chinnici <Roberto.Chinnici_at_Sun.COM>
Date: Wed, 07 Jan 2004 12:34:27 -0800

Actually, there is a way to get to the response object.

The dispatching servlet stores the HttpServletResponse object
into a message context property. The name of the property is
the constant
com.sun.xml.rpc.server.http.MessageContextProperties.HTTP_SERVLET_RESPONSE.
There are similar properties for the request object and a few other objects.

All these features are non-standard, btw.

Roberto

-- 
Roberto Chinnici
Java Web Services
Sun Microsystems, Inc.
roberto.chinnici_at_sun.com
Kevin Jones wrote:
> As far as I can tell there's no way in the JAX-RPC RI to get to the
> response object so there's no way of generating non-session cookies. You
> best bet may be to use a Filter (javax.servlet.Filter) and manage the
> response there,
> 
> Kevin Jones
> http://kevinj.develop.com 
> 
> 
>>-----Original Message-----
>>From: jeff [mailto:jeff.blattman_at_Sun.COM] 
>>Sent: 05 January 2004 20:13
>>To: Bobby Bissett - Javasoft
>>Cc: users_at_jax-rpc.dev.java.net
>>Subject: Re: cookie management between client and server
>>
>>
>>thanks bobby,
>>
>>just to clarify, sounds like you are saying that as long as i 
>>have a way 
>>to get a handle to an http request / response object in my 
>>service impl, 
>>i can get and set cookies to my heart's delight, is that correct? the 
>>example you provided below uses http session not cookies, i 
>>just want to 
>>verify that it is okay to use cookies directly and not rely 
>>on http session.
>>
>>Bobby Bissett - Javasoft wrote:
>>
>>
>>>>a colleague of mine remembers that there was some sort of 
>>
>>an SPI on 
>>
>>>>the server side where we'd have to author a plugin to 
>>
>>handle this, 
>>
>>>>but we can't find any mention of this in the specification.
>>>
>>>Hi Jeff,
>>>
>>>You don't need a server side handler to set cookies -- once you get
>>>hold of the javax.servlet.http.HttpSession object you can set it 
>>>there. Here's the way I have done it:
>>
>>>Make your service impl class implement
>>>javax.xml.rpc.server.ServiceLifecycle in addition to your Remote 
>>>interface. This will make you add an init() and destroy() method. 
>>>Declare a field of type javax.xml.rpc.server.ServletEndpointContext 
>>>and in your init method do:
>>>
>>>    public void init(Object context) throws ServiceException {
>>>        servletEndpointContext = (ServletEndpointContext) context;
>>>    }
>>>
>>>Then you can have a method like login or something that is the first
>>>method the client calls, and it will set the cookie here. 
>>
>>My example 
>>
>>>passes in a username and password, but you can do it 
>>
>>however you'd like:
>>
>>>    public boolean login() throws RemoteException {
>>>        HttpSession httpSession =
>>>            servletEndpointContext.getHttpSession();
>>>        httpSession.setAttribute(username, password);
>>>
>>>        // put your validation logic here
>>>        Boolean isValidUser = Boolean.valueOf("true");
>>>
>>>        httpSession.setAttribute("loginStatus", isValidUser);
>>>        return true;
>>>    }
>>>
>>>There may be better info for you in the javadocs for 
>>
>>HttpSession, but
>>
>>>this is how you can get hold of it in your service. You can 
>>
>>check for 
>>
>>>the cookie and any other http info in the response either with your 
>>>filter or with a client side handler that simply gets the 
>>
>>SOAPMessage 
>>
>>>and examines the MimeHeaders. (or use a tcp tunnel kind of 
>>
>>utility to 
>>
>>>watch the http flow by...)
>>>
>>>Cheers,
>>>Bobby
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: users-unsubscribe_at_jax-rpc.dev.java.net
>>For additional commands, e-mail: users-help_at_jax-rpc.dev.java.net
>>
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jax-rpc.dev.java.net
> For additional commands, e-mail: users-help_at_jax-rpc.dev.java.net
> 
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jax-rpc.dev.java.net
For additional commands, e-mail: users-help_at_jax-rpc.dev.java.net