blob: 46da2c64dd613bc3dabf44f17d58e89289c64a40 [file] [log] [blame]
/*
* Copyright 2006 The Apache Software Foundation.
* Copyright 2006 International Business Machines Corp.
*
* Licensed 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 org.apache.axis2.jaxws.core.controller;
import java.util.concurrent.Future;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.Response;
import org.apache.axis2.jaxws.core.InvocationContext;
/**
* The <tt>InvocationController</tt> is an interface for an entity used to
* invoke a target web service. All of the information that the
* InvocationController needs should exist within the InvocatonContext
* that is passed in to the various invoke methods.
*
* The request information is passed in within the InvocationContext. The
* InvocationController assumes that there is a MessageContext within that
* InvocationContext that is populated with all of the information that it
* needs to invoke. If not, an error will be returned. Once the response
* comes back, the information for that response will be held inside of the
* MessageContext representing the response, that exists in the
* InvocationContext.
*
* The InvocationController supports four different invocation patterns:
*
* 1) synchronous - This is represented by the {@link #invoke(InvocationContext)}
* method. This is a blocking, request/response call to the web service.
*
* 2) one-way - This is represented by the {@link #invokeOneWay(InvocationContext)}
* method. This is a one-way invocation that only returns errors related
* to sending the message. If an error occurs while processing, the client
* will not be notified.
*
* 3) asynchronous (callback) - {@link #invokeAsync(InvocationContext, AsyncHandler)}
*
* 4) asynchronous (polling) - {@link #invokeAsync(InvocationContext)}
*/
public interface InvocationController {
/**
* Performs a synchronous (blocking) invocation of a target service. The
* InvocationContext passed in should contain a valid MessageContext
* containing the properties and message to be sent for the request. The
* response contents will be processed and placed in the InvocationContext
* as well.
*
* @param ic
* @return
*/
public InvocationContext invoke(InvocationContext ic);
/**
* Performs a one-way invocation of the client. This is SHOULD NOT be a
* robust invocation, so any fault that occurs during the processing of
* the request will not be returned to the client. Errors returned to the
* client are problems that occurred during the sending of the message to
* the server.
*
* @param ic
*/
public void invokeOneWay(InvocationContext ic);
/**
* Performs an asynchronous (non-blocking) invocation of the client based
* on a callback model. The AsyncHandler that is passed in is the callback
* that the client programmer supplied when they invoked their JAX-WS
* Dispatch or their SEI-based dynamic proxy.
*
* @param ic
* @param callback
* @return
*/
public Response invokeAsync(InvocationContext ic);
/**
* Performs an asynchronous (non-blocking) invocation of the client based
* on a polling model. The Response object that is returned allows the
* client programmer to poll against it to see if a response has been sent
* back by the server.
*
* @param ic
* @return
*/
public Future<?> invokeAsync(InvocationContext ic, AsyncHandler asyncHandler);
}