provider.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 131 行

JAVA
131
字号
/** Copyright (c) 1998-2008 Caucho Technology -- all rights reserved** This file is part of Resin(R) Open Source** Each copy or derived work must preserve the copyright notice and this* notice unmodified.** Resin Open Source is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** Resin Open Source is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty* of NON-INFRINGEMENT.  See the GNU General Public License for more* details.** You should have received a copy of the GNU General Public License* along with Resin Open Source; if not, write to the**   Free Software Foundation, Inc.*   59 Temple Place, Suite 330*   Boston, MA 02111-1307  USA** @author Scott Ferguson*/package javax.xml.ws.spi;import javax.xml.namespace.QName;import javax.xml.ws.Endpoint;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.util.WeakHashMap;import java.util.logging.Level;import java.util.logging.Logger;public abstract class Provider {  private static final Logger log    = Logger.getLogger(Provider.class.getName());    public static final String JAXWSPROVIDER_PROPERTY    = "javax.xml.ws.spi.Provider";  private static final WeakHashMap<ClassLoader,String> _providerMap    = new WeakHashMap<ClassLoader,String>();  protected Provider()  {  }  public abstract Endpoint createAndPublishEndpoint(String address,						    Object implementor);  public abstract Endpoint createEndpoint(String bindingId,					  Object implementor);  public abstract ServiceDelegate    createServiceDelegate(URL wsdlDocumentLocation,			  QName serviceName,			  Class serviceClass);  /** XXX */  public static Provider provider()  {    Thread thread = Thread.currentThread();    ClassLoader loader = thread.getContextClassLoader();        try {      synchronized (_providerMap) {	String className = _providerMap.get(loader);	if (className == null) {	  className = findServiceName(loader);	  if (log.isLoggable(Level.FINER) && className != null)	    log.finer("jaxws.Provider implementation " + className);	  _providerMap.put(loader, className);	}		Class cl = Class.forName(className, false, loader);	return (Provider) cl.newInstance();      }    } catch (Exception e) {      throw new RuntimeException(e);    }  }  private static String findServiceName(ClassLoader loader)  {    InputStream is = null;    try {      is = loader.getResourceAsStream("META-INF/services/javax.xml.ws.spi.Provider");      if (is != null) {	StringBuilder sb = new StringBuilder();	int ch;	while (Character.isWhitespace((ch = is.read()))) {	}	for (; ch >= 0 && ! Character.isWhitespace(ch); ch = is.read()) {	  sb.append((char) ch);	}	return sb.toString();      }    } catch (IOException e) {      log.log(Level.FINER, e.toString(), e);    } finally {      if (is != null)	try { is.close(); } catch (IOException e) {}    }    String name = System.getProperty("javax.xml.ws.spi.Provider");    if (name != null)      return name;    else      return "com.caucho.soap.jaxws.ProviderImpl";  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?