相信不是很难,写得多了点,有没有用的都写了。自己真的搞不懂了。菜鸟还望大家帮帮忙!谢谢。--------------------------------------------hibernate.cfg.xml(START)----------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.datasource">
java:comp/env/jdbc/mysql
</property>
<property name="hibernate.connection.provider_class">
org.hibernate.connection.DatasourceConnectionProvider
</property> <property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
</session-factory>
</hibernate-configuration>
--------------------------------------------hibernate.cfg.xml(END)----------------------------------------
补充:我的jndi没有问题。因为可以通过web.xml配置,用页面连接。完全测试过。----------------------------------------------------java代码(START)----------------------------------------
public class Test {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session sess = sf.openSession();
System.out.println(sess);
Transaction tx = sess.beginTransaction();
Admin n = new Admin();
        n.setAdPass("2");
        n.setAdName("3");
sess.save(n);
tx.commit();
sess.close();
}
}
----------------------------------------------------java代码(END)----------------------------------------以下是错误提示信息:严重: Could not find datasource: java:comp/env/jdbc/mysql
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:448)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
at test.Test.main(Test.java:19)
Exception in thread "main" org.hibernate.HibernateException: Could not find datasource
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:79)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:448)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
at test.Test.main(Test.java:19)
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
... 7 more

解决方案 »

  1.   

    <property name="hibernate.connection.datasource"> 
    java:comp/env/jdbc/mysql 
    </property>  路径配置有问题吧
      

  2.   

    <property name="hibernate.connection.datasource"> 
    java:comp/env/jdbc/mysql 
    </property>  路径配置有问题吧
      

  3.   

    不是。我知道错误的意思。可是我这个数据建立了呀?在tomcat里边的admin中有这个jdbc/mysql的数据源
      

  4.   

    数据库配置方面不对......参考:<hibernate-configuration>
        <session-factory>
    <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/hibernate_simple</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">root</property>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="show_sql">true</property>  
            <mapping resource="com/cdm/hibernate/User.hbm.xml"/>
                 
    </session-factory>
    </hibernate-configuration>
      

  5.   

    的确是找不到数据源可是数据源在tomcat里边已经定义好了,还可以用。但是连不上。是不是要启动tomcat才行。头一次弄这个,不太清楚呀!
      

  6.   

    补充一下:奇怪的是。我的这些配置和代码,都不变,如果改换成jdbc连接的配置文件。就没有问题了。是不是还有什么操作我没有做完?
      

  7.   

    你看一下 tomcat下中的server.xml这个文件,有没有如下代码<Resource
          name="jdbc/mysql"
          type="javax.sql.DataSource"
          driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
          password="root"
          maxIdle="2"
          maxWait="5000"
          username="root"
          url="jdbc:microsoft:sqlserver://localhost:3069;databasename=test"
          maxActive="4"/>
    如果没有,应该是你没有配置数据源,如果有的话,那么你就是在web.xml里面把这个数据源加载近来这个资源
    <resource-ref> 
       <description>jdbc/myhibernate</description> 
       <res-ref-name>jdbc/mysql</res-ref-name>   
       <res-type>javax.sql.DataSource</res-type> 
       <res-auth>Container</res-auth> 
       <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref> 这样hibernate才能引用这个资源.
      

  8.   


    虽然写的是你这个好像不是用的mysql。但是我用的是。也的确有关于mysql的配置的内容:
        <Resource
          name="jdbc/mysql"
          type="javax.sql.DataSource"
          password="andymu"
          driverClassName="com.mysql.jdbc.Driver"
          maxIdle="2"
          maxWait="5000"
          username="andymu"
          url="jdbc:mysql://localhost:3306/test"
          maxActive="4"/>不知道是不是有错?
      

  9.   

    而且更让我觉的无奈的是,我的web.xml里边也同样的你说的那段配置:
    <resource-ref>
    <description>MYSQL</description>
    <res-ref-name>jdbc/mysql</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    这个配置中的description是干吗的是不是可以随便设置?
      

  10.   

    弄进去了。我放在了这个路径下:
    C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib
    "C:\Program Files\Apache Software Foundation\Tomcat 5.5\"-----为tomcat安装路径
    发个图片看能不能看到:
      

  11.   

    启动tomcat的时候还报了个错误:
    信息: ExtensionValidator[/WebTest1]: Failure to find 4 required extension(s).
    2008-10-15 17:11:52 org.apache.catalina.core.StandardContext start
    严重: Error getConfigured
    2008-10-15 17:11:52 org.apache.catalina.core.StandardContext start
    严重: Context [/WebTest1] startup failed due to previous errors
    2008-10-15 17:11:52 org.apache.catalina.core.StandardContext stop
    信息: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/WebTest1] has not been started
      

  12.   

    你的数据源在Tomcat里面,没有问题。
    你是怎么启动程序的呢?怎么运行class Test的呢?
    是不是在命令提示行用java Test运行的啊?或者在Eclipse里面Run as Java Application的啊?
      

  13.   


    后者,在Eclipse里面Run as Java Application
    是这个的问题吗?我的问题可能很白痴,还是希望多指教一下!
      

  14.   

    你的Tomcat跟这个Test运行在两个不同的JVM Runtime里,数据源跟Tomcat在一起,你的Test是找不到的。你可以把Test改成一个Servlet,然后发布到Tomcat里面测试,就可以了。再问一句,你要用Tomcat, Hibernate来做什么啊?
      

  15.   

    <Resource
          name="jdbc/mysql"
          type="javax.sql.DataSource"
          password="andymu"
          driverClassName="com.mysql.jdbc.Driver"
          maxIdle="2"
          maxWait="5000"
          username="andymu"
          url="jdbc:mysql://localhost:3306/test"
          maxActive="4"/> 
    是不是name错了,应该和
    <property name="hibernate.connection.datasource">
          java:comp/env/jdbc/mysql
    </property>