001    /*
002     * Copyright 2001-2004 The Apache Software Foundation.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package javax.xml.rpc.server;
017    
018    import javax.xml.rpc.ServiceException;
019    
020    /**
021     * The <code>javax.xml.rpc.server.ServiceLifecycle</code> defines a lifecycle interface for a
022     * JAX-RPC service endpoint. If the service endpoint class implements the
023     * <code>ServiceLifeycle</code>  interface, the servlet container based JAX-RPC runtime system
024     * is required to manage the lifecycle of the corresponding service endpoint objects.
025     *
026     * @version 1.0
027     */
028    public interface ServiceLifecycle {
029    
030        /**
031         * Used for initialization of a service endpoint. After a service
032         * endpoint instance (an instance of a service endpoint class) is
033         * instantiated, the JAX-RPC runtime system invokes the
034         * <code>init</code> method. The service endpoint class uses the
035         * <code>init</code> method to initialize its configuration
036         * and setup access to any external resources. The context parameter
037         * in the <code>init</code> method enables the endpoint instance to
038         * access the endpoint context provided by the underlying JAX-RPC
039         * runtime system.
040         * <p>
041         * The init method implementation should typecast the context
042         * parameter to an appropriate Java type. For service endpoints
043         * deployed on a servlet container based JAX-RPC runtime system,
044         * the <code>context</code> parameter is of the Java type
045         * <code>javax.xml.rpc.server.ServletEndpointContext</code>. The
046         * <code>ServletEndpointContext</code> provides an endpoint context
047         * maintained by the underlying servlet container based JAX-RPC
048         * runtime system
049         * <p>
050         * @param context Endpoint context for a JAX-RPC service endpoint
051         * @throws ServiceException  If any error in initialization of the service endpoint; or if any
052         * illegal context has been provided in the init method
053         */
054        public abstract void init(Object context) throws ServiceException;
055    
056        /**
057         * JAX-RPC runtime system ends the lifecycle of a service endpoint instance by
058         * invoking the destroy method. The service endpoint releases its resources in
059         * the implementation of the destroy method.
060         */
061        public abstract void destroy();
062    }