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

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

The newest version!
/*
 * 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.messaging.MessageExchange;
import javax.jbi.servicedesc.ServiceEndpoint;

import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;

/**
 * This interface, implemented by component implementations, allows
 * the JBI implementation to query the component for various types
 * of information. This includes:
 * 
    *
  • The component's life cycle control interface.
  • *
  • The component's service unit manager, for handling deployments.
  • *
  • A method for querying service metadata describing services * provided by this component.
  • *
  • "Policy" methods that are called by the JBI implementation to * query if proposed matches of this component to a provider (or * consumer) are acceptable, according to this component's policies.
  • *
  • Endpoint reference (EPR) resolution. Some components will provide * the ability to resolve EPRs (typically binding components). This * ability to resolve EPRs is used by JBI to facilitate resolution of * EPRs received by service consumers.
  • * * The name of the class that implements this interface for a component is * specified in the installation descriptor for that component. * * @author JSR208 Exert Group */ public interface Component { /** * Get the life cycle control interface for this component. This interface * allows the JBI implementation to control the running state of this component. * * This method must be called before any other methods of this interface are * called. In addition, the JBI implementation must call the init() method of * the component life cycle returned by this method before calling any other * methods on this interface, or the component life cycle interface. * * @return the life cycle control interface for this component; must be non-null. */ ComponentLifeCycle getLifeCycle(); /** * Get the Service Unit manager for this component. If this component does not * support deployments, it must return null. * * @return the ServiceUnitManager for this component, or null if there is none. */ ServiceUnitManager getServiceUnitManager(); /** * Retrieves a DOM representation containing metadata which describes the service * provided by this component, through the given endpoint. The result can use WSDL * 1.1 or WSDL 2.0. * * @param endpoint the service endpoint. * @return the description for the specified service endpoint. */ Document getServiceDescription(ServiceEndpoint endpoint); /** * This method is called by JBI to check if this component, in the role of provider * of the service indicated by the given exchange, can actually perform the operation * desired. * * @param endpoint the endpoint to be used by the consumer; must be non-null. * @param exchange the proposed message exchange to be performed; must be non-null. * @return true if this provider component can interact with the described consumer * to perform the given exchange. */ boolean isExchangeWithConsumerOkay(ServiceEndpoint endpoint, MessageExchange exchange); /** * This method is called by JBI to check if this component, in the role of consumer * of the service indicated by the given exchange, can actually interact with the * provider properly. The provider is described by the given endpoint and the service * description supplied by that endpoint. * * @param endpoint the endpoint to be used by the provider; must be non-null. * @param exchange the proposed message exchange to be performed; must be non-null. * @return true if this consumer component can interact with the described provider * to perform the given exchange. */ boolean isExchangeWithProviderOkay(ServiceEndpoint endpoint, MessageExchange exchange); /** * Resolve the given endpoint reference. This is called by JBI when it is attempting to * resolve the given EPR on behalf of a component. * * If this component returns a non-null result, it must conform to the following: *
      *
    • This component implements the ServiceEndpoint returned.
    • *
    • The result must not be registered or activated with the JBI implementation.
    • *
    * * Dynamically resolved endpoints are distinct from static ones; they must not be activated * (see {@link javax.jbi.component.ComponentContext#activateEndpoint(javax.xml.namespace.QName, String)}), * nor registered (see {@link ComponentContext}) by components. They can only be used to address * message exchanges; the JBI implementation must deliver such exchanges to the component that * resolved the endpoint reference (see * {@link javax.jbi.component.ComponentContext#resolveEndpointReference(org.w3c.dom.DocumentFragment)}). * * @param epr the endpoint reference, in some XML dialect understood by the appropriate component * (usually a binding); must be non-null. * @return the service endpoint for the EPR; null if the EPR cannot be resolved by this component. */ ServiceEndpoint resolveEndpointReference(DocumentFragment epr); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy