## javax.jbi.component
Interface ComponentContext

    public interface ComponentContext

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

Method Summary
`ServiceEndpoint` `activateEndpoint(javax.xml.namespace.QName serviceName, java.lang.String endpointName)` Activates the named endpoint with the NMR.
`void` `deactivateEndpoint(ServiceEndpoint endpoint)` Deactivates the given endpoint with the NMR.
`void` `deregisterExternalEndpoint(ServiceEndpoint externalEndpoint)` Deregisters the given external endpoint with the NMR.
`java.lang.String` `getComponentName()` Get the unique component name of this component, ass assigned by the identification section of this component's installation descriptor.
`DeliveryChannel` `getDeliveryChannel()` Get a channel for this component to use to communicate with the Normalized Message Router.
`ServiceEndpoint` `getEndpoint(javax.xml.namespace.QName service, java.lang.String name)` Get the service endpoint for the named activated endpoint, if any.
`org.w3c.dom.Document` `getEndpointDescriptor(ServiceEndpoint endpoint)` Retrieve the service description metadata for the specified endpoint.
`ServiceEndpoint[]` `getEndpoints(javax.xml.namespace.QName interfaceName)` Queries the NMR for active endpoints that implement the given interface.
`ServiceEndpoint[]` `getEndpointsForService(javax.xml.namespace.QName serviceName)` Queries the NMR for active endpoints belonging to the given service.
`ServiceEndpoint[]` `getExternalEndpoints(javax.xml.namespace.QName interfaceName)` Queries the NMR for external endpoints that implement the given interface name.
`ServiceEndpoint[]` `getExternalEndpointsForService(javax.xml.namespace.QName serviceName)` Queries the NMR for external endpoints that are part of the given service.
`java.lang.String` `getInstallRoot()` Get the installation root directory path for this component.
`java.util.logging.Logger` `getLogger(java.lang.String suffix, java.lang.String resourceBundleName)` Get a logger instance from JBI.
`MBeanNames` `getMBeanNames()` Get a reference to the MBeanNames creator for use in creating custom MBean names.
`javax.management.MBeanServer` `getMBeanServer()` Get the JMX MBean server used to register all MBeans in the JBI environment.
`javax.naming.InitialContext` `getNamingContext()` Get the JNDI naming context for this component.
`java.lang.Object` `getTransactionManager()` Get the TransactionManager for this implementation.
`java.lang.String` `getWorkspaceRoot()` Get the root directory path for this component's private workspace.
`void` `registerExternalEndpoint(ServiceEndpoint externalEndpoint)` Registers the given external endpoint with the NMR.
`ServiceEndpoint` `resolveEndpointReference(org.w3c.dom.DocumentFragment epr)` Resolve the given endpoint reference into a service endpoint.

Method Detail

### activateEndpoint

    ServiceEndpoint activateEndpoint(javax.xml.namespace.QName serviceName,
                                     java.lang.String endpointName)
                                     throws JBIException

  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 `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.

  Parameters:
    `serviceName` - qualified name of the service the endpoint exposes; must be non-null.
    `endpointName` - the name of the endpoint to be activated; must be non-null and non-empty.
  Returns:
    a reference to the activated endpoint; must be non-null.
  Throws:
    `JBIException` - if the endpoint cannot be activated.

### deactivateEndpoint

    void deactivateEndpoint(ServiceEndpoint endpoint)
                            throws 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.

  Parameters:
    `endpoint` - reference to the endpoint to be deactivated; must be non-null.
  Throws:
    `JBIException` - if the endpoint cannot be deactivated.

### registerExternalEndpoint

    void registerExternalEndpoint(ServiceEndpoint externalEndpoint)
                                  throws JBIException

  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).

  Parameters:
    `externalEndpoint` - the external endpoint to be registered, must be non-null.
  Throws:
    `JBIException` - if an external endpoint with the same name is already registered, by this or another component.

### deregisterExternalEndpoint

    void deregisterExternalEndpoint(ServiceEndpoint externalEndpoint)
                                    throws 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.

  Parameters:
    `externalEndpoint` - the external endpoint to be deregistered; must be non-null.
  Throws:
    `JBIException` - if the given external endpoint was not previously registered.

### resolveEndpointReference

    ServiceEndpoint resolveEndpointReference(org.w3c.dom.DocumentFragment epr)

  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.

  Parameters:
    `epr` - endpoint reference as an XML fragment; must be non-null.
  Returns:
    the service endpoint corresponding to the given endpoint reference; `null` if the reference cannot be resolved.

### getComponentName

    java.lang.String getComponentName()

  Get the unique component name of this component, ass assigned by the identification section of this component's installation descriptor.

  Returns:
    the component name; must be non-null and non-empty.

### getDeliveryChannel

    DeliveryChannel getDeliveryChannel()
                                       throws MessagingException

  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.

  Returns:
    the delivery channel for this component; must be non-null.
  Throws:
    `MessagingException` - if a channel has already been opened, but not yet closed.

### getEndpoint

    ServiceEndpoint getEndpoint(javax.xml.namespace.QName service,
                                java.lang.String name)

  Get the service endpoint for the named activated endpoint, if any.

  Parameters:
    `service` - qualified-name of the endpoint's service; must be non-null.
    `name` - name of the endpoint; must be non-null.
  Returns:
    the named endpoint, or `null` if the named endpoint is not activated.

### getEndpointDescriptor

    org.w3c.dom.Document getEndpointDescriptor(ServiceEndpoint endpoint)
                                               throws JBIException

  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.

  Parameters:
    `endpoint` - endpoint reference; must be non-null.
  Returns:
    metadata describing endpoint, or `null` if metadata is unavailable.
  Throws:
    `JBIException` - invalid endpoint reference.

### getEndpoints

    ServiceEndpoint[] getEndpoints(javax.xml.namespace.QName interfaceName)

  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 `registerExternalEndpoint(ServiceEndpoint)`.

  Parameters:
    `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.
  Returns:
    an array of available endpoints for the specified interface name; must be non-null; may be empty.

### getEndpointsForService

    ServiceEndpoint[] getEndpointsForService(javax.xml.namespace.QName serviceName)

  Queries the NMR for active endpoints belonging to the given service. This method does NOT include external endpoints (those registered using `registerExternalEndpoint(ServiceEndpoint)`.

  Parameters:
    `serviceName` - qualified name of the service that the endpoints are part of; must be non-null.
  Returns:
    an array of available endpoints for the specified service name; must be non-null; may be empty.

### getExternalEndpoints

    ServiceEndpoint[] getExternalEndpoints(javax.xml.namespace.QName interfaceName)

  Queries the NMR for external endpoints that implement the given interface name. This methods returns only registered external endpoints (see `registerExternalEndpoint(ServiceEndpoint)`.

  Parameters:
    `interfaceName` - qualified name of interface implemented by the endpoints; must be non-null.
  Returns:
    an array of available external endpoints for the specified interface name; must be non-null; may be empty.

### getExternalEndpointsForService

    ServiceEndpoint[] getExternalEndpointsForService(javax.xml.namespace.QName serviceName)

  Queries the NMR for external endpoints that are part of the given service.

  Parameters:
    `serviceName` - qualified name of service that contains the endpoints; must be non-null.
  Returns:
    an array of available external endpoints for the specified service name; must be non-null; may be empty.

### getInstallRoot

    java.lang.String getInstallRoot()

  Get the installation root directory path for this component.

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

  Returns:
    the installation root directory path, in platform-specific form; must be non-null and non-empty.

### getLogger

    java.util.logging.Logger getLogger(java.lang.String suffix,
                                       java.lang.String resourceBundleName)
                                       throws java.util.MissingResourceException,
                                              JBIException

  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.

  Parameters:
    `suffix` - for creating subloggers; use an empty string for the base component logger; must be non-null.
    `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.
  Returns:
    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.
    `JBIException` - if the resourceBundleName has changed from a previous invocation by this component of this method with the same suffix.

### getMBeanNames

    MBeanNames getMBeanNames()

  Get a reference to the MBeanNames creator for use in creating custom MBean names.

  Returns:
    reference to the MBeanNames creator; must be non-null.

### getMBeanServer

    javax.management.MBeanServer getMBeanServer()

  Get the JMX MBean server used to register all MBeans in the JBI environment.

  Returns:
    a reference to the MBean server; must be non-null.

### getNamingContext

    javax.naming.InitialContext getNamingContext()

  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.

  Returns:
    the JNDI naming context; must be non-null.

### getTransactionManager

    java.lang.Object getTransactionManager()

  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.

  Returns:
    A TransactionManager instance, or `null` if none is available in the execution environment.

### getWorkspaceRoot

    java.lang.String getWorkspaceRoot()

  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.

  Returns:
    the private workspace root path, in platform-specific form; must be non-null and non-empty.

${build-info}

${copyright}