/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package javax.jbi.component; import javax.jbi.JBIException; import javax.management.ObjectName; /** * This interface is implemented by a JBI Component to provide any * special processing required at install/uninstall time. The methods * defined here are called by the JBI implementation during the installation * (or uninstallation) of the component that, among other things, supplies * an implementation of this interface. * * Initialization/cleanup tasks such as creation/deletion of directories, * files, and database tables can be done by the onInstall() and onUninstall() * methods, respectively. This also allows the component to terminate the * installation or uninstallation in the event of an error. * * After calling onInstall() or onUninstall(), regardless of outcome, the JBI * implementation must call the cleanUp() method afterwards. Similarly, if * init(InstallationContext) fails with an exception, the JBI implementation * must call the cleanUp() method. * * Component implementors should note that there is no guarantee that the same * instance of its Bootstrap implementation will be used during both install * and uninstall operations on the component. Data that need to be retained * between installation-time and uninstallation-time must be persisted in such * as fashion that a separate instance of the bootstrap class can find them, * despite component or system shutdown. * * @author JSR208 Exert Group */ public interface Bootstrap { /** * Initializes the installation environment for a component. This method is * expected to save any information from the installation context that may * be needed by other methods. * * If the component needs to register an optional installer configuration MBean, * it MUST do so during execution of this method, or the getExtensionMBean() * method. * * This method must be called after the installation root (available through * the installContext parameter) is prepared. * @param installContext the context containing information from the install * command and from the component installation ZIP file; * this must be non-null. * @throws JBIException when there is an error requiring that the installation * be terminated */ void init(InstallationContext installContext) throws JBIException; /** * Cleans up any resources allocated by the bootstrap implementation, * including performing deregistration of the extension MBean, if applicable. * * This method must be called after the onInstall() or onUninstall() method * is called, whether it succeeds or fails. It must be called after init() is * called, if init() fails by throwing an exception. * * @throws JBIException if the bootstrap cannot clean up allocated resources */ void cleanUp() throws JBIException; /** * Obtains the ObjectName of the optional installer configuration MBean. If * none is provided by this component, this method must return null. * * This method must be called before onInstall() (or onUninstall()) is called * by the JBI implementation. * * @return ObjectName of the optional installer configuration MBean; returns null * if there is no such MBean */ ObjectName getExtensionMBeanName(); /** * Called at the beginning of installation of a component to perform any special * installation tasks required by the component. * * This method must not be called if the init() method failed with an exception. * * @throws JBIException when there is an error requiring that the installation be * terminated */ void onInstall() throws JBIException; /** * Called at the beginning of uninstallation of a component to perform any special * uninstallation tasks required by the component. * * This method must not be called if the init() method failed with an exception. * * @throws JBIException when there is an error requiring that the uninstallation be * terminated. */ void onUninstall() throws JBIException; }