小弟看视频HIBERNATE配置JNDI但是老是提示有问题搞了几天网上的例子也找了不少 但就是配不上去 所以在这里把代码贴上来大家给帮忙分析分析吧 谢谢了使用的 数据库是SQLSERVER2000
项目名称是JJANDSSH 
TOMCAT,,/SERVER.XML里的代码
<Context path="/demo" docBase="D:\workspace\JJAndSSH\WebRoot" debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_SQLServer_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/JJAndSSH" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/JJAndSSH">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=stu</value>
</parameter>
<parameter>
<name>dialect</name>
<value>org.hibernate.dialect.SQLServerDialect</value>
</parameter> </ResourceParams>
</Context>
下来是HIBERNATE.CFG.XML里的代码
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/JJAndSSH</property>
<property name="show_sql">true</property> 

<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<mapping resource="com/test/SSH/beans/TestSpring.hbm.xml" /></session-factory>然后在插入数据的时候一点提交就有错误 代码是
javax.servlet.ServletException: Could not find datasource
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause org.hibernate.HibernateException: Could not find datasource
org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:56)
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:397)
org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216)
com.test.SSH.factory.SessionFactory.getSession(SessionFactory.java:11)
com.test.SSH.dao.impl.TestSpringDaoImpl.IsSave(TestSpringDaoImpl.java:15)
com.yourcompany.struts.action.MyAction.execute(MyAction.java:46)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
贴上来的代码比较多 但是实际上并不难只是个配置 所以在这里小弟先谢谢各位回答问题的大哥们了 搞了2天了

解决方案 »

  1.   

    我的TOMCAT版本是5.5 
    HI的版本是3.2的 谢谢回复的各位!
      

  2.   

    lz的貌似是tomcat5.0的配置方法,tomcat5.5以上的配置就变了,你可以看看官方的文档呀。
    下面的是官方的一个配置文件示例。
    http://localhost:8080/docs/jndi-datasource-examples-howto.html<Context path="/DBTest" docBase="DBTest"
            debug="5" reloadable="true" crossContext="true">    <!-- maxActive: Maximum number of dB connections in pool. Make sure you
             configure your mysqld max_connections large enough to handle
             all of your db connections. Set to 0 for no limit.
             -->    <!-- maxIdle: Maximum number of idle dB connections to retain in pool.
             Set to -1 for no limit.  See also the DBCP documentation on this
             and the minEvictableIdleTimeMillis configuration parameter.
             -->    <!-- maxWait: Maximum time to wait for a dB connection to become available
             in ms, in this example 10 seconds. An Exception is thrown if
             this timeout is exceeded.  Set to -1 to wait indefinitely.
             -->    <!-- username and password: MySQL dB username and password for dB connections  -->    <!-- driverClassName: Class name for the old mm.mysql JDBC driver is
             org.gjt.mm.mysql.Driver - we recommend using Connector/J though.
             Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.
             -->
        
        <!-- url: The JDBC connection url for connecting to your MySQL dB.
             The autoReconnect=true argument to the url makes sure that the
             mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
             connection.  mysqld by default closes idle connections after 8 hours.
             -->  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
                   maxActive="100" maxIdle="30" maxWait="10000"
                   username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/></Context>
      

  3.   

    在web.xml文件中也要指定资源引用
      

  4.   

    hibernate的配置文件最好也帖下,还有楼上说的web.xml的引用。。不知道你注意没》
      

  5.   

    我说的实在HIBBERNATE里配置JNDI呢 我的TOMCAT版本是5.5的
    WEB.XML好像不需要配 我也配了但是还是有问题 但是目前可以确定的是WEB.XML里不会有问题
      

  6.   

    另外我使用的是SQLSERVER2000 如果有谁能帮忙写个例子分我在加100全给 网上的例子找的 都不对
      

  7.   

    三个步骤
    1 建立context.xml文件,并且把这个文件放入你的项目的WebRoot\META-INF下,内容如下
    <Context path="/demo" docBase="JJAndSSH"
    debug="5" crossContext="true" reloadable="false"
    cachingAllowed="true" cacheMaxSize="20480" 
    cacheTTL="10000">
    <Resource name="demo" auth="Container"
    removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
    type="javax.sql.DataSource"
    maxActive="50" maxIdle="10" maxWait="10000"
    username="sa" password="123456" 
    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    url="jdbc:sqlserver://localhost:1433; DatabaseName=stu"/>
    </Context>
    2 在web.xml中加入如下代码,放入<web-app>节点下
     <resource-ref>
      <res-ref-name>demo</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
     </resource-ref>
    3 把相应的jdbc驱动包放入项目的WebRoot\WEB-INF\lib目录下4 hibernate如下代码
      <property name="connection.datasource">java:comp/env/demo</property> 
      

  8.   

    LZ如果你用的是eclipse开发环境,点help--->>about eclipse SDK 
    里面搜hibernate ,结束后有个 MyEclipse Hibernate Tutorial 就是hibernate的dome
    有图片和具体的步骤,只不过是英文的呵呵
      

  9.   

    既然使用拉hibernate,就不需要配置TOMcat 。
      

  10.   


    你手动配TOMcat的SERVER.XML 说不定一不小心就配错拉
      

  11.   

    <session-factory> 
    <property name="connection.datasource">java:comp/env/jdbc/JJAndSSH </property> 
    <property name="show_sql">true </property> <property name="dialect"> 
    org.hibernate.dialect.SQLServerDialect 
    </property> 
    <mapping resource="com/test/SSH/beans/TestSpring.hbm.xml" /> </session-factory> 直接写JNDI名字呢我的是WL+SQL2000+hib
    jndi在WL里的名字是什么,我就写什么的,你试试呢 
      

  12.   

    三个步骤 
    1 建立context.xml文件,并且把这个文件放入你的项目的WebRoot\META-INF下,内容如下 XML code    <Context path="/demo" docBase="JJAndSSH"
            debug="5" crossContext="true" reloadable="false"
            cachingAllowed="true" cacheMaxSize="20480" 
            cacheTTL="10000">
            <Resource name="demo" auth="Container"
                removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
                type="javax.sql.DataSource"
                maxActive="50" maxIdle="10" maxWait="10000"
                username="sa" password="123456" 
                driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
                url="jdbc:sqlserver://localhost:1433; DatabaseName=stu"/>
        </Context>
    2 在web.xml中加入如下代码,放入 <web-app>节点下 XML code     <resource-ref>
          <res-ref-name>demo</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
         </resource-ref>
    3 把相应的jdbc驱动包放入项目的WebRoot\WEB-INF\lib目录下 4 hibernate如下代码 
      <property name="connection.datasource">java:comp/env/demo </property> 
      

  13.   

    <Context path="car" docBase="D:\workspace\Spell_Car_v1.04\WebRoot" debug="0"  reloadable="true">
    <Resource name="jdbc/car" auth="Container" type="javax.sql.DataSource"/>
          <ResourceParams name="jdbc/car">
           <parameter>
    <name>factory</name>       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                </parameter>
           <parameter>
           <name>driverClassName</name>      <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
       </parameter>
    <parameter>
    <name>url</name>
       <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=Spell_Car</value>
      </parameter>
      <parameter>
         <name>username</name>
         <value>sa</value>
      </parameter>
      <parameter>
         <name>password</name>
         <value>123456</value>
      </parameter>
      <parameter>
         <name>maxActive</name>
         <value>20</value>
      </parameter>
      <parameter>
         <name>maxIdle</name>
         <value>20</value>
      </parameter>
      <parameter>
         <name>maxWait</name>
         <value>-1</value>
      </parameter>
         </ResourceParams>
       </Context>
      

  14.   

    在tomcat的位置一定要放正确,
    C:\Program Files\Tomcat 5.0\conf\Catalina\localhost\text.xml
      

  15.   


    server.xml不会驱动,现在的连接池都是拿出来一个context.xml,很简单!
      

  16.   

    感谢8楼的回复但是麻烦你以后把那些驱动和URL写对偶调了半天才发现
    不过还是谢谢了 问题还是没解决 因为在MYECLIPSE6下启动TOMCAT5.5然后测试发现新弹出个窗口错误是Source not found for CursorableLinkedList.removeFirst() line: 571
    麻烦有经验的大哥们帮帮忙啊。。已经1个星期啦!!!晕死、8楼的兄弟偶会给你100分的 还是谢谢了