conn = getConnection();   // 这一步运行没问题 
pstmt = conn.prepareStatement("select sum(balance) as total from accounts"); // 也没问题
ResultSet rs = pstmt.executeQuery();   // 运行到这一步出错以下是 getConnection()方法:
public Connection getConnection() throws Exception {
try {
Context ctx = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) 
                          ctx.lookup("LYJDB");
return ds.getConnection();
}
catch (Exception e) {
System.err.println("Could not locate datasource!  Reason:");
e.printStackTrace();
throw e;
}
}

解决方案 »

  1.   

    我在 weblogic8.1 的控制台如下配置: ( "lyj"是我在 Oracle下配置的数据库名) 
    Connection Pools:
             Name:      LYJ Connection Pool
    URL:          jdbc:weblogic:oracle
             Properties:   user=system
                           server=lyj
             Password:     ********
    Data Sources:
             Name:         LYJ Data Source
             JNDI Name:    LYJDB
             Pool Name:    LYJ Connection Poolweblogic-ejb-jar.xml 文件如下:
    <?xml version="1.0"?><!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN' 
                          'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'><weblogic-ejb-jar>
      <weblogic-enterprise-bean>
        <ejb-name>Account</ejb-name>
        <entity-descriptor>
          <entity-cache>    
        <max-beans-in-cache>100</max-beans-in-cache>
          </entity-cache>    
        </entity-descriptor>
        <jndi-name>AccountHome</jndi-name>
        <local-jndi-name>AccountLocalHome</local-jndi-name>
      </weblogic-enterprise-bean>
    </weblogic-ejb-jar> AccountBean 里有如下代码:
          ctx.lookup("LYJDB");谢谢大家帮忙!!
      

  2.   


    哦,上面 Connection Pools: 少了一项,如下:
        
          Driver Classname:      weblogic.jdbc.oci.xa.XADataSource
      

  3.   

    Driver Classname:的好像还没见过.
    是weblogic8自带的??
    我都是用oracle.jdbc.driver.OracleDriver
      

  4.   

    你的Context : "LYJDB";
    配置对不对啊?
      

  5.   

        在 weblogic 控制台下,Configure a JDBC Connection Pool 时,用的是 Oracle9i数据库,应该选择哪一个数据库驱动?下拉菜单里有好多驱动.
      

  6.   

    ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 出现这个错误,是怎么回事,高手帮帮忙!!
      

  7.   

    我在jboss下也这样 oracle-ds.ml如下
    <datasources>
      <local-tx-datasource>
        <jndi-name>OracleDS</jndi-name>
        <connection-url>jdbc:oracle:thin:@127.0.0.1:1521:SAMPLE</connection-url>
       <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
        <user-name>system</user-name>
        <password>manager</password>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
    </local-tx-datasource>
    </datasources>ejb-jar.xml如下
    ....
    <entity >
             <description><![CDATA[<!-- begin-user-doc --> You can insert your documentation for '<em><b>BmpbookBean</b></em>'.]]></description>         <ejb-name>Bmpbook</ejb-name>         <home>com.test.BmpbookHome</home>
             <remote>com.test.Bmpbook</remote>
             <local-home>com.test.BmpbookLocalHome</local-home>
             <local>com.test.BmpbookLocal</local>         <ejb-class>com.test.BmpbookBMP</ejb-class>
             <persistence-type>Bean</persistence-type>
             <prim-key-class>java.lang.String</prim-key-class>
             <reentrant>False</reentrant>
     <resource-ref>
     <res-ref-name>ds</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
     </resource-ref>
     
          </entity>
    不知道为何???
      

  8.   

    ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 出现这个错误,是怎么回事,高手帮帮忙!!
      

  9.   

    大师注意了:           如何在 weblogic8.1 的控制台下配置 Oracle 数据库,谢谢.......
      

  10.   

    是如何配置 Oracle 数据库的连接池...我老是出现:ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 请教教我,好吧...
      

  11.   

    shared memory realm 是ORACLE自身的错误吧。
    ------------------
    URL:          jdbc:weblogic:oracle
    这样配置CONNECTION POOL,你测试过可以正常运行吗?
      

  12.   

    问题搞定了,不过现在客户端又出现问题: Properties p=System.getProperties();
     p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
     p.put(Context.PROVIDER_URL, "t3://j2ee:7001");
     System.out.println("写入属性完成!");
     Context ctx = new InitialContext(p);// 最后一步抛出找不到"weblogic.jndi.WLInitialContextFactory"这个类,以前没出现这个问题.
      

  13.   

    上面我刚刚提到的问题,我又搞定了.新的问题又又来了:javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("LYJDS");lookup() 的参数是不是只能为 data source 所绑定的 jndi 名. LYJDS 就是我设置的data source 的 jndi name.  可服务器竟说找不到. 是不是要在 weblogic-ejb-jar.xml 里设一下啊.我的 weblogic-ejb-jar.xml 如下:
    <weblogic-ejb-jar>
      <weblogic-enterprise-bean>
        <ejb-name>Account</ejb-name>
        <entity-descriptor>
          <entity-cache>    
        <max-beans-in-cache>100</max-beans-in-cache>
          </entity-cache>    
        </entity-descriptor>
        <jndi-name>AccountHome</jndi-name>
        <local-jndi-name>AccountLocalHome</local-jndi-name>
      </weblogic-enterprise-bean>
    </weblogic-ejb-jar>没有加入 DataSource 的 jndi 一项,会不会问题出在这?????
      

  14.   

    楼主:
        我没有使用过 weblogic8.1,不过想来也应该差不多
        ctx.lookup("LYJDS");确实是寻找你在你当前的 weblogic 中是否有配置名字为 LYJDS 的 JNDI 节点。
        至于如何新增一个 JNDI 节点,我建议你到 weblogic 的后台 console 里面去新建,就是打开 IE,键入 http://127.0.0.1:7001/console 
    找到 mydomain -> services -> JDBC -> Data Sources
    点击 Configure a new JDBC Data Source... 来新建一个 JNDI 节点,手工改写 xml 文件当然也可以,但十分麻烦,建议不要用直接改写 XML 文件的做法。
    至于新建以后,被新建的JNDI 的 XML 代码应该是出现在 :\bea\wlserver6.1\config\mydomain\config.xml 里面,和 weblogic-ejb-jar.xml 可能没什么关系吧呵呵以上是基于 weblogic6.1 我看过 weblogic7.1 的目录结构也差不多,不过 8.1 就不知道了,总之通过后台 console 去配置,谢谢
      

  15.   

    Jacky1206(胖胖)兄:
             
              为什么bean已经连上数据源了,而且数据源和连接池都没问题,但执行SQL语句的时候,却说找不到表或视图呢, 但同样的SQL语句在 ORACLE 的 SQL PLUS 下却可以运行呢.
      

  16.   

    说明数据库本身是好的,还是出在使用 JDBC 连接的上面,贴出你得到连接的前后全部代码,光看
    conn = getConnection() 无法确定原因
      

  17.   

    靠,在weblogic的console里面设置阿,难道平时都是手动配置文件?太强了,还有8.1我用过啊,初始化context的时候,不用加上什么properties阿,直接 new initialcontext(),那是n年前的事了吧
      

  18.   

    conn = getConnection();
    ystem.out.println("数据库已连接!");
    pstmt = conn.prepareStatement("select sum(balance) as total from accounts");  
    ResultSet rs = pstmt.executeQuery();     // 出错,找不到表
    System.out.println("SQL 语句执行成功!");
    getConnection()代码如下:
    public Connection getConnection() throws Exception 
    {
             try {
    Context ctx = new InitialContext();
    javax.sql.DataSource ds = (javax.sql.DataSource) 
                              ctx.lookup("LYJDS");
    return ds.getConnection();
    }
    catch (Exception e) {
    System.err.println("Could not locate datasource!  Reason:");
    e.printStackTrace();
    throw e;
    }
    }
      

  19.   

    也许你连接池配的oracle用户(schema),与你 sql/plus 用的用户不一样?
    建议用 "select 1 from dual" 试试看
    无论怎么说,在应用程序用oracle system用户总不好
      

  20.   

    我现在连接池配置了一个普通帐号,不是system.还是出现找不到表,根异常是在:oracle.jdbc.dbaccess.DBError.throwSqlExcepiton
      

  21.   

    这是一个很简单的问题,Oracle的表是建立在用户下面的,缺省情况不同的用户不能互相访问对方的表。
    解决的办法1,应用程序的表建立在正确的用户下
    解决办法2,A用户要访问B用户的表,则先给A用户授权,然后在A用户下面建立同义词或者建立公共同义词。
    ---------------------------------
    我是一只菜菜菜鸟。
    *********************
    社区是我家,繁荣靠大家
    鄙视只索取,不付出的人
    ---------------------------------