ServiceFactoryImpl.java |
/** * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.webservice.client; // $Id: ServiceFactoryImpl.java,v 1.7.4.1 2005/03/03 18:12:41 tdiesler Exp $ import org.jboss.logging.Logger; import org.jboss.util.NotImplementedException; import org.jboss.webservice.WSDLDefinitionFactory; import org.jboss.webservice.deployment.ServiceDescription; import org.jboss.webservice.metadata.jaxrpcmapping.JavaWsdlMapping; import org.jboss.webservice.metadata.jaxrpcmapping.JavaWsdlMappingFactory; import javax.wsdl.Definition; import javax.xml.namespace.QName; import javax.xml.rpc.Service; import javax.xml.rpc.ServiceException; import javax.xml.rpc.ServiceFactory; import java.net.URL; import java.util.Properties; /** * The javax.xml.rpc.ServiceFactory is a factory for the creation of instances of the type javax.xml.rpc.Service. * <p/> * This class follows the abstract static factory design pattern. * This enables a J2SE based client to create a Service instance in a portable * manner without using the constructor of the Service implementation class. * * @author Thomas.Diesler@jboss.org * @version 1.1 */ public class ServiceFactoryImpl extends ServiceFactory { // provide logging private final Logger log = Logger.getLogger(ServiceFactoryImpl.class); /** * Create an instance of the generated service implementation class for a given service interface, if available. * * @param serviceInterface Service interface * @return A Service * @throws ServiceException If there is any error while creating the specified service, including the case where a * generated service implementation class cannot be located */ public Service loadService(Class serviceInterface) throws ServiceException { throw new NotImplementedException(); } /** * Create an instance of the generated service implementation class for a given service interface, if available. * An implementation may use the provided wsdlDocumentLocation and properties to help locate the generated implementation class. * If no such class is present, a ServiceException will be thrown. * * @param wsdlDocumentLocation URL for the WSDL document location for the service or null * @param serviceInterface Service interface * @param props A set of implementation-specific properties to help locate the generated service implementation class * @return A Service * @throws ServiceException If there is any error while creating the specified service, including the case where a * generated service implementation class cannot be located */ public Service loadService(URL wsdlDocumentLocation, Class serviceInterface, Properties props) throws ServiceException { throw new NotImplementedException(); } /** * Create an instance of the generated service implementation class for a given service, if available. * The service is uniquely identified by the wsdlDocumentLocation and serviceName arguments. * An implementation may use the provided properties to help locate the generated implementation class. * If no such class is present, a ServiceException will be thrown. * * @param wsdlDocumentLocation URL for the WSDL document location for the service or null * @param serviceName Qualified name for the service * @param props A set of implementation-specific properties to help locate the generated service implementation class * @return A Service * @throws ServiceException If there is any error while creating the specified service, including the case where a generated service implementation class cannot be located */ public Service loadService(URL wsdlDocumentLocation, QName serviceName, Properties props) throws ServiceException { throw new NotImplementedException(); } /** * Create a <code>Service</code> instance. * * @param serviceName QName for the service * @return Service. * @throws ServiceException If any error in creation of the specified service */ public Service createService(QName serviceName) throws ServiceException { return new ServiceImpl(serviceName); } /** * Create a <code>Service</code> instance. * * @param wsdlDocumentLocation URL for the WSDL document location * @param serviceName QName for the service. * @return Service. * @throws ServiceException If any error in creation of the * specified service */ public Service createService(URL wsdlDocumentLocation, QName serviceName) throws ServiceException { ServiceImpl service = new ServiceImpl(wsdlDocumentLocation, serviceName); try { WSDLDefinitionFactory factory = WSDLDefinitionFactory.newInstance(); Definition wsdlDefinition = factory.parse(wsdlDocumentLocation); // In this case we have no jaxrpc-mapping.xml ServiceDescription serviceDesc = new ServiceDescription(wsdlDefinition, null, null, null); service.initService(serviceDesc, null); } catch (Exception e) { throw new ServiceException(e); } return service; } /** * Create a <code>Service</code> instance. * <p/> * Note, this method is not in the {@link ServiceFactory} interface, it provides the service * with additional ws4ee wsdl/java mapping information * * @param wsdlLocation URL for the WSDL document location * @param mappingLocation An optional URL for the jaxrpc-mapping.xml location * @param ws4eeMetaData An optional URL for the jboss propriatary deployment descriptor, see wiki for details. * @param serviceName QName for the service. * @param portName An optional port name * @return Service. * @throws ServiceException If any error in creation of the specified service */ public Service createService(URL wsdlLocation, URL mappingLocation, URL ws4eeMetaData, QName serviceName, String portName) throws ServiceException { ServiceImpl service = new ServiceImpl(wsdlLocation, serviceName); try { WSDLDefinitionFactory wsdlFactory = WSDLDefinitionFactory.newInstance(); Definition wsdlDefinition = wsdlFactory.parse(wsdlLocation); JavaWsdlMapping javaWsdlMapping = null; if (mappingLocation != null) { JavaWsdlMappingFactory mappingFactory = JavaWsdlMappingFactory.newInstance(); javaWsdlMapping = mappingFactory.parse(mappingLocation); } ServiceDescription serviceDesc = new ServiceDescription(wsdlDefinition, javaWsdlMapping, ws4eeMetaData, portName); service.initService(serviceDesc, portName); } catch (Exception e) { log.error(e.getMessage(), e); throw new ServiceException(e); } return service; } }
ServiceFactoryImpl.java |