javascript
如何在Tomcat中设置JNDI数据库连接池-Spring教程示例
在Spring和Tomcat中設置JNDI數據庫連接池非常容易。 Tomcat服務器文檔提供了有關如何在Tomcat 5、6或7中設置連接池的足夠信息。在這里,我們將結合使用Tomcat 7和Spring框架在Tomcat服務器中創建連接池并在Spring中使用JNDI代碼訪問它們。 在上一篇文章中,我們了解了如何在Spring中為不在Web服務器或應用程序服務器上運行且沒有托管J2EE容器的核心Java應用程序設置數據庫連接池 。 但是如果您要開發Web應用程序,則最好使用服務器托管連接池并使用JNDI訪問它們。 Spring配置將是通用的,并且僅基于Datasource的JNDI名稱,因此它將在任何J2EE服務器(例如Glassfish , WebLogic , JBoss或WebSphere)上運行,直到JNDI名稱相同為止。
順便說一句,Tomcat是我最喜歡的Web服務器 ,由于它與Eclipse和Netbeans等IDE集成在一起,因此我在開發中經常使用它。 我將其用于所有測試和開發目的,許多公司甚至在生產中運行Tomcat來托管Java Web應用程序。
盡管要小心java.lang.OutOfMemoryError:tomcat中的PermGen空間 ,但它可能簡單,快速且非常可靠,這可能會導致Java應用程序中的內存泄漏。 它通常是由于ThreadLocal變量和JDBC驅動程序而發生的,但是您可以通過了解更多信息來避免這種情況
如何在Tomcat和Spring中使用JNDI數據庫連接池
為任何Java Web應用程序配置和運行JNDI數據源連接池 ,分三個步驟 :
1)在服務器中配置數據源并創建JNDI名稱。
2)配置web.xml
3)使用JNDI數據源配置Spring bean
4)在服務器庫中包含JDBC驅動程序庫,例如tomcat / lib
為了在J2EE Web服務器上創建JNDI數據源,您需要遵循服務器文檔。 在Tomcat 6上,您可以簡單地將以下XML放在context.xml以創建Tomcat管理的數據庫連接池:
<<?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/springDataSourceDemo"> <Resource name="jdbc/springeDataSource"auth="Container"type="javax.sql.DataSource"driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@localhost:1521:SPRING_TEST"username="root"password="root"removeAbandoned="true"removeAbandonedTimeout="90"logAbandoned="true"maxActive="20"maxIdle="10"maxWait="-1"/> </Context>資源元素將創建JNDI數據源,可以使用JNDI名稱“ jdbc/springeDataSource ”進行引用。
Tomcat在內部使用DBCP和Commons池庫來管理數據庫連接池。 您可以檢查tomcat/lib目錄中的jar文件tomcat-dbcp.jar ,該文件負責在tomcat服務器內部創建數據庫連接池。
1.
為了從Web應用程序訪問任何服務器資源,您需要在web.xml中指定JNDI資源。
您可以使用以下XML在以下位置聲明JNDI數據源:
<resource-ref><description>Oracle Spring JNDI Datasource</description><res-ref-name>jdbc/springDataSource</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth> </resource-ref>現在您的Web應用程序將看到在tomcat中創建的名稱為jdbc/springDataSource JNDI數據源。
2.用于訪問JNDI數據源的Spring配置:
該彈簧配置足夠通用,可用于訪問部署在任何J2EE或Java EE Server上的任何JNDI數據源。 它與Tomcat無關。 org.springframework.jndi.JndiObjectFactoryBean用于查找JNDI數據源并與javax.sql.DataSource綁定。
<bean id="springDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName" value="java:comp/env/jdbc/springDataSource"/><property name="lookupOnStartup" value="true"/><property name="proxyInterface" value="javax.sql.DataSource"/> </bean>我在這里使用XML方式聲明一個Spring bean,但是,如果您使用的是Spring 3.0或更高版本,則還可以使用Java Configuration和@Bean批注在Spring應用程序中聲明數據源。
3. Tomcat Lib中的JDBC驅動程序文件
現在的最后一步是確保tomcat lib具有JDBC驅動程序jar文件 。 我通常將JAR文件放在tomcat的lib目錄中,但是您可以將其放在任何有意義的位置,并修改tomcat類路徑以將驅動程序JAR包含到類路徑中。
現在,使用此數據源的其余代碼應保持不變。 您可以從上一篇文章如何在Spring框架中設置數據庫連接池中獲得Spring DAO源代碼。
PS –如果您想深入學習如何使用Spring MVC開發RESTful Web Service,建議您參加Eugen Paraschiv的REST with Spring認證課程 。 使用Spring MVC學習REST的最佳課程之一。
翻譯自: https://www.javacodegeeks.com/2018/04/how-to-setup-jndi-database-connection-pool-in-tomcat-spring-tutorial-example.html
總結
以上是生活随笔為你收集整理的如何在Tomcat中设置JNDI数据库连接池-Spring教程示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kie-api_KIE-WB / JBP
- 下一篇: 吃一堑长一智怎么读 吃一堑长一智如何读