示例#1
0
 /**
  * 构建DataSource,子类可覆盖. 如果存在Druid,则使用之,否则使用内置的SimpleDataSource
  *
  * @param props 配置信息
  * @return 目标DataSource
  */
 protected DataSource buildDataSource(Properties props) {
   if (druidFactoryClass != null) {
     log.debug("build DruidDataSource by props");
     Mirror<?> mirror = Mirror.me(druidFactoryClass);
     DataSource ds = (DataSource) mirror.invoke(null, "createDataSource", props);
     if (!props.containsKey("maxWait")) Mirror.me(ds).setValue(ds, "maxWait", 15 * 1000);
     return ds;
   }
   log.debug("build SimpleteDataSource by props");
   return SimpleDataSource.createDataSource(props);
 }
示例#2
0
 public Object run(List<Object> param) {
   Object obj = fetchVar();
   Mirror<?> me = null;
   if (obj == null) throw new NullPointerException();
   if (obj instanceof Class) {
     // 也许是个静态方法
     me = Mirror.me(obj);
     try {
       return me.invoke(obj, right.toString(), param.toArray());
     } catch (InvokingException e) {
       throw e;
     } catch (Throwable e) {
       if (Lang.unwrapThrow(e) instanceof NoSuchMethodException) {
         me = Mirror.me(obj.getClass().getClass());
         return me.invoke(obj, right.toString(), param.toArray());
       }
       throw Lang.wrapThrow(e);
     }
   } else {
     me = Mirror.me(obj);
     return me.invoke(obj, right.toString(), param.toArray());
   }
 }