Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 98660 invoked from network); 1 Dec 2003 16:22:18 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 1 Dec 2003 16:22:18 -0000 Received: (qmail 50470 invoked by uid 500); 1 Dec 2003 16:22:08 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 50448 invoked by uid 500); 1 Dec 2003 16:22:07 -0000 Mailing-List: contact axis-dev-help@ws.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@ws.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@ws.apache.org Received: (qmail 50389 invoked from network); 1 Dec 2003 16:22:03 -0000 Message-ID: From: "Joan Pont" To: "'axis-dev@ws.apache.org'" Subject: RE: Bug#: 11815 ServiceLifecycle.destroy() never called when sess ion is destroyed Date: Mon, 1 Dec 2003 16:21:52 -0000 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C3B827.3AF48BAA" X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C3B827.3AF48BAA Content-Type: text/plain Hi Glen, I've built the *.jar files with the latest CVS version. I've copied them from the /build/lib directory to tomcat's lib directory (that's on the classpath for Axis) from a previously installed Axis version1.1 I've changed the web.xml file (got it from CVS). Is there anything else that should be done? Could you please tell me which ones are the java files and the config files that must be replaced? So I can patch the release Version Axis 1.1, instead of building a new one. At the moment I get the init called every time there is a new client connecting for the fist time but I don't get calls to finalize/destroy (see the XlmServerServiceBindingImpl.java below. Any ideas? I've got a session enabled client -based on cookies- that sends multiple requests and then terminates. I've waited for more than the 5 minutes session timeout. I don't even get calls to finalize when I shutdown TOMCAT. I get the following in the Catalina.out WebappClassLoader: validateJarFile(/mdn05/gembuild/3rdparty/jakarta-tomcat-4.0/jakarta-tomcat-4 .1.27/webapps/axis/WEB-INF/lib/servlet.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class Is it a problem? In the deployment descriptor of I've got Session scope. The ServiceBindingImpl is as follows: /** * XlmServerServiceBindingImpl.java * * This file was auto-generated from WSDL * by the Apache Axis WSDL2Java emitter. */ package com.nortelnetworks.gem18pi; import java.rmi.Remote; import java.rmi.Remote.*; import javax.xml.rpc.server.ServiceLifecycle; import javax.xml.rpc.server.ServletEndpointContext; import javax.xml.rpc.handler.soap.SOAPMessageContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServlet; import javax.servlet.ServletConfig; import javax.servlet.*; import java.security.Principal; import javax.xml.rpc.handler.*; import javax.xml.rpc.Call; import org.apache.commons.logging.Log; import org.apache.axis.components.logger.LogFactory; import org.apache.log4j.Logger; import org.apache.log4j.BasicConfigurator; public class XlmServerServiceBindingImpl implements com.nortelnetworks.gem18pi.XlmServerServicePortType, ServiceLifecycle{ private ServletEndpointContext serviceContext; private static Log log = LogFactory.getLog(XlmServerServiceBindingImpl.class.getName()); public void init (java.lang.Object context) { serviceContext= (ServletEndpointContext) context; log.info("XlmServerServiceBindingImpl: Init called, service context"+ toString()); BasicConfigurator.configure(); public void destroy () { log.info("XlmServerServiceBindingImpl: destroy called"); } public void finalize () { log.info("XlmServerServiceBindingImpl: finalize called"); } } Thank you very much for your help! Joan. -----Original Message----- From: Glen Daniels [mailto:glen@thoughtcraft.com] Sent: 29 November 2003 06:45 To: axis-dev@ws.apache.org Subject: Re: Bug#: 11815 ServiceLifecycle.destroy() never called when session is destroyed Hi folks: Sorry, just tuning in to this thread. Um, this problem has actually already been fixed. The AxisHttpSessionListener is checked in, correctly dispatches session destroy events to any session-controlled object which implements ServiceLifecycle, and the appropriate changes have been made to the default web.xml. This stuff is all in the current CVS. Have you tried out the CVS version, Joan? If something isn't working for you, we'd like to know about it. Thanks, --Glen ----- Original Message ----- From: "Joan Pont" To: Sent: Friday, November 28, 2003 12:52 PM Subject: RE: Bug#: 11815 ServiceLifecycle.destroy() never called when session is destroyed > Steve, > Sorry, I'm quite new in Axis. At the moment I'm just evaluating it > to be able to see if we can use it in our product. > And for us it is essential to know or to be notified when a session > has terminated - the client leaves or the connection drops. > > Could you provide more details on how to do what you mention below? > > The appropriate listener is in transports.http, it just needs to be > wired in and tested. That's right: tested. Think of a good service tha > can test that sessions are cleaned up and then implement it and the > client side stuff. > > I suppose that you are referring to class HttpMessageExchange in > org.apache.axis.ime.internal.transports.http > Perhaps I'm being blind here, but I don't see how to be notified of > session lifecycle events here. How should I implement the Interface > MessageExchangeEvent? > I've got a service running now and I would be able to test that with > session enabled clients. > > As well, if possible we'd like something that is not completely Axis > specific. > Would it be possible to do the same with the Axis implementation of > the standard JAX-RPC? (I getting the ServiceLifecycle working seems > important) > > Please detailed help of how to achieve that would be really > appreciated. > > Thanks again. > Joan. > > > -----Original Message----- > From: Steve Loughran [mailto:steve_l@iseran.com] > Sent: 27 November 2003 20:16 > To: axis-dev@ws.apache.org > Subject: Re: Bug#: 11815 ServiceLifecycle.destroy() never called when ses > sion is destroyed > > Joan Pont wrote: > > > Thanks Steve, > > Could you please explain in more detail your paragraph? > > > > as axis 1.2 is servlet2.3+, we dont need the housekeeping, we can use > > servlet lifecycle events, we just need someone to write the code and > > web.xml changes to do this. > > > > Does it mean that with Axis 1.2 if the user implements the code > > for servlet lifecycle event it will correctly call the > > sessionCreated/sessionDestroyed? How will this be done? > > > The appropriate listener is in transports.http, it just needs to be > wired in and tested. That's right: tested. Think of a good service tha > can test that sessions are cleaned up and then implement it and the > client side stuff. > > > > > > > Is there another way around so I can free session allocated > > resources when the session terminates from my > > MyServiceServiceBindingImpl class that is auto-generated by the Axis > > WSDL2Java emitter? > > > > When will axis 1.2 be out? > > when it is ready. It goes into alpha soonish. But dont expect Axis1.2 to > meet your needs without help: in the open source world, you have to help > to get products where you want them to be. > > > Thanks, > > Joan. > > > > > > -----Original Message----- > > From: Steve Loughran [mailto:steve_l@iseran.com] > > Sent: 26 November 2003 22:58 > > To: Pont, Joan [MOP:GM12:EXCH] > > Cc: 'gdaniels@apache.org'; 'stevel@apache.org'; 'st946tbf@drexel.edu' > > Subject: Re: Bug#: 11815 ServiceLifecycle.destroy() never called when > > session is destroyed > > > > Joan Pont > > > Hi, > > > I've seen the problem with the ServiceLifecycle.destroy() never > > > being called when session is destroyed has been fixed. > > > > > > Is it possible to obtain the source code for that fix? Which > > > ones are the files involved? > > > Is there another way around so I can free session allocated > > > resources when the session terminates from my > > > MyServiceServiceBindingImpl class that is auto-generated by the Axis > > > WSDL2Java emitter? > > > > > > I need to know/be notified when a session has been terminated > > > within the Axis code. > > > Many thanks, > > > Joan. > > > > > > > I dont think a fix for this exists; I havent written a complete one, > > though had some old housekeeping code that could be used to trigger > > cleanup. > > > > as axis 1.2 is servlet2.3+, we dont need the housekeeping, we can use > > servlet lifecycle events, we just need someone to write the code and > > web.xml changes to do this. > > > > which is where, in the open source world, you come in. > > > > I would recommend you get on the Axis dev mail list, discuss this defect > > and work with people on the list (myself included), to get the fix into > > Axis1.2, which will be going out soon. > > > > -steve > > > > > ------_=_NextPart_001_01C3B827.3AF48BAA Content-Type: text/html Content-Transfer-Encoding: quoted-printable RE: Bug#: 11815 ServiceLifecycle.destroy() never called when = session is destroyed

Hi Glen,

        I've built = the *.jar files with the latest CVS version. I've copied them from the = /build/lib directory to tomcat's lib directory (that's on the classpath = for Axis) from a previously installed Axis version1.1

        I've = changed the web.xml file (got it from CVS).
        Is there = anything else that should be done?

        Could you = please tell me which ones are the java files and the config files that = must be replaced?  So I can patch the release Version Axis 1.1, = instead of building a new one.

        At the = moment I get the init called every time there is a new client = connecting for the fist time but I don't get calls to finalize/destroy = (see the XlmServerServiceBindingImpl.java below.

        Any ideas? =
        I've got = a session enabled client -based on cookies- that sends multiple = requests and then terminates. I've waited for more than the 5 minutes = session timeout.        

        I don't = even get calls to finalize when I shutdown TOMCAT.

        I get the = following in the Catalina.out
WebappClassLoader: = validateJarFile(/mdn05/gembuild/3rdparty/jakarta-tomcat-4.0/jakarta-tomc= at-4.1.27/webapps/axis/WEB-INF/lib/servlet.jar) - jar not loaded. See = Servlet Spec 2.3, section 9.7.2. Offending class: = javax/servlet/Servlet.class

        Is it a = problem?

        In the = deployment descriptor of I've got Session scope.
        The = ServiceBindingImpl is as follows:

/**
 * XlmServerServiceBindingImpl.java
 *
 * This file was auto-generated from = WSDL
 * by the Apache Axis WSDL2Java emitter.
 */

package com.nortelnetworks.gem18pi;

import java.rmi.Remote;
import java.rmi.Remote.*;
import javax.xml.rpc.server.ServiceLifecycle;
import = javax.xml.rpc.server.ServletEndpointContext;
import = javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServlet;
import javax.servlet.ServletConfig;
import javax.servlet.*;
import java.security.Principal;
import javax.xml.rpc.handler.*;
import javax.xml.rpc.Call;
import org.apache.commons.logging.Log;
import org.apache.axis.components.logger.LogFactory;<= /FONT>
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
   

public class XlmServerServiceBindingImpl implements = com.nortelnetworks.gem18pi.XlmServerServicePortType, = ServiceLifecycle{

    private ServletEndpointContext = serviceContext;
    private static Log log =3D = LogFactory.getLog(XlmServerServiceBindingImpl.class.getName());

    public void init (java.lang.Object = context) {
      serviceContext=3D = (ServletEndpointContext) context;
      = log.info("XlmServerServiceBindingImpl: Init called, service = context"+ toString());
      = BasicConfigurator.configure();

    public void destroy () {
      = log.info("XlmServerServiceBindingImpl: destroy = called");
    }
    public void finalize () {
      = log.info("XlmServerServiceBindingImpl: finalize = called");
    }
}

Thank you very much for your help!
Joan.  
       =20


-----Original Message-----
From: Glen Daniels [mailto:glen@thoughtcraft.com] =
Sent: 29 November 2003 06:45
To: axis-dev@ws.apache.org
Subject: Re: Bug#: 11815 ServiceLifecycle.destroy() = never called when session is destroyed

Hi folks:

Sorry, just tuning in to this thread.  Um, this = problem has actually already
been fixed.  The AxisHttpSessionListener is = checked in, correctly dispatches
session destroy events to any session-controlled = object which implements
ServiceLifecycle, and the appropriate changes have = been made to the default
web.xml.  This stuff is all in the current = CVS.

Have you tried out the CVS version, Joan?  If = something isn't working for
you, we'd like to know about it.

Thanks,
--Glen

----- Original Message -----
From: "Joan Pont" = <jpont@nortelnetworks.com>
To: <axis-dev@ws.apache.org>
Sent: Friday, November 28, 2003 12:52 PM
Subject: RE: Bug#: 11815 ServiceLifecycle.destroy() = never called when
session is destroyed


> Steve,
> Sorry, I'm quite new in Axis. At the moment I'm = just evaluating it
> to be able to see if we can use it in our = product.
> And for us it is essential to know or to be = notified when a session
> has terminated - the client leaves or the = connection drops.
>
> Could you provide more details on how to do = what you mention below?
>
> The appropriate listener is in transports.http, = it just needs to be
> wired in and tested. That's right: tested. = Think of a good service tha
> can test that sessions are cleaned up and then = implement it and the
> client side stuff.
>
> I suppose that you are referring to class = HttpMessageExchange in
> = org.apache.axis.ime.internal.transports.http
> Perhaps I'm being blind here, but I don't see = how to be notified of
> session lifecycle events here. How should I = implement the Interface
> MessageExchangeEvent?
> I've got a service running now and I would be = able to test that with
> session enabled clients.
>
> As well, if possible we'd like something that = is not completely Axis
> specific.
> Would it be possible to do the same with the = Axis implementation of
> the standard JAX-RPC? (I getting the = ServiceLifecycle working seems
> important)
>
> Please detailed help of how to achieve that = would be really
> appreciated.
>
> Thanks again.
> Joan.
>
>
> -----Original Message-----
> From: Steve Loughran [mailto:steve_l@iseran.com]=
> Sent: 27 November 2003 20:16
> To: axis-dev@ws.apache.org
> Subject: Re: Bug#: 11815 = ServiceLifecycle.destroy() never called when ses
> sion is destroyed
>
> Joan Pont wrote:
>
> > Thanks Steve,
> = >         Could you please = explain in more detail your paragraph?
> >
> > as axis 1.2 is servlet2.3+, we dont need = the housekeeping, we can use
> > servlet lifecycle events, we just need = someone to write the code and
> > web.xml changes to do this.
> >
> = >         Does it mean that = with Axis 1.2 if the user implements the code
> > for servlet lifecycle event it will = correctly call the
> > sessionCreated/sessionDestroyed? How will = this be done?
>
>
> The appropriate listener is in transports.http, = it just needs to be
> wired in and tested. That's right: tested. = Think of a good service tha
> can test that sessions are cleaned up and then = implement it and the
> client side stuff.
>
> >
> >
> = >         Is there another = way around so I can free session allocated
> > resources when the session terminates from = my
> > MyServiceServiceBindingImpl class that is = auto-generated by the Axis
> > WSDL2Java emitter?
> >
> = >         When will axis 1.2 = be out?
>
> when it is ready. It goes into alpha soonish. = But dont expect Axis1.2 to
> meet your needs without help: in the open = source world, you have to help
> to get products where you want them to = be.
>
> > Thanks,
> > Joan.
> >
> >
> > -----Original Message-----
> > From: Steve Loughran [mailto:steve_l@iseran.com]=
> > Sent: 26 November 2003 22:58
> > To: Pont, Joan [MOP:GM12:EXCH]
> > Cc: 'gdaniels@apache.org'; = 'stevel@apache.org'; 'st946tbf@drexel.edu'
> > Subject: Re: Bug#: 11815 = ServiceLifecycle.destroy() never called when
> > session is destroyed
> >
> > Joan Pont
> >  > Hi,
> >  = >         I've seen the = problem with the ServiceLifecycle.destroy()
never
> >  > being called when session is = destroyed has been fixed.
> >  >
> >  = >         Is it possible to = obtain the source code for that fix? Which
> >  > ones are the files = involved?
> >  = >         Is there another = way around so I can free session allocated
> >  > resources when the session = terminates from my
> >  > MyServiceServiceBindingImpl = class that is auto-generated by the Axis
> >  > WSDL2Java emitter?
> >  >
> >  = >         I need to know/be = notified when a session has been terminated
> >  > within the Axis code.
> >  > Many thanks,
> >  > Joan.
> >  >
> >
> > I dont think a fix for this exists; I = havent written a complete one,
> > though had some old housekeeping code that = could be used to trigger
> > cleanup.
> >
> > as axis 1.2 is servlet2.3+, we dont need = the housekeeping, we can use
> > servlet lifecycle events, we just need = someone to write the code and
> > web.xml changes to do this.
> >
> > which is where, in the open source world, = you come in.
> >
> > I would recommend you get on the Axis dev = mail list, discuss this defect
> > and work with people on the list (myself = included), to get the fix into
> > Axis1.2, which will be going out = soon.
> >
> > -steve
> >
>
>
>

------_=_NextPart_001_01C3B827.3AF48BAA--