/* * 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.xml.rpc; import javax.xml.namespace.QName; import javax.xml.rpc.encoding.TypeMappingRegistry; import javax.xml.rpc.handler.HandlerRegistry; /** * <code>Service</code> class acts as a factory of the following: * <ul> * <li>Dynamic proxy for the target service endpoint. * <li>Instance of the type <code>javax.xml.rpc.Call</code> for * the dynamic invocation of a remote operation on the * target service endpoint. * <li>Instance of a generated stub class * </ul> * * @version $Rev$ $Date$ */ public interface Service { /** * The getPort method returns either an instance of a generated * stub implementation class or a dynamic proxy. A service client * uses this dynamic proxy to invoke operations on the target * service endpoint. The <code>serviceEndpointInterface</code> * specifies the service endpoint interface that is supported by * the created dynamic proxy or stub instance. * * @param portName Qualified name of the service endpoint in * the WSDL service description * @param serviceEndpointInterface Service endpoint interface * supported by the dynamic proxy or stub * instance * @return java.rmi.Remote Stub instance or dynamic proxy that * supports the specified service endpoint * interface * @throws ServiceException This exception is thrown in the * following cases: * <ul> * <li>If there is an error in creation of * the dynamic proxy or stub instance * <li>If there is any missing WSDL metadata * as required by this method * <li>Optionally, if an illegal * <code>serviceEndpointInterface</code> * or <code>portName</code> is specified * </ul> */ public java.rmi .Remote getPort(QName portName, Class serviceEndpointInterface) throws ServiceException; /** * The getPort method returns either an instance of a generated * stub implementation class or a dynamic proxy. The parameter * <code>serviceEndpointInterface</code> specifies the service * endpoint interface that is supported by the returned stub or * proxy. In the implementation of this method, the JAX-RPC * runtime system takes the responsibility of selecting a protocol * binding (and a port) and configuring the stub accordingly. * The returned <code>Stub</code> instance should not be * reconfigured by the client. * * @param serviceEndpointInterface Service endpoint interface * @return Stub instance or dynamic proxy that supports the * specified service endpoint interface * * @throws ServiceException <ul> * <li>If there is an error during creation * of stub instance or dynamic proxy * <li>If there is any missing WSDL metadata * as required by this method * <li>Optionally, if an illegal * <code>serviceEndpointInterface</code> * * is specified * </ul> */ public java.rmi.Remote getPort(Class serviceEndpointInterface) throws ServiceException; /** * Gets an array of preconfigured <code>Call</code> objects for * invoking operations on the specified port. There is one * <code>Call</code> object per operation that can be invoked * on the specified port. Each <code>Call</code> object is * pre-configured and does not need to be configured using * the setter methods on <code>Call</code> interface. * * <p>Each invocation of the <code>getCalls</code> method * returns a new array of preconfigured <code>Call</code> * * objects * * <p>This method requires the <code>Service</code> implementation * class to have access to the WSDL related metadata. * * @param portName Qualified name for the target service endpoint * @return Call[] Array of pre-configured Call objects * @throws ServiceException If this Service class does not * have access to the required WSDL metadata * or if an illegal <code>portName</code> is * specified. */ public Call[] getCalls(QName portName) throws ServiceException; /** * Creates a <code>Call</code> instance. * * @param portName Qualified name for the target service endpoint * @return Call instance * @throws ServiceException If any error in the creation of * the <code>Call</code> object */ public Call createCall(QName portName) throws ServiceException; /** * Creates a <code>Call</code> instance. * * @param portName Qualified name for the target service * endpoint * @param operationName Qualified Name of the operation for * which this <code>Call</code> object is to * be created. * @return Call instance * @throws ServiceException If any error in the creation of * the <code>Call</code> object */ public Call createCall(QName portName, QName operationName) throws ServiceException; /** * Creates a <code>Call</code> instance. * * @param portName Qualified name for the target service * endpoint * @param operationName Name of the operation for which this * <code>Call</code> object is to be * created. * @return Call instance * @throws ServiceException If any error in the creation of * the <code>Call</code> object */ public Call createCall(QName portName, String operationName) throws ServiceException; /** * Creates a <code>Call</code> object not associated with * specific operation or target service endpoint. This * <code>Call</code> object needs to be configured using the * setter methods on the <code>Call</code> interface. * * @return Call object * @throws ServiceException If any error in the creation of * the <code>Call</code> object */ public Call createCall() throws ServiceException; /** * Gets the name of this Service. * * @return Qualified name of this service */ public QName getServiceName(); /** * Returns an <code>Iterator</code> for the list of * <code>QName</code>s of service endpoints grouped by this * service. * * @return Returns <code>java.util.Iterator</code> with elements * of type <code>javax.xml.namespace.QName</code> * @throws ServiceException If this Service class does not * have access to the required WSDL metadata */ public java.util.Iterator getPorts() throws ServiceException; /** * Gets location of the WSDL document for this Service. * * @return URL for the location of the WSDL document for * this service */ public java.net.URL getWSDLDocumentLocation(); /** * Gets the <code>TypeMappingRegistry</code> for this * <code>Service</code> object. The returned * <code>TypeMappingRegistry</code> instance is pre-configured * to support the standard type mapping between XML and Java * types types as required by the JAX-RPC specification. * * @return The TypeMappingRegistry for this Service object. * @throws java.lang.UnsupportedOperationException if the <code>Service</code> class does not support * the configuration of <code>TypeMappingRegistry</code>. */ public TypeMappingRegistry getTypeMappingRegistry(); /** * Returns the configured <code>HandlerRegistry</code> instance * for this <code>Service</code> instance. * * @return HandlerRegistry * @throws java.lang.UnsupportedOperationException - if the <code>Service</code> class does not support * the configuration of a <code>HandlerRegistry</code> */ public HandlerRegistry getHandlerRegistry(); }