001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)MessageExchangeFactory.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: package javax.jbi.messaging;
030:
031: import java.net.URI;
032:
033: import javax.xml.namespace.QName;
034:
035: /** A message exchange factory is used used to create new instances of
036: * MessageExchange. Service consumers use these factories to create message
037: * exchanges when initiating a new service request. Message exchange factories
038: * are created using the javax.jbi.component.ComponentContext given to the
039: * component during its initialization (see javax.jbi.component.ComponentLifeCycle ).
040: * There are a variety of ways to creating such factories, each of which creates
041: * a context that is used to provide some of the default properties of
042: * MessageExchange instances created by the factory instances. For example,
043: * a factory can be created for a particular endpoint, ensuring that all
044: * exchanges created by the factory have that endpoint set as the default
045: * endpoint property of the exchange. This allows components to retain
046: * factories as a way of aligning internal processing context with the context
047: * contained in the factory, ensuring that the exchanges created consistently
048: * reflect that context.
049: * @author JSR208 Expert Group
050: */
051: public interface MessageExchangeFactory {
052: /** Creates a new MessageExchange instance used to initiate a service
053: * invocation. JBI defines a set of four basic message exchange types,
054: * corresponding to the predefined in-* WSDL 2.0 Message Exchange Patterns.
055: * @param serviceName name of the service to be invoked
056: * @param operationName name of the operation to be invoked
057: * @return new message exchange, initialized for invoking the given
058: * service and operation
059: * @throws MessagingException if the given service or operation are not
060: * registered with the NMR or the factory was created for a particular
061: * interface, and the given serviceName does not implement that interface.
062: */
063: MessageExchange createExchange(QName serviceName,
064: QName operationName) throws MessagingException;
065:
066: /** Creates a new MessageExchange instance used to initiate a service
067: * invocation. JBI defines a set of eight fundamental message exchange
068: * types which are created using binding and engine delivery channels. This
069: * base method is provided for extensibility, to satisfy the need for
070: * vendor-specific message exchange patterns. The registration and
071: * administration of these patterns is not addressed by JBI.
072: * @param pattern message exchange pattern
073: * @return new message exchange
074: * @throws MessagingException specified pattern is not registered to a
075: * message exchange type
076: */
077: MessageExchange createExchange(URI pattern)
078: throws MessagingException;
079:
080: /** Convenience method that creates an In-Only message exchange.
081: * @return new In-Only message exchange
082: * @throws MessagingException failed to create exchange
083: */
084: InOnly createInOnlyExchange() throws MessagingException;
085:
086: /** Convenience method that creates an In-Optional-Out message exchange.
087: * @return new In-Optional-Out message exchange
088: * @throws MessagingException failed to create exchange
089: */
090: InOptionalOut createInOptionalOutExchange()
091: throws MessagingException;
092:
093: /** Convenience method that creates an In-Out message exchange.
094: * @return new In-Out message exchange
095: * @throws MessagingException failed to create exchange
096: */
097: InOut createInOutExchange() throws MessagingException;
098:
099: /** Convenience method that creates an Robust-In-Only message exchange.
100: * @return new Robust-In-Only message exchange
101: * @throws MessagingException failed to create exchange
102: */
103: RobustInOnly createRobustInOnlyExchange() throws MessagingException;
104: }
|