⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xfirefactory.java

📁 Xfire文件 用于开发web service 的一个开源工具 很好用的
💻 JAVA
字号:
package org.codehaus.xfire;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.HashMap;/** * <p/> * The XFireFactory class allows you to embed XFire within your apps easily. </p> * <p/> * This class assumes one XFire instance per JVM. To create many XFire instances you must use your own configuration and * instantiation mechanism. </p> * <p/> * If you want to provide your own Factory you must: <ul> <li>Register your factory via * <code>registerFactory</code></li> <li>Implement <code>public static XFireFactory createInstance()</code> </ul> </p> * * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a> */public class XFireFactory{    private static XFireFactory standalone;    private static Class defaultFacClass;    private static HashMap factories = new HashMap();    private static HashMap factoryClasses = new HashMap();    private XFire xfire;    public void setXFire(XFire xfire)    {        this.xfire = xfire;    }        protected XFireFactory()    {        xfire = new DefaultXFire();    }    protected XFireFactory(XFire xfire)    {        this.xfire = xfire;    }    protected static XFireFactory createInstance()    {        return new XFireFactory();    }    public static XFireFactory newInstance()    {        if (standalone == null)        {            synchronized (XFireFactory.class)            {                if (defaultFacClass != null)                {                    standalone = loadFactory(defaultFacClass);                }                else                {                    standalone = new XFireFactory();                }            }        }        return standalone;    }    public static void setInstance(XFireFactory xf)     {    	standalone = xf;    }        private static XFireFactory loadFactory(Class clazz)    {        try        {            Method m = clazz.getMethod("createInstance", new Class[0]);            return (XFireFactory) m.invoke(null, new Object[0]);        }        catch (SecurityException e)        {            throw new XFireRuntimeException("Couldn't load " + clazz.getName(), e);        }        catch (NoSuchMethodException e)        {            throw new XFireRuntimeException("Factory doesn't implement createInstance(): " + clazz.getName(), e);        }        catch (IllegalArgumentException e)        {            throw new XFireRuntimeException("Factory doesn't implement createInstance(): " + clazz.getName(), e);        }        catch (IllegalAccessException e)        {            throw new XFireRuntimeException("Couldn't load " + clazz.getName(), e);        }        catch (InvocationTargetException e)        {            throw new XFireRuntimeException("Couldn't load factory " + clazz.getName(), e);        }    }    public static XFireFactory newInstance(String selector)    {        XFireFactory fac = (XFireFactory) factories.get(selector);        if (fac == null)        {            synchronized (XFireFactory.class)            {                Class clazz = (Class) factoryClasses.get(selector);                if (clazz == null)                    return null;                fac = loadFactory(clazz);            }        }        return fac;    }    /**     * Register an XFireFactory class.     *     * @param factoryClass     * @param def          Whether or not this should be the default factory.     */    public static void registerFactory(Class factoryClass, boolean def)    {        if (def)            defaultFacClass = factoryClass;        factoryClasses.put(factoryClass.getName(), factoryClass);    }    public XFire getXFire()    {        return xfire;    }}

⌨️ 快捷键说明

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