A few weeks ago I sent out this email expressing concern regarding the 
association of the the Spring destroy() method with the EndpointImpl.stop() 
method. As stated below, I don't think that stop() is the correct method to 
call as it does not seem to break down the infrastructure for an endpoint. As a 
result, if you were to destroy a Spring ApplicationContext containing a 
jaxws:endpoint, I don't think that the CXF infrastructure for an Endpoint would 
be truly torn down, leaving resources still active even though the endpoint is 
not reachable.
Regards,
Seumas

-----Original Message-----
From: Soltysik, Seumas [mailto:[EMAIL PROTECTED]
Sent: Wednesday, May 16, 2007 5:21 PM
To: [email protected]
Subject: Proper destroy() method for jaxws:endpoint


The current designated destroy method for the jaxws:endpoint spring bean is 
EndpointImpl.stop(). The effect of calling this stop() method is to remove the 
endpoint from an endpoints list. 

        if (mo instanceof MultipleEndpointObserver) {
            ((MultipleEndpointObserver) mo).getEndpoints().remove(endpoint);
        } else {
            getDestination().setMessageObserver(null);
        }

However, it does not actually shutdown/deactive the associated Destination it 
only diables the endpoint. I am not sure that this makes sense to me. When the 
destroy method is called on the jaxws:endpoint bean, should the endpoint simply 
be made unavailable or should the infrastructure for that endpoint be torn down?

Should the EndpointImpl.stop() method be changed to deactivate the Destination 
or does it need to keep the same behavior per the JAX-WS spec? Do we need to 
add a special EndpointImpl.shutdown() method and use this as the jaxws:endpoint 
destroy() method?

Regards,
Seumas

Reply via email to