private void connectDB() throws NamingException, SQLException {
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("weblogic.jdbc.jts.oraclePool");
con = ds.getConnection();
stmt = con.createStatement();这样就应该可以的,如果你的weblogic中的连接池设的正确的话。

解决方案 »

  1.   

    weblogic.jdbc.connectionPool.oraclePool= url=jdbc:weblogic:oracle, driver=weblogic.jdbc.oci.Driver, loginDelaySecs=1, initialCapacity=1, maxCapacity=10, capacityIncrement=2, allowShrinking=true, shrinkPeriodMins=15, refreshMinutes=10, testTable=dual, props=user=system;password=manager;server=IB-SERVER
    # Add a TXDataSource for the connection pool:
    weblogic.jdbc.TXDataSource.weblogic.jdbc.jts.oraclePool=oraclePoolweblogic中的连接池的设置,我的机器是这样的,你应该对应的修改一下。对了,当时我用的是weblogic5.0(sp9),不知道你现在是否用的是6.0
      

  2.   

    首先确定你的pool池是可用的,datasource也配置好了。
      

  3.   

    请问sunjiujiu:weblogic.jdbc.oci.Driver这个驱动是不是纯java驱动.
    我在你给的例子之中,找不到设置数据库服务器ip的url.这是不是说,你的数据库和weblogic装在同一台机子上.或者,我需要依靠oracle的客户端才能使用你的例子.
    还有supersonics,请问怎样才能确定pool可用,且datasource配置好了.我的weblogic启动正常,没有抱任何错误,不知这是不是算正常.
    谢谢两位的答复,如果解决问题,必有分送上.
      

  4.   

    你是怎么设置weblogic的pool的?
      

  5.   

    wls6.x:看config.xml中的pool和datasource的target是否是你的app名。
    我也遇到过,配置了pool和datasource,但是却没有和app连接起来而无法使用。
    不知道你的是不是这样。
      

  6.   

    Hashtable parms = new Hashtable();
    parms.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    parms.put(Context.PROVIDER_URL,"t3://localhost:7001");//localhos为相应的weblogic服务器ip地址 
    Context ctx = new InitialContext(parms);
    javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("spcsourse");
    Connection con = ds.getConnection();你的连接程序缺少相应的weblogic服务器地址,
    重点就在上面的
    parms.put(Context.PROVIDER_URL,"t3://localhost:7001");
    //localhos为相应的weblogic服务器ip地址 
    另外确定的datasouce命名没错,而且pool配置正确,看你的使用好像是weblogic6.0以上的版本吧
      

  7.   

    supersonics:config.xml中如下: <JDBCDataSource JNDIName="myjndi" Name="spcsourse"
              PoolName="spcpool" Targets="myserver"/> 好象没错啊.
    lick:我已经按照你说的改动了程序,问题依旧.
    001-9-27 下午01时13分02秒> <Error> <HTTP> <[WebAppServletContext(1338658,Defau
    WebApp_myserver)] Root cause of ServletException
    vax.naming.NameNotFoundException: Unable to resolve spcsourse. Resolved: '' Un
    solved:'spcsourse' ; remaining name ''
          <<no stack trace available>>
    程序:Hashtable parms = new Hashtable();
    parms.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    parms.put(Context.PROVIDER_URL, "t3://localhost:7001");
    Context ctx = new InitialContext(parms);
    javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("spcsourse");
    Connection con = ds.getConnection();
    我的qq是  6512329
      

  8.   

    pool的配置:(console中)
    name:  spcpool
    url:  jdbc:oracle:thin:@172.16.1.11:1521:spctest
    driver classname:oracle.jdbc.driver.OracleDriver
    properties:user=spc
                password=spc
                dll=ocijdbc8
                protocol=thin
    ----------------------
    Initial Capacity:4
    Maximum Capacity:10
    Capacity Increment:2
    Login Delay Seconds:1
    Refresh Period:1
    ------------------
    targets 
    chosen :myserver
    Test Table Name:spctable
      

  9.   

    <JDBCDataSource JNDIName="myjndi" Name="spcsourse"  PoolName="spcpool" Targets="myserver"/> 
    老兄,我们要的就是jndiname,
    javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("myjndi");
    或者干脆直接把name和jndiname命名相同,比较适合我这种懒人使用的,呵呵,居然把数据库用户名都贴出来了,赶快密码吧!
      

  10.   

    你的datasource的jndi名为myjndi,但是你去取datasource的时候去用的是spcsourse。
    我想至少这里是错的:lookup的是jndiname,而不是name.
      

  11.   

    谢谢,lick和supersonics,问题是出在这。现在已经解决了。
    我要给分了。