亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? datasourcefactory.java

?? JSP設計第二版的源碼
?? JAVA
字號:
package com.ora.jsp.sql;

import java.beans.*;
import java.lang.reflect.*;
import java.util.*;
import javax.naming.*;
import javax.naming.spi.ObjectFactory;

/**
 * This class is an implementation of the ObjectFactory interface,
 * used by a container to create instances of resources accessible
 * through JNDI. It's intended to be used to create an instance of
 * the DataSource class and configure it as defined by the parameters
 * passed through the JNDI implementation.
 *
 * @author Hans Bergsten, Gefion software <hans@gefionsoftware.com>
 * @version 1.0
 */
public class DataSourceFactory implements ObjectFactory {
    /**
     * Creates an instance of the DataSource based on the
     * configuration info. The class name must be passed as a parameter
     * named "dataSourceClassName". Introspection is used to find
     * and call setter methods in the DataSource corresponding to all
     * other parameters.
     */
    public Object getObjectInstance(Object obj, Name name, 
        Context nameCtx, Hashtable environment)
        throws NamingException {

        Reference ref = (Reference) obj;
        RefAddr ra = ref.get("dataSourceClassName");
        if (ra == null) {
	    throw new NamingException("No class name specified");
        }

        String className = (String) ra.getContent();
        Object ds = null;
        try {
            ds = Class.forName(className).newInstance();
        }
        catch (Exception e) {
	    throw new NamingException("Can't create DataSource: "
                + e.getMessage());
        }

        Enumeration addrs = ref.getAll();
        while (addrs.hasMoreElements()) {
            RefAddr addr = (RefAddr) addrs.nextElement();
            String prop = addr.getType();
            String value = (String) addr.getContent();
            if (!(prop.equals("dataSourceClassName") || prop.equals("scope") ||
                prop.equals("auth") || prop.equals("factory"))) {
                setProperty(prop, value, ds);
            } 
        }
        return ds;
    }

    /**
     * Sets the specified property to the specified value in the
     * specified object.
     */
    private void setProperty(String prop, String value, Object ds) {
        Method setter = getSetter(prop, ds);
        if (setter == null) {
            System.out.println("[DataSourceFactory] Can't find property: "
                + prop + ". Ignored");
            return;
        }
        Object[] args = buildArgs(value, setter);
        try {
            setter.invoke(ds, args);
        }
        catch (Exception e) {
            System.out.println("[DataSourceFactory] Can't set property: "
                + prop + "=" + value + "; " + e.getMessage() + ". Ignored");
        }
    }

    /**
     * Returns the setter method corresponding to the property name in
     * the specified object, or null if no matching setter method is
     * found.
     */
    private Method getSetter(String prop, Object ds) {
        BeanInfo bi = null;
        try {
            bi = Introspector.getBeanInfo(ds.getClass());
        }
        catch (IntrospectionException e) {
            return null;
        }

        PropertyDescriptor[] pds = bi.getPropertyDescriptors();
        Method setter = null;
        for (int i = 0; i < pds.length; i++) {
            if (pds[i].getName().equals(prop)) {
                setter = pds[i].getWriteMethod();
                break;
            }
        }
        return setter;
    }

    /**
     * Converts the specified String value to the setter methods parameter
     * type, if possible, and returns it as an Object array suitable as
     * the argument to the Method.invoke() method.
     */
    private Object[] buildArgs(String value, Method setter) {
        Class[] paramTypes = setter.getParameterTypes();
        // Only one parameter for a setter method
        Object[] args = new Object[1];
        args[0] = coerceValue(value, paramTypes[0]);
        return args;
    }

    /**
     * Converts the specified String value to the specified type, if
     * possible, and returns the converted value.
     *
     * Only conversion to Integer and Boolean is currently supported,
     * since these types covers all DataSource implementations I've
     * come across. It's easy to add new conversions if needed.
     */
    private Object coerceValue(String value, Class type) {
        Object coercedValue = null;
        if (type.isAssignableFrom(String.class)) {
            coercedValue = value;
        }
        else if (type.isAssignableFrom(Integer.class) ||
                 type.isAssignableFrom(Integer.TYPE)) {
            try {
                coercedValue = Integer.valueOf(value);
            } 
            catch (NumberFormatException e) {
                // Ignore. It's reported when trying to set the value
            }
        }
        else if (type.isAssignableFrom(Boolean.class) ||
                 type.isAssignableFrom(Boolean.TYPE)) {
            coercedValue = Boolean.valueOf(value);
        }
        return coercedValue;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
18成人在线视频| 精品一区二区在线免费观看| 美女尤物国产一区| 成人av在线资源网| 精品精品国产高清一毛片一天堂| 亚洲欧美日本在线| 国产v综合v亚洲欧| 欧美mv和日韩mv的网站| 亚洲一区二区在线免费看| 国产九色sp调教91| 精品人在线二区三区| 亚洲国产精品久久人人爱| 成人精品视频.| 欧美电视剧免费观看| 亚洲国产综合色| 色狠狠色噜噜噜综合网| 国产精品久久综合| 国产精品996| 欧美精品一区二区在线观看| 日韩电影免费一区| 欧美系列在线观看| 一二三四区精品视频| 91麻豆精品一区二区三区| 日本一区二区三区视频视频| 狠狠网亚洲精品| 欧美一区二区日韩| 日韩av中文字幕一区二区三区| 欧美在线三级电影| 亚洲国产欧美另类丝袜| 欧洲日韩一区二区三区| 一区二区三区四区中文字幕| 91毛片在线观看| 亚洲欧美成人一区二区三区| 99精品桃花视频在线观看| 国产女人18毛片水真多成人如厕| 国产69精品一区二区亚洲孕妇| 久久一夜天堂av一区二区三区| 国产中文一区二区三区| 久久久久久久精| 国产不卡视频在线播放| 国产精品麻豆欧美日韩ww| 99国产精品久| 亚洲综合久久av| 欧美日韩五月天| 日韩精品久久理论片| 日韩视频在线永久播放| 国产又黄又大久久| 国产精品短视频| 日本二三区不卡| 午夜精品国产更新| 日韩精品自拍偷拍| 成人午夜免费电影| 亚洲毛片av在线| 欧美精品18+| 国产精品夜夜爽| 亚洲精品网站在线观看| 宅男噜噜噜66一区二区66| 韩国理伦片一区二区三区在线播放 | 久久久精品2019中文字幕之3| 国产精品资源在线看| 亚洲欧美另类综合偷拍| 4438x成人网最大色成网站| 国产综合一区二区| 中文字幕一区二区不卡| 欧美喷潮久久久xxxxx| 国产一区 二区 三区一级| 亚洲同性同志一二三专区| 欧美视频精品在线观看| 国产精品中文字幕一区二区三区| 中文字幕一区二区三区在线观看 | 在线观看日产精品| 蜜桃精品视频在线| 最好看的中文字幕久久| 欧美一区二区三区影视| 大胆欧美人体老妇| 奇米四色…亚洲| 国产精品久久影院| 日韩精品一区二区三区视频在线观看 | 色网综合在线观看| 精品在线播放免费| 亚洲精品高清在线观看| 久久久久久久久久久久电影| 欧美三区在线观看| 成人av在线资源网站| 久久99精品一区二区三区三区| 亚洲卡通动漫在线| 欧美韩国日本一区| 欧美成人一区二区三区片免费 | 亚洲毛片av在线| 国产女主播一区| 欧美一区二区三区的| 色狠狠一区二区三区香蕉| 国产精品影视网| 人妖欧美一区二区| 亚洲在线视频一区| 亚洲欧洲日韩综合一区二区| 亚洲精品一区二区在线观看| 欧美一区二区在线免费播放| 一本久道中文字幕精品亚洲嫩| 高清不卡一区二区在线| 精品一区二区三区欧美| 免费av成人在线| 首页亚洲欧美制服丝腿| 亚洲成人激情av| 亚洲精品你懂的| 中文字幕永久在线不卡| 国产三区在线成人av| 精品免费视频一区二区| 欧美一区二区三区免费大片| 欧美日韩高清在线播放| 欧美体内she精视频| 欧美色图第一页| 欧美日韩一区二区在线观看 | 欧美大度的电影原声| 欧美日韩色综合| 欧美午夜不卡视频| 欧美在线免费视屏| 欧美日韩国产一级片| 欧美久久久久免费| 91精品国产入口| 精品国产精品一区二区夜夜嗨| 日韩丝袜美女视频| 久久午夜电影网| 中文字幕高清不卡| 亚洲日本护士毛茸茸| 亚洲一区二区欧美激情| 污片在线观看一区二区| 免费在线观看视频一区| 经典三级一区二区| 成人午夜精品一区二区三区| av毛片久久久久**hd| 在线免费不卡电影| 日韩一区二区在线播放| 久久综合av免费| 亚洲日本在线天堂| 亚洲国产精品一区二区www| 麻豆久久久久久| 国产成人午夜精品影院观看视频 | 国产欧美一区二区精品仙草咪| 中文字幕精品一区二区精品绿巨人 | 午夜视频在线观看一区二区三区 | 日韩欧美国产三级电影视频| 久久一日本道色综合| 亚洲特级片在线| 午夜精品福利在线| 国产成人午夜99999| 在线一区二区视频| 日韩精品一区在线| 亚洲欧洲日产国码二区| 午夜久久久久久久久| 国产一区二区日韩精品| 在线观看日韩国产| 亚洲精品在线观看视频| 亚洲精品乱码久久久久久黑人| 日本不卡一区二区| 成人av集中营| 91精品国产一区二区三区蜜臀| 国产午夜亚洲精品理论片色戒| 一区二区三区在线看| 国产在线播放一区三区四| 在线观看免费视频综合| 久久婷婷色综合| 亚洲成人动漫精品| 99久久综合色| 精品久久免费看| 亚洲一区二区综合| 国产99久久久国产精品免费看| 欧美人伦禁忌dvd放荡欲情| 日本一区二区免费在线| 蜜臀av在线播放一区二区三区| 91视频免费看| 久久精品日韩一区二区三区| 日本一道高清亚洲日美韩| 91香蕉视频mp4| 久久久99精品久久| 免费视频一区二区| 欧美日韩一区在线观看| 日韩理论片网站| 国产传媒欧美日韩成人| 日韩视频免费直播| 亚洲va欧美va人人爽| 91色porny在线视频| 国产精品午夜免费| 国产精品一卡二卡在线观看| 日韩一区二区三区在线观看| 一区二区三区小说| 色94色欧美sute亚洲线路二| 欧美国产成人精品| 国产精品亚洲一区二区三区在线| 日韩精品一区二区在线| 日本va欧美va精品| 在线播放91灌醉迷j高跟美女| 一区二区三区高清不卡| 91免费国产在线观看| 亚洲区小说区图片区qvod| 91亚洲永久精品| 亚洲免费观看在线视频| 91年精品国产| 亚洲综合网站在线观看| 欧美写真视频网站|