这个是应该使用BasicDataSourceFactory啊,应该使用相应的J2EE Server的类啊
WebSphere:com.ibm.ejs.ns.jndi.CNInitialContextFactory
JBoss:org.jnp.interfaces.NamingContextFactory
WebLogic:weblogic.jndi.WLInitialContextFactory

解决方案 »

  1.   

    谢谢楼上,我现在是使用Tomcat5,按道理来说应该没问题,
    但就是死活不行,报类转换异常,BasicDataSourceFactory是现实ObjectFactory接口
    看起来报异常也是正常现象啊,这个问题弄了好久,就是没办法找到正确的Factory类 :(
      

  2.   

    谁给我个正确答案啊!不是放在JSP中,而是在JavaBean中的,各位试通过了吗?
      

  3.   

    这个必须是j2ee server吧,tomcat不支持的。你下载一个j2eesdk,然后j2ee verbose,然后就ok了
      

  4.   

    这个是JNDI的调用,在调用之前,先确认你的开发环境是支持JNDI服务的
    每个服务器有它固定的参数写法,各不相同。
      

  5.   

    应该不是j2ee Server这个问题,tomcat5应该是支持j2ee容器的吧?
    各位可否随便写个bean试试呢?
      

  6.   

    static String contextFactory = new String ("com.sun.jndi.rmi.registry.RegistryContextFactory");    Context ctx = new InitialContext();
        ctx.addToEnvironment(javax.naming.Context.INITIAL_CONTEXT_FACTORY,contextFactory);
    ctx.bind("HibernateSessionFactory", env);看看行不
      

  7.   

    分数追加到300,只求一示例:
    哪位有用过JNDI实现连接成功SQLServer数据库的,可否给出测试通过的实例?
      

  8.   

    我曾用过jtds做为驱动使用连接池,楼主可参考一下:<%@ page contentType="text/html;charset=gb2312"%> 
    <%@ page import="java.sql.*"%> 
    <%@ page import="javax.sql.*"%> 
    <%@ page import="javax.naming.*"%> <html> 
    <body> 
    <% 
        DataSource ds = null; 
        Connection conn = null; 
        ResultSet rs = null; 
        Statement stmt = null; 
        InitialContext ctx = null; 
        String    m_strDriver = "net.sourceforge.jtds.jdbc.Driver",        // 驱动字符串 
                   m_strConURL = "jdbc:jtds:sqlserver";                       // 连接字符串 
       try 
       { 
               ctx=new InitialContext(); 
               ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");    //注意connectDB的名称和上面一致 
               conn = ds.getConnection(); 
               stmt = conn.createStatement();            String strSql = " select * from test";                        //test为数据库中的一个表     
              rs = stmt.executeQuery(strSql); 
               while(rs.next()) 
               { 
                  out.println(rs.getString(1) + "");                  
                  out.println(rs.getString(2) + ""); 
             } 
       } 
       catch(Exception ex) 
       { 
            out.println(ex.getMessage()); 
       } 
       finally 
       { 
               rs.close(); 
               stmt.close(); 
               conn.close(); 
               ctx.close(); 
       } 
    %> 
    </body> 
    </html> 
      

  9.   

    我的web.xml配置如下:<?xml version="1.0" encoding="ISO-8859-1"?> 
    <web-app>   <display-name>tiannet web</display-name> 
        <description>connectDB test</description> 
         
        <resource-ref> 
          <description>DB Connection</description> 
          <res-ref-name>jdbc/connectDB</res-ref-name> 
          <res-type>javax.sql.DataSource</res-type> 
          <res-auth>Container</res-auth> 
        </resource-ref> 
      <welcome-file-list> 
        <welcome-file>index.jsp</welcome-file> 
      </welcome-file-list>   </web-app> 注意<res-ref-name>jdbc/connectDB</res-ref-name> 
    中的connectDB
    和上面程序
    ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");
    中的connectDB一致
      

  10.   

    谢谢楼上的,但不是我想要的 :(  因为在实际应用中不可能会在每个页面都写连接代码我想要的是在JavaBean中通过JNDI(这样可以在.properties文件中自由配置连接参数)
    来建立Context上下文,并使用连接池连接数据库,不知哪位实现过(SQLServer的)?