All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.jbi.component.ComponentContext Maven / Gradle / Ivy

There is a newer version: 1.5.0
Show newest version
/**
 * @(#) ComponentContext.java
 *
 * PETALS - PETALS Services Platform.
 * Copyright (c) 2005 Fossil E-Commerce, http://www.fossilec.com/
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * -------------------------------------------------------------------------
 * $Id: ComponentContext.java 221 2006-04-14 12:45:33Z alouis $
 * -------------------------------------------------------------------------
 */

//
// This source code implements specifications defined by the Java
// Community Process. In order to remain compliant with the specification
// DO NOT add / change / or delete method signatures!
//

package javax.jbi.component;

/**
 * This interface provides access to data needed by a JBI component about the
 * JBI environment in which it is installed, as well providing the means to
 * allow the component to inform the JBI environment about services provided by
 * this component. This interface provides methods for the following functions:
 * 
    *
  • Get the DeliveryChannel for this component. This is required * to allow the component to send and receive message exchanges. *
  • Activate (and deactivate) service endpoints provided by * this component. *
  • Register (and deregister) external endpoints provided by * this component. *
  • Query available endpoints (internal and external). *
  • Query various data about the component, as installed in * the JBI environment (name, workspace root, install root, initial JNDI * context, MBean Server, Transaction Manager). *
  • Loggers. Obtain the component's logger and subloggers. *
  • MBean name creator. Access a utility for creating custom * MBean names. *
  • EPR Resolver. Ask JBI to resolve an endpoint reference * (EPR), converting it into a service endpoint. *
*

* Note: The term "NMR" (meaning Normalized Message Router) is used here to * refer to the messaging system of the JBI implementation. This term is used as * a synonym for the JBI implementation, and refers only to the logical message * routing functions of a JBI implementation. It is not meant to require that * JBI implementations literally have a subsystem named "NMR". * * @author JSR208 Expert Group */ public interface ComponentContext { /** * Activates the named endpoint with the NMR. Activation indicates to the * NMR that this component is ready to process requests sent to the named * endpoint. *

* Note that the JBI implementation may call this component's {@link * Component#getServiceDescription(ServiceEndpoint)} method before returning * from this method call; the component's implementation must be ready to * supply service description metadata before the result of this activation * call (a ServiceEndpoint) is known. * * @param serviceName * qualified name of the service the endpoint exposes; must be * non-null. * @param endpointName * the name of the endpoint to be activated; must be non-null and * non-empty. * @return a reference to the activated endpoint; must be non-null. * @throws javax.jbi.JBIException * if the endpoint cannot be activated. */ public javax.jbi.servicedesc.ServiceEndpoint activateEndpoint( javax.xml.namespace.QName serviceName, java.lang.String endpointName) throws javax.jbi.JBIException; /** * Deactivates the given endpoint with the NMR. Deactivation indicates to * the NMR that this component will no longer process requests sent to the * named endpoint. * * @param endpoint * reference to the endpoint to be deactivated; must be non-null. * @throws javax.jbi.JBIException * if the endpoint cannot be deactivated. */ public void deactivateEndpoint( javax.jbi.servicedesc.ServiceEndpoint endpoint) throws javax.jbi.JBIException; /** * Deregisters the given external endpoint with the NMR. This indicates to * the NMR that the given external endpoint can no longer be used as a proxy * for external service consumers to access an internal service of the same * service name. * * @param externalEndpoint * the external endpoint to be deregistered; must be non-null. * @throws javax.jbi.JBIException * if the given external endpoint was not previously registered. */ public void deregisterExternalEndpoint( javax.jbi.servicedesc.ServiceEndpoint externalEndpoint) throws javax.jbi.JBIException; /** * Get the unique component name of this component, as assigned by the * identification section of this component's installation descriptor. * * @return the component name; must be non-null and non-empty. */ public java.lang.String getComponentName(); /** * Get a channel for this component to use to communicate with the * Normalized Message Router. This channel must be used by the component to * send and receive message exchanges. * * @return the delivery channel for this component; must be non-null. * @throws javax.jbi.messaging.MessagingException * if a channel has already been opened, but not yet closed. */ public javax.jbi.messaging.DeliveryChannel getDeliveryChannel() throws javax.jbi.messaging.MessagingException; /** * Get the service endpoint for the named activated endpoint, if any. * * @param service * qualified-name of the endpoint's service; must be non-null. * @param name * name of the endpoint; must be non-null. * @return the named endpoint, or null if the named endpoint * is not activated. */ public javax.jbi.servicedesc.ServiceEndpoint getEndpoint( javax.xml.namespace.QName service, java.lang.String name); /** * TODO getEndpointDescriptor works only with implementation InternalEndpoint * Retrieve the service description metadata for the specified endpoint. *

* Note that the result can use either the WSDL 1.1 or WSDL 2.0 description * language. * * @param endpoint * endpoint reference; must be non-null. * @return metadata describing endpoint, or null if metadata * is unavailable. * @throws javax.jbi.JBIException * invalid endpoint reference. */ public org.w3c.dom.Document getEndpointDescriptor( javax.jbi.servicedesc.ServiceEndpoint endpoint) throws javax.jbi.JBIException; /** * Queries the NMR for active endpoints that implement the given interface. * This will return the endpoints for all services and endpoints that * implement the named interface (portType in WSDL 1.1). This method does * NOT include external endpoints (those registered using {@link * ComponentContext#registerExternalEndpoint(ServiceEndpoint)}. * * @param interfaceName * qualified name of interface/portType that is implemented by * the endpoint; if null then all activated * endpoints in the JBI environment must be returned. * @return ServiceEndpoint[] an array of available endpoints for the * specified interface name; must be non-null; may be empty. */ public javax.jbi.servicedesc.ServiceEndpoint[] getEndpoints( javax.xml.namespace.QName interfaceName); /** * Queries the NMR for active endpoints belonging to the given service. This * method does NOT include external endpoints (those registered using {@link * ComponentContext#registerExternalEndpoint(ServiceEndpoint)}. * * @param serviceName * qualified name of the service that the endpoints are part of; * must be non-null. * @return ServiceEndpoint[] array of available endpoints for the specified * an array of available endpoints for the specified service name; * must be non-null; may be empty. */ public javax.jbi.servicedesc.ServiceEndpoint[] getEndpointsForService( javax.xml.namespace.QName serviceName); /** * Queries the NMR for external endpoints that implement the given interface * name. This methods returns only registered external endpoints (see {@link * ComponentContext#registerExternalEndpoint(ServiceEndpoint)}. * * @param interfaceName * qualified name of interface implemented by the endpoints; must * be non-null. * @return an array of available external endpoints for the specified * interface name; must be non-null; may be empty. */ public javax.jbi.servicedesc.ServiceEndpoint[] getExternalEndpoints( javax.xml.namespace.QName interfaceName); /** * Queries the NMR for external endpoints that are part of the given * service. * * @param serviceName * qualified name of service that contains the endpoints; must be * non-null. * @return an array of available external endpoints for the specified * service name; must be non-null; may be empty. */ public javax.jbi.servicedesc.ServiceEndpoint[] getExternalEndpointsForService( javax.xml.namespace.QName serviceName); /** * Get the installation root directory path for this component. *

* This method MUST return the file path formatted for the underlying * platform. * * @return the installation root directory path, in platform-specific form; * must be non-null and non-empty. */ public java.lang.String getInstallRoot(); /** * TODO getLogger return a simple Logger, not integrated to the platform * Get a logger instance from JBI. Loggers supplied by JBI are guaranteed to * have unique names such that they avoid name collisions with loggers from * other components created using this method. The suffix parameter allows * for the creation of subloggers as needed. The JBI specification says * nothing about the exact names to be used, only that they must be unique * across components and the JBI implementation itself. * * @param suffix * for creating subloggers; use an empty string for the base * component logger; must be non-null. * @param resourceBundleName * name of ResourceBundle to be used for * localizing messages for the logger. May be null * if none of the messages require localization. The resource, if * non-null, must be loadable using the component's class loader * as the initiating loader. * @return a standard logger, named uniquely for this component (plus the * given suffix, if applicable); must be non-null. * @throws java.util.MissingResourceException * if the ResourceBundleName is non-null and no corresponding * resource can be found. * @throws javax.jbi.JBIException * if the resourceBundleName has changed from a previous * invocation by this component of this method with the same * suffix. */ public java.util.logging.Logger getLogger(java.lang.String suffix, java.lang.String resourceBundleName) throws java.util.MissingResourceException, javax.jbi.JBIException; /** * Get a reference to the MBeanNames creator for use in creating custom * MBean names. * * @return reference to the MBeanNames creator; must be non-null. */ public javax.jbi.management.MBeanNames getMBeanNames(); /** * Get the JMX MBean server used to register all MBeans in the JBI * environment. * * @return a reference to the MBean server; must be non-null. */ public javax.management.MBeanServer getMBeanServer(); /** * TODO getNamingContext not integrated * Get the JNDI naming context for this component. This context is a * standard JNDI InitialContext but its content will vary * based on the environment in which the JBI implementation is running. * * @return the JNDI naming context; must be non-null. */ public javax.naming.InitialContext getNamingContext(); /** * TODO getTransactionManager not integrated * Get the TransactionManager for this implementation. The instance returned * is an implementation of the standard JTA interface. If none is available, * this method returns null. *

* The object returned by this method is untyped, to allow this interface to * be compiled in environments that do not support JTA. If not null, the * object returned must be of type * javax.transaction.TransactionManager. *

* This downcast is necessary because JBI is used in environments that do * not support JTA (i.e., J2SE). Explicit use of JTA types would cause * compilation failures in such environments. * * @return A TransactionManager instance, or null if none is available in * the execution environment. */ public java.lang.Object getTransactionManager(); /** * Get the root directory path for this component's private workspace. *

* This method MUST return the file path formatted for the underlying * platform. *

* The returned value must indicate a valid file path that the component may * use to write files to, and read files from. * * @return the private workspace root path, in platform-specific form; must * be non-null and non-empty. */ public java.lang.String getWorkspaceRoot(); /** * Registers the given external endpoint with the NMR. This indicates to the * NMR that the given endpoint is used as a proxy for external service * consumers to access an internal service of the same service name (but a * different endpoint name). * * @param externalEndpoint * the external endpoint to be registered, must be non-null. * @throws javax.jbi.JBIException * if an external endpoint with the same name is already * registered, by this or another component. */ public void registerExternalEndpoint( javax.jbi.servicedesc.ServiceEndpoint externalEndpoint) throws javax.jbi.JBIException; /** * Resolve the given endpoint reference into a service endpoint. This is * called by the component when it has an EPR that it wants to resolve into * a service endpoint. *

* Note that the service endpoint returned refers to a dynamic endpoint; the * endpoint will exist only as long as this component retains a strong * reference to the object returned by this method. The endpoint may not be * included in the list of "activated" endpoints. * * @param epr * endpoint reference as an XML fragment; must be non-null. * @return the service endpoint corresponding to the given endpoint * reference; null if the reference cannot be resolved. */ public javax.jbi.servicedesc.ServiceEndpoint resolveEndpointReference( org.w3c.dom.DocumentFragment epr); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy