哪位朋友能告诉我怎么实现啊? 我用的是mysql数据库!急啊!

解决方案 »

  1.   

    顶啊!有人知道InitialContextFactoryImpl和com.caucho.naming是哪个jar包里的吗
      

  2.   

    public static DataSource getDataSourceFromJNDI(String jndiName) throws NamingException {
    Context initCtx = null;
    try {
    // Obtain the initial JNDI context
    initCtx = new InitialContext();
    // Perform JNDI lookup to obtain resource manager
    // connection factory
    DataSource ds = (javax.sql.DataSource) initCtx.lookup("java:comp/env/jdbc/" + jndiName);

    return ds;
    }
    catch (NamingException ex) {
    throw new CannotGetJdbcConnectionException("Naming exception in JNDIConnectionFactory looking up data source [" + jndiName + "]", ex);
    }
    finally {
    try {
    if (initCtx != null)
    initCtx.close();
    }
    catch (NamingException ex) {
    // This shouldn't really happen
    throw new CannotGetJdbcConnectionException("Naming exception closing context in JNDIConnectionFactory.getConnection", ex);
    }
    }
    } // getDataSourceFromJNDI
      

  3.   

    楼主说的那两个包象是 resin 的。www.caucho.com
      

  4.   

    哈,楼主要使用 DataSource,当然应该知道 JNDI 对不对?<web-app>
      ......
      <resource-ref>
        <res-ref-name>jdbc/simwar-ds</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
      </resource-ref>
    </web-app>这是 web.xml 文件中配置的 JDBC 资源引用,可以使用上边的方法:类名.getDataSourceFromJNDI(simwar-ds) 返回容器中正确配置了的数据源。这样说楼主明白了吗?:)
      

  5.   

    类名.getDataSourceFromJNDI("simwar-ds")
      

  6.   

    不好意思是我没说清楚!在应用程序里没有使用容器的情况下怎么得到DataSource呢?
      

  7.   

    说清楚也没有用,那是不成地。数据源是应用服务器特有的东西,没有应用服务器就没有数据源。作为一个常用的解决性能问题的方法,服务器端运行的程序可以使用连接池。各主流数据库的驱动程序中都提供有各自的连接池实现。我从未写过这类东西,楼主可以 GOOGLE 一下,大把。