weblogic.jndi.WLInitialContextFactory

很久没写blog了。今天突然遇到个问题,如下:

Create data source failure:javax.naming.NoInitialContextException: Cannot instantiate class: weblogic.jndi.WLInitialContextFactory [Root exception is java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory]
[ERROR] error:ApplicationException e                                              (services.property.BrmProperty)
com.gzdx.util.exception.ApplicationException: database error
at com.gzdx.services.org.db.DBOrgService.getCompanyListInSystem(DBOrgService.java:1046)
at com.gzdx.services.property.BrmProperty.getAllConfigurationByCmpyHash(BrmProperty.java:76)
at com.gzdx.services.system.Manager.createConfigurationHash(Manager.java:245)
at com.gzdx.services.system.Manager.start(Manager.java:234)
at com.gzdx.services.system.StartupServlet.init(StartupServlet.java:40)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3951)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4225)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)

           开始以为是weblogic.jar文件问题,或者环境问题,反复试验。原来是因为连接池问题。刚刚从服务器down下的src,因为服务器是weblogic的,所以连接池是weblogic的写法。而本地用的是tomcat的服务,修改成tomcat的写法重新编译ok.如下:

1、weblogic写法:

  JNDI_Name = poolConfig.getPoolName();
  Context ctx = null;
  Hashtable ht = new Hashtable(); 
  ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
  ht.put(Context.PROVIDER_URL, "t3://127.0.0.1:80");

try {
  ctx = new InitialContext(ht);
  ds = (DataSource)ctx.lookup (JNDI_Name);
  } catch (Exception e)
  {
   System.out.println("Create data source failure:"+e);
   
  } finally
  {
   try{
    ctx.close();
   } catch (Exception e)
   {
   }
  }

2、tomcat写法:

poolName = poolConfig.getPoolName();
  DB_Driver_Name = poolConfig.getDbDriver();
  initPoolSize = Integer.parseInt(poolConfig.getInitialPoolSize());
  max_con = Integer.parseInt(poolConfig.getMaxSize());
  poolIncrement = Integer.parseInt(poolConfig.getPoolIncrement());
  retryTimes = Integer.parseInt(poolConfig.getRetry());
  connectionRefresh = Integer.parseInt(poolConfig.getRefresh());
  connectionTimeout = Integer.parseInt(poolConfig.getTimeout());

  int urlIndex = 0;

  if ((urlIndex = poolConfig.getUrl().indexOf("@")) == -1) {
   throw new SQLException(
     "+++ Connection pool URL formation incorrect.");
  }
  DB_URL = poolConfig.getUrl().substring(urlIndex + 1);

  Login_Name = poolConfig.getDbUserName();
  Login_Password = poolConfig.getDbPassWord();
  // Init JDBC driver
  try {
   Class.forName(poolConfig.getDbDriver());
   jdbc_connected = true;
  } catch (Exception e) {
   Manager.log.error(this, "Create new connection failed, driver "
     + DB_Driver_Name + " not found");
   jdbc_connected = false;
  }

  con = new Connection[max_con];
  timeStamp = new Calendar[max_con];
  lastUsedTimeStamp = new Calendar[max_con];
  available = new boolean[max_con];
  // ������������,������������������
  for (int i = 0; i < initPoolSize; i++) {
   con[i] = createConnection();
   available[i] = true;
   timeStamp[i] = Calendar.getInstance();
   timeStamp[i].add(Calendar.MINUTE, connectionRefresh);
   lastUsedTimeStamp[i] = Calendar.getInstance();
   lastUsedTimeStamp[i].add(Calendar.MINUTE, connectionTimeout);
   openNum++;
   availNum++;
  }

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值