hibernate.cfg.xml
<hibernate-configuration> <session-factory> <property name="connection.datasource">java:comp/env/jdbc/Pool</property> <property name="show_sql">true</property> <!-- mapping files --> <mapping resource="..." /> </session-factory> </hibernate-configuration>tomcat/bin/conf/Catalina/localhost/Root.xml
<Context debug="9" displayName="..." docBase=".../webapp" path="/" reloadable="true" crossContext="true"> <Loader className="org.apache.catalina.loader.WebappLoader" debug="9" reloadable="true"/> <Logger className="org.apache.catalina.logger.FileLogger" debug="9" prefix="tomcat." suffix=".log" timestamp="true"/> <Resource name="jdbc/Pool" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/Pool"> <parameter> <name>url</name> <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db;SelectMethod=Cursor</value> </parameter> <parameter> <name>maxIdle</name> <value>20</value> </parameter> <parameter> <name>maxActive</name> <value>40</value> </parameter> <parameter> <name>driverClassName</name> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>password</name> <value>root</value> </parameter> </ResourceParams> </Context>執行時出錯:
org.apache.jasper.JasperException: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) ...好吧,給你加上 Dialect!
元兇現身:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452) org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371) org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69) org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417) org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144) org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:129) org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57) org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1290) ...最後發現,原來 Tomcat 5.5 以後的 DataSource 設定改變了,將 ResourceParams 併入 Resource 來簡化設定。
<Resource name="jdbc/Pool" type="javax.sql.DataSource" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db;SelectMethod=Cursor" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" username="root" password="root" maxIdle="20" maxWait="5000" maxActive="40"/>
沒有留言:
張貼留言