/* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package javax.xml.ws; import java.util.concurrent.Future; /** The <code>Dispatch</code> interface provides support * for the dynamic invocation of a service endpoint operations. The * <code>javax.xml.ws.Service</code> * class acts as a factory for the creation of <code>Dispatch</code> * instances. * * @since JAX-WS 2.0 **/ public interface Dispatch<T> extends BindingProvider { /** Invoke a service operation synchronously. * * The client is responsible for ensuring that the <code>msg</code> object * when marshalled is formed according to the requirements of the protocol * binding in use. * * @param msg An object that will form the message or payload of * the message used to invoke the operation. * @return The response message or message payload to the * operation invocation. * @throws WebServiceException If a fault occurs during communication with * the service * @throws WebServiceException If there is any error in the configuration of * the <code>Dispatch</code> instance **/ public T invoke(T msg); /** Invoke a service operation asynchronously. The * method returns without waiting for the response to the operation * invocation, the results of the operation are obtained by polling the * returned <code>Response</code>. * <p> * The client is responsible for ensuring that the <code>msg</code> object * when marshalled is formed according to the requirements of the protocol * binding in use. * * @param msg An object that will form the message or payload of * the message used to invoke the operation. * @return The response message or message payload to the * operation invocation. * @throws WebServiceException If there is any error in the configuration of * the <code>Dispatch</code> instance **/ public Response<T> invokeAsync(T msg); /** Invoke a service operation asynchronously. The * method returns without waiting for the response to the operation * invocation, the results of the operation are communicated to the client * via the passed in <code>handler</code>. * <p> * The client is responsible for ensuring that the <code>msg</code> object * when marshalled is formed according to the requirements of the protocol * binding in use. * * @param msg An object that will form the message or payload of * the message used to invoke the operation. * @param handler The handler object that will receive the * response to the operation invocation. * @return A <code>Future</code> object that may be used to check the status * of the operation invocation. This object MUST NOT be used to try to * obtain the results of the operation - the object returned from * <code>Future<?>.get()</code> is implementation dependent * and any use of it will result in non-portable behaviour. * @throws WebServiceException If there is any error in the configuration of * the <code>Dispatch</code> instance **/ public Future<?> invokeAsync(T msg, AsyncHandler<T> handler); /** Invokes a service operation using the one-way * interaction mode. The operation invocation is logically non-blocking, * subject to the capabilities of the underlying protocol, no results * are returned. When * the protocol in use is SOAP/HTTP, this method MUST block until * an HTTP response code has been received or an error occurs. * <p> * The client is responsible for ensuring that the <code>msg</code> object * when marshalled is formed according to the requirements of the protocol * binding in use. * * @param msg An object that will form the message or payload of * the message used to invoke the operation. * @throws WebServiceException If there is any error in the configuration of * the <code>Dispatch</code> instance or if an error occurs during the * invocation. **/ public void invokeOneWay(T msg); }