不知道你用的是不是WEB 服务器的连接池? 也不知道你的具体问题是什么,所以只给你一个提示吧. 
你的问题是你的JNDI 的名字无效的,如果你用的TOMCAT 的那你的HIBERNATE的配置应该是 "java:/comp/env/YOURJNID", 如果是WEBLOGIC 或是 JBOSS , WEBSPHERE 等应用服务器不需要加"java:/comp/env"前缀,直接写YOURJNID名字就可以了.

解决方案 »

  1.   

    tanguangbin(明朝酒醒何处,杨柳岸,晓风残月) 高手中的高手,请说明为什么啊?向你学习
      

  2.   

    调用jndi时,你要配置一下,这样访问时通过jndi名字就可访问到数据库了
    不同的服务,配置的方法不一样...
      

  3.   

    我觉得当你从一个 有 资源管理实现的 应用服务器启动 Web 服务时, 这些设置应该已经被 应用服务器在 命令行或 properties 中初始化过了。请查看如下 JNDI 初始化 配置资源 类片断:
    这是 Sun 默认的 JNDI SPI 初始化的。不同的服务器提供不同的 SPI 工厂类,也就是 java.naming.factory.initial 的值 。
     然后结合 javax.naming.Context 中的一些常量, 比较一下。package com.sun.naming.internal;
    public final class ResourceManager {    /*
         * Name of provider resource files (without the package-name prefix.)
         */
        private static final String PROVIDER_RESOURCE_FILE_NAME =
        "jndiprovider.properties";    /*
         * Name of application resource files.
         */
        private static final String APP_RESOURCE_FILE_NAME = "jndi.properties";    /*
         * Name of properties file in <java.home>/lib.
         */
        private static final String JRELIB_PROPERTY_FILE_NAME = "jndi.properties";
    }
    在 classes/放置一个 jndi.properties 文件,
    里面写着
    java.naming.factory.initial = 这里应该是你的应用服务器具体使用的 工厂名。如果我使用OpenLDAP 它就是com.sun.jndi.ldap.LdapCtxFactory .java.naming.provider.url = 你服务器 JNDI 地址及端口. 如 : ldap://localhost:369 不同实现可以不一样。java.naming.security.authentication = simple / none / xx/yy  认证方式 , none 是匿名. simple 是简单用户名、密码不加密java.naming.security.principal = 用户名。java.naming.security.credentials = 密码( 或证书当你使用其它认证方式时)这些条目 都从 javax.naming. Context. 中拷贝的, 自己看看 javax.naming.Context 类文档。
      

  4.   

    它会尝试 读入上面列的那几个 .properties 文件。 找到 javax.naming.Context 中需要的那些参数值。你只要在相应的位置放置 相应的 properties 就行了。
    PROVIDER_RESOURCE_FILE_NAME =  "jndiprovider.properties";
    APP_RESOURCE_FILE_NAME = "jndi.properties";
    JRELIB_PROPERTY_FILE_NAME = "jndi.properties";有些是从  /META-INF/ 或者  /META-INF/services/ 目录读, 这也是 jar 比 zip 格式新增的东西,Jar 类提供读取功能。
    从它们常量名能看出这些文件应该位于 JRE/lib 还是应用程序的 classpath 中。