Tomcat下使用Druid配置JNDI数据源

Tomcat下使用Druid配置JNDI数据源
Tomcat下使用Druid配置JNDI数据源

Tomcat下使用Druid配置JNDI数据源

com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置。

一、下载Druid的jar包

下载地址:https://www.360docs.net/doc/0112275137.html,/artifact/com.alibaba/druid/1.0.9,如下图所示:

druid.jar依赖log4j的jar包,所以还需要下载log4j的jar包。

log4j的下载地址如下:https://www.360docs.net/doc/0112275137.html,/artifact/log4j/log4j/1.2.17,如下图所示:

二、使用Druid配置JNDI数据源

2.1、前期准备工作

创建一个Web测试项目Druid_JNDI_Config,将下载下来druid-1.0.9.jar和log4j-1.2.17.jar添加到项目中,在项目的META-INF目录下创建一个context.xml文件

目录结构如下图所示:

在tomcat服务器的lib目录下添加Oracle、MySQL、SQLServer三种数据库的驱动jar包,如下图所示:

2.2、在context.xml文件中加入JNDI的配置信息

在context.xml文件中加入如下配置信息

1

2

3

4name="jdbc/OracleDataSource"

5factory="com.alibaba.druid.pool.DruidDataSourceFactory"

6auth="Container"

7type="javax.sql.DataSource"

8driverClassName="oracle.jdbc.OracleDriver"

9url="jdbc:oracle:thin:@192.168.1.229:1521:lead"

10username="lead_oams"

11password="p"

12maxActive="50"

13maxWait="10000"

14removeabandoned="true"

15removeabandonedtimeout="60"

16logabandoned="false"

17filters="stat"/>

18

19

20

21name="jdbc/MysqlDataSource"

22factory="com.alibaba.druid.pool.DruidDataSourceFactory"

23auth="Container"

24type="javax.sql.DataSource"

25driverClassName="com.mysql.jdbc.Driver"

26url="jdbc:mysql://192.168.1.233:3306/lead_oams?useUnicode=true&characterEncoding=utf-8" 27username="lead_system"

28password="password"

29maxActive="50"

30maxWait="10000"

31removeabandoned="true"

32removeabandonedtimeout="60"

33logabandoned="false"

34filters="stat"/>

35

36

37

38name="jdbc/SqlServerDataSource"

39auth="Container"

40factory="com.alibaba.druid.pool.DruidDataSourceFactory"

41type="javax.sql.DataSource"

42driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"

43url="jdbc:sqlserver://192.168.1.61:1433;DatabaseName=gaclTest"

44username="sa"

45password="p@ssw0rd"

46maxActive="50"

47maxWait="10000"

48removeabandoned="true"

49removeabandonedtimeout="60"

50logabandoned="false"

51filters="stat"/>

52

配置项中指定了各个参数后,在连接池内部是这么使用这些参数的。数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;如果当前正在使用的连接数没有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用。同时连接池内部有机制判断,如果当前的总的连接数少于miniIdle,则会建立新的空闲连接,以保证连接数得到miniIdle。如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis时间后任然没有使用,则被物理性的关闭掉。有些数据库连接的时候有超时限制(mysql 连接在8小时后断开),或者由于网络中断等原因,连接池的连接会出现失效的情况,这时候设置一个testWhileIdle参数为true,可以保证连接池内部定时检测连接的可用性,不可用的连接会被抛弃或者重建,最大情况的保证从连接池中得到的Connection对象是可用的。当然,为了保证绝对的可用性,你也可以使用testOnBorrow为true(即在获取Connection 对象时检测其可用性),

不过这样会影响性能。

2.3、在web.xml引用JDNI数据源

在web.xml文件中加入如下的配置引用JNDI数据源

1

2

3xmlns="https://www.360docs.net/doc/0112275137.html,/xml/ns/javaee"

4xmlns:xsi="https://www.360docs.net/doc/0112275137.html,/2001/XMLSchema-instance"

5xsi:schemaLocation="https://www.360docs.net/doc/0112275137.html,/xml/ns/javaee

6https://www.360docs.net/doc/0112275137.html,/xml/ns/javaee/web-app_2_5.xsd">

7

8index.jsp

9

10

11

17

18

19Oracle DB Connection

20jdbc/OracleDataSource

21javax.sql.DataSource

22Container

23

24

25

26

27MySQL DB Connection

28jdbc/MysqlDataSource

29javax.sql.DataSource

30Container

31

32

33

34

35SQLServer DB Connection

36jdbc/SqlServerDataSource

37javax.sql.DataSource

38Container

39

40

2.4、测试JNDI数据源

部署Druid_JNDI_Config Web应用到Tomcat服务器测试JNDI数据源,如下图所示:

部署到tomcat服务器的webapps目录之后,tomcat服务器就会自动在\conf\Catalina\localhost目录下生成一个Druid_JNDI_Config.xml文件,如下图所示:

Druid_JNDI_Config.xml文件中的内容就是我们在META-INF目录的context.xml文件中配置的那些内容。

jsp测试页面如下:

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

2 <%--引入JSTL标签库--%>

3 <%@ taglib uri="https://www.360docs.net/doc/0112275137.html,/jsp/jstl/core" prefix="c"%>

4 <%@ taglib uri="https://www.360docs.net/doc/0112275137.html,/jsp/jstl/sql" prefix="sql"%>

5

6

7

8DRUID配置JNDI数据源连接测试

9

10

11

12

针对MySQL数据库JNDI数据源测试

13<%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>

14

15<%--MySQL JNDI数据源测试SQL--%>

16select * from lead_oams_applications

17

18<%--使用c:forEach标签遍历查询结果集rs中的每一行--%>

19

20<%--${row.字段名}获取字段的值--%>

21${row.resourceid}---${row.app_name}

22

23


24

针对Oracle数据库JNDI数据源测试

25<%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource 属性指明使用的数据源--%>

26

27<%--Oracle JNDI数据源测试SQL--%>

28SELECT * FROM LEAD_OAMS_DBSOURCES

29

30<%--使用c:forEach标签遍历查询结果集rs中的每一行--%>

31

32<%--${row.字段名}获取字段的值--%>

33${row.RESOURCEID}---${row.DBSOURCE_NAME}---${row.DBSOURCE_TYPE}

34

35


36

SQLServer JNDI数据源测试

37<%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>

38

39<%--SQLServer JNDI数据源测试SQL--%>

40select * from t_demo

41

42<%--使用c:forEach标签遍历查询结果集rs中的每一行--%>

43

44<%--${row.字段名}获取字段的值--%>

45${row.id}---${https://www.360docs.net/doc/0112275137.html,}

46

47

48

运行结果如下:

三、在Java代码中获取JNDI中的数据源

3.1、获取JNDI中的数据源

编写一个JdbcUtil工具类,JdbcUtil工具类负责从JNDI容器中获取DataSource,再通过DataSource获取数据库连

接。

代码如下:

1package me.gacl.util;

2

3/**

4*

ClassName: JdbcUtil

5*

Description: 从JNDI容器中获取DataSource,再通过DataSource获取数据库连接

6*/

7import java.sql.Connection;

8import java.sql.ResultSet;

9import java.sql.SQLException;

10import java.sql.Statement;

11import javax.naming.Context;

12import javax.naming.InitialContext;

13import javax.naming.NamingException;

14import com.alibaba.druid.pool.DruidDataSource;

15

16public class JdbcUtil {

17

18/*

19web.xml文件中的JNDI数据源引用配置

20

21

22

23Oracle DB Connection

24jdbc/OracleDataSource

25javax.sql.DataSource

26Container

27

28

29

30

31MySQL DB Connection

32jdbc/MysqlDataSource

33javax.sql.DataSource

34Container

35

36

37

38

39SQLServer DB Connection

40jdbc/SqlServerDataSource

41javax.sql.DataSource

42Container

43

44*/

45

46//Oracle数据库配置的JNDI数据源连接名,后面跟的是DataSource名,DataSource名在web.xml文件中的进行了配置

47private static final String ORACLE_DB_JNDINAME = "java:comp/env/jdbc/OracleDataSource";

48//MySQL数据库配置的JNDI数据源连接名,java:comp/env是必须加的,后面跟的是DataSource名

49private static final String MYSQL_DB_JNDINAME = "java:comp/env/jdbc/MysqlDataSource";

50//SQLServer数据库配置的JNDI数据源连接名,java:comp/env是必须加的,后面跟的是DataSource名

51private static final String SQLSERVER_DB_JNDINAME = "java:comp/env/jdbc/SqlServerDataSource"; 52

53private static DruidDataSource dsOracle = null;

54private static DruidDataSource dsMySql = null;

55private static DruidDataSource dsSqlServer = null;

56

57static{

58try {

59//1、初始化名称查找上下文

60Context ctx = new InitialContext();

61//2、通过JNDI名称找到DataSource

62dsOracle = (DruidDataSource) ctx.lookup(ORACLE_DB_JNDINAME);

63dsMySql = (DruidDataSource) ctx.lookup(MYSQL_DB_JNDINAME);

64dsSqlServer = (DruidDataSource) ctx.lookup(SQLSERVER_DB_JNDINAME);

65} catch (NamingException e) {

66 e.printStackTrace();

67}

68}

69

70/**

71* MethodName: getOracleConnection

72* Description: 获取Oracle数据库连接

73* @author xudp

74* @return

75* @throws SQLException

76*/

77public static Connection getOracleConnection() throws SQLException {

78return dsOracle.getConnection();

79}

80

81/**

82* MethodName: getMySqlConnection

83* Description: 获取MySQL数据库连接

84* @author xudp

85* @return

86* @throws SQLException

87*/

88public static Connection getMySqlConnection() throws SQLException {

89return dsMySql.getConnection();

90}

91

92/**

93* MethodName: getSqlServerConnection

94* Description: 获取SQLServer数据库连接

95* @author xudp

96* @return

97* @throws SQLException

98*/

99public static Connection getSqlServerConnection() throws SQLException {

100return dsSqlServer.getConnection();

101}

102

103/**

104* @Method: release

105* @Description: 释放资源,

106* 要释放的资源包括Connection数据库连接对象,负责执行SQL命令的Statement对象,存储查询结果的ResultSet对象

107* @Anthor:孤傲苍狼

108*

109* @param conn

110* @param st

111* @param rs

112*/

113public static void release(Connection conn,Statement st,ResultSet rs){

114if(rs!=null){

115try{

116//关闭存储查询结果的ResultSet对象

117rs.close();

118}catch (Exception e) {

119 e.printStackTrace();

120}

121rs = null;

122}

123if(st!=null){

124try{

125//关闭负责执行SQL命令的Statement对象126st.close();

127}catch (Exception e) {

128 e.printStackTrace();

129}

130}

131

132if(conn!=null){

133try{

134//关闭Connection数据库连接对象

135conn.close();

136}catch (Exception e) {

137 e.printStackTrace();

138}

139}

140}

141 }

3.2、测试JNDI数据源

编写一个测试的Servlet,测试代码如下:

1package me.gacl.test;

2

3import java.io.IOException;

4import java.sql.Connection;

5import java.sql.PreparedStatement;

6import java.sql.ResultSet;

7import java.sql.SQLException;

8import java.util.ArrayList;

9import java.util.LinkedHashMap;

10import java.util.List;

11import java.util.Map;

12import javax.servlet.ServletException;

13import javax.servlet.http.HttpServlet;

14import javax.servlet.http.HttpServletRequest;

15import javax.servlet.http.HttpServletResponse;

16import me.gacl.util.JdbcUtil;

17

18/**

19*

ClassName: JNDITestServlet

20*

Description:

21*

Company:广州利迪网络科技有限公司

22* @author xudp

23* @version 1.0 V

24* @createTime 2014-10-23 上午09:32:52

25*/

26public class JNDITestServlet extends HttpServlet {

27

28public void doGet(HttpServletRequest request, HttpServletResponse response)

29throws ServletException, IOException {

30

31//Oracle数据库连接

32Connection oracleConnection = null;

33//MySql数据库连接

34Connection mySqlConnection = null;

35//SQLServer数据库连接

36Connection sqlServerConnection = null;

37

38//负责执行SQL的PreparedStatement对象

39PreparedStatement pstmtOracle = null;

40PreparedStatement pstmtMySQL = null;

41PreparedStatement pstmtSqlServer = null;

42

43//查询出来的结果集

44ResultSet rsOracle = null;

45ResultSet rsMySQL = null;

46ResultSet rsSqlServer = null;

47

48//存储查询出来的数据,每一行数据映射成一个Map,字段名作为key,字段的值作为value 49List> oracleDataList = new ArrayList>(); 50List> mySqlDataList = new ArrayList>(); 51List> sqlServerDataList = new ArrayList>(); 52

53try {

54

55//获取Oracle数据库连接

56oracleConnection = JdbcUtil.getOracleConnection();

57//获取MySql数据库连接

58mySqlConnection = JdbcUtil.getMySqlConnection();

59//获取SQLServer数据库连接

60sqlServerConnection =JdbcUtil.getSqlServerConnection();

61

62String oracleDb_Sql = "SELECT * FROM LEAD_OAMS_DBSOURCES";

63String mySqlDb_Sql = "SELECT * FROM LEAD_OAMS_APPLICATIONS";

64String sqlServerDb_Sql = "SELECT * FROM T_DEMO";

65

66pstmtOracle = oracleConnection.prepareStatement(oracleDb_Sql);

67pstmtMySQL = mySqlConnection.prepareStatement(mySqlDb_Sql);

68pstmtSqlServer = sqlServerConnection.prepareStatement(sqlServerDb_Sql);

69

70//执行查询,查询结果存储到ResultSet结果集中

71rsOracle = pstmtOracle.executeQuery();

72rsMySQL = pstmtMySQL.executeQuery();

73rsSqlServer = pstmtSqlServer.executeQuery();

74

75//循环结果集中的数据

76while(rsOracle.next()){

77Map oracleDataMap = new LinkedHashMap(); 78//取出结果集中的数据,每一行数据映射成一个map集合

79oracleDataMap.put("resourceid", rsOracle.getString("RESOURCEID"));

80oracleDataMap.put("dbsource_name", rsOracle.getString("DBSOURCE_NAME")); 81oracleDataMap.put("dbsource_type", rsOracle.getString("DBSOURCE_TYPE")); 82//将代表每一行数据的Map集合添加到List集合中

83oracleDataList.add(oracleDataMap);

84}

85

86while(rsMySQL.next()){

87Map mySqlDataMap = new LinkedHashMap(); 88mySqlDataMap.put("resourceid", rsMySQL.getString("resourceid"));

89mySqlDataMap.put("app_name", rsMySQL.getString("app_name"));

90mySqlDataList.add(mySqlDataMap);

91}

92

93while(rsSqlServer.next()){

94Map sqlServerDataMap = new LinkedHashMap(); 95sqlServerDataMap.put("id", rsSqlServer.getString("id"));

96sqlServerDataMap.put("name", rsSqlServer.getString("name"));

97sqlServerDataList.add(sqlServerDataMap);

98}

99

100//将数据集合存储到request对象发送到页面进行显示

101request.setAttribute("oracleDataList", oracleDataList);

102request.setAttribute("mySqlDataList", mySqlDataList);

103request.setAttribute("sqlServerDataList", sqlServerDataList);

104//跳转到JNDITest.jsp页面显示数据

105request.getRequestDispatcher("/JNDITest.jsp").forward(request, response);

106

107} catch (SQLException e) {

108 e.printStackTrace();

109}finally{

110//释放资源

111JdbcUtil.release(oracleConnection, pstmtOracle, rsOracle);

112JdbcUtil.release(mySqlConnection, pstmtMySQL, rsMySQL);

113JdbcUtil.release(sqlServerConnection, pstmtSqlServer, rsSqlServer);

114}

115}

116

117public void doPost(HttpServletRequest request, HttpServletResponse response)

118throws ServletException, IOException {

119doGet(request,response);

120}

121 }

JNDITest.jsp页面代码如下:

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

2 <%--引入JSTL标签库--%>

3 <%@ taglib uri="https://www.360docs.net/doc/0112275137.html,/jsp/jstl/core" prefix="c"%>

4

5

6

7JNDI测试

8

9

10

11

从Oracle数据库中取出来的数据

12<%--使用c:forEach标签遍历List集合--%>

13

14

${oracleDataMap.resourceid}---${oracleDataMap.dbsource_name}---${oracleDataMap.dbsource_type}
15

16


17

从mySql数据库中取出来的数据

18<%--使用c:forEach标签遍历List集合--%>

19

20${mySqlDataMap.resourceid}---${mySqlDataMap.app_name}

21

22


23

从sqlServer数据库中取出来的数据

24<%--使用c:forEach标签遍历List集合--%>

25

26${sqlServerDataMap.id}---${https://www.360docs.net/doc/0112275137.html,}

27

28

29

运行结果如下:

本文作者:xdp-gacl

Tomcat配置连接池常见错误及解决 - 天涯浪子 - CSDNBlog

Tomcat配置连接池常见错误及解决- 天涯浪子- CSDNBlog Tomcat配置连接池常见错误及解决收藏 1 、Cannot create JDBC driver of class '' for connect URL '' 问题:找不到jdbc 驱动,但是提示信息里的class 值为null ,所以,可以断定Tomcat 没有找到Server.xml 里的Resource 配置信息。可能的原因包括: (1 )没有配置Resource ; (2 )Resource 配置信息放置的位置错误。 (3 )一个不容易发现的错误,driverClassName 和url 拼写错误。 解决办法:确认Resource 配置正确,并且必须放在DefaultContext 或者Context 配置节内。 2 、Cannot create JDBC driver of class 'xxx' for connect URL '' 解决办法:配置的数据库驱动类名xxx 是错误的,检查并修改即可;如果确认正确,那就是找不到驱动库,拷贝一个jar 到Tomcat/common/lib 中即可。 3 、Cannot create JDBC driver of class '' for connect URL 'xxx'

解决办法:配置的url 字符串语法是错误的,检查后修改即可。 4 、Cannot create PoolableConnectionFactory, cause: Io 异常: Connection refused 问题:无法创建连接池工厂对象,原因是连接被拒绝。 解决办法:检查url 字符串,可能服务器地址、端口、数据库名或者数据库实例名等信息错误。修改。 5 、No suitable driver 没有匹配的驱动 分析:驱动程序配置错误,请确认Tomcat 的common/lib 子目录中是否有数据库驱动jar 。 6 、Cannot create resource instance 无法创建数据源实例 问题:找不到commons-dbcp-1.1.jar (版本可能不同) 解决办法:复制commons-dbcp-1.1.jar 库文件到 Tomcat/Common/lib 子目录中。 7 、root cause : https://www.360docs.net/doc/0112275137.html,ng.NoClassDefFoundError: org/apache/commons/collections/CursorableLinkedList 问题:找不到commons-collections.jar 。

linux下tomcat的配置及项目的部署流程

Java的安装配置 1.在/etc/profile文件中配置相应的信息(如下) export JAVA_HOME=/usr/java/jdk1.6.0_20 export JRE_HOME=/usr/java/jdk1.6.0_20/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH 2.是配置文件生效命令:Source/etc/profile 3.输入javac–version查看配置是否成功 TOMCAT安装配置 1.修改tomcat/bin文件夹下的catalina.sh文件,增加如下的内容: export JAVA_HOME=/usr/java/jdk1.5.0_08 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export CATALINA_HOME=/usr/local/tomcat (红色可选部分) usr/local/tomcat/bin/catalina.sh start 在/etc/rc.d/rc.local中加入: /usr/local/tomcat/bin/startup.sh(实现自动启动) 2.修改tomcat/conf文件夹下的tomcat-users.xml文件,添加相应的用户角色(manager)及用户信息(用户名及密码),具体的添加详见文件中的模板:

关于DBCP数据库连接池配置整理

1.简介 DBCP(DataBase Connection Pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是tomcat 使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。 dbcp提供了数据库连接池可以在spring,iBatis,hibernate中调用dbcp完成数据库连接,框架一般都提供了dbcp连接的方法; tomcat中也提供了dbcp的jndi设置方法,也可以不在框架中使用dbcp,单独使用dbcp 需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar 2.参数说明 翻译自https://www.360docs.net/doc/0112275137.html,

这里可以开启PreparedStatements池. 当开启时, 将为每个连接创建一个statement 池,并且被下面方法创建的PreparedStatements将被缓存起来: ●public PreparedStatement prepareStatement(String sql) ●public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) 如果容许则可以使用下面的方式来获取底层连接: Connection conn = ds.getConnection(); Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate(); ... conn.close() 默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害.(关闭底层 连接或者在守护连接已经关闭的情况下继续使用它).请谨慎使用,并且仅当需要直接访问驱动的特定功能时使用. 注意: 不要关闭底层连接, 只能关闭前面的那个 如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时被触发。 举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.在resultset中游历不被计算为被使用。 3.使用注意点

Tomcat(免安装版)的安装与配置

Tomcat(免安装版)的安装与配置 一、下载Tomcat Tomcat可以从https://www.360docs.net/doc/0112275137.html,/网站下载,选择任意版本,在 Binary Distributions 下的zip包既是。 二、配置Tomcat 1、将下载Tomcat Zip压缩包解压。 2、修改\bin\startup.bat文件: 在第一行前面加入如下两行: SET JAVA_HOME=JDK目录 SET CATALINA_HOME=前面解压后Tomcat的目录或者%cd% 如果需要使用shutdown.bat关闭服务器的话,也按照上面加入两行。 3、这样,运行startup.bat就可以运行服务器,运行shutdown.bat就可以关闭服务器了。 4、修改\conf\tomcat-users.xml文件: 在标签内加入 这样才可以使用Tomcat的管理界面。 三、将Tomcat加入服务 1、修改bin目录中的service.bat: REM 添加下面的一行 set CATALINA_HOME=%cd% 如果从来没有安装过Tomcat,或者保证Services.msc启动服务管理器检查没有Apache Tomcat 系统服务,到此你就可以转到第二步了。否则继续往下走 REM 按照描述修改下面的几行 set SERVICE_NAME=Tomcat5 REM 上面一行,Tomcat5修改成你需要的服务名,这个将是一后使用net start/stop来操作的服务名称。

Weblogic监控jndi泄露连接的方法

Weblogic监控jndi泄露连接的方法 1说明 如果后台出现“No resources currently available in pool iscjndi to allocate to applications”类似这个错误,说明weblogic 的数据库连接池满了: 可以考虑通过此方法排查一下具体是程序中的什么方法导致。 查看数据源监控页面,如果“当前活动连接数”超过系统配置的最大数字(系统默认是15,优化之后为150),就会出现以上错误: 最大连接数配置:

2配置一:设置“非活动连接超时”参数 设置后连接在指定时间内(单位:秒)没有活动的话,WebLogic会将之释放并回收到连接池。设置步骤:“数据源-(数据源名称)-连接池-非活动连接超时” 1、点击“数据源-(数据源名称)” 2、选择“连接池”

3、展开高级内容 4、找到高级中“非活动连接超时”参数,设置为100

4、保存配置 3配置二:开启weblogic数据库连接泄漏日志 设置步骤:“数据源-(数据源名称)-诊断-概要文件连接使用情况” 1、点击“数据源-(数据源名称)” 2、点击“诊断”

3、选中“概要文件连接情况”、“概要文件连接泄露”:

4、保存配置 4查看日志 在系统中操作,重现一下相关问题,同时监控weblogic日志,日志中会出现类似以下格式的异常信息,提供研发找到具体class进一步排查泄露原因。 注意:操作之后等待一段时间,weblogic自动回收连接时才产生日志,不是操作的时候立即产生。 日志文件位置: /app/weblogic/user_projects/domains/【domain名称】/servers/【server名称】/logs/【server名称】.log 比如总部测试环境的日志文件位置: /app/weblogic/user_projects/domains/mpsm_domain/servers/mpsmServer/logs/mpsmServer.log ####<2016-11-28 上午11时20分02秒CST><[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'><><><><1480303202391> ####<2016-11-28 上午11时20分12秒CST><[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'><><><><1480303212879>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

tomcat配置文件server文件详解

配置文件一般都在conf文件夹里,主要有server.xml,context.xml,tomcat_user.xml,web.xml四个常用配置文件,server主要是服务器设置的,例如端口设置,路径设置。context 里设置tomcat数据源,用来连接数据库。tomcat_user主要是用户名和密码的设置。web 是默认首页等等之类的设置。 元素名属性解释 server port 指定一个端口,这个端口负责监听关闭 tomcat 的请求 shutdown指定向端口发送的命令字符串 service name指定service 的名字 Connector(表示客户端和service之间的连接)port 指定服务器端要创建的端口号,并在这个断口 监听来自客户端的请求 minProcessors服务器启动时创建的处理请求的线程数maxProcessors最大可以创建的处理请求的线程数 enableLookups 如果为true ,则可以通过调用 request.getRemoteHost() 进行DNS 查询来 得到远程客户端的实际主机名,若为false 则 不进行DNS 查询,而是返回其ip 地址redirectPort 指定服务器正在处理http 请求时收到了一个 SSL 传输请求后重定向的端口号acceptCount 指定当所有可以使用的处理请求的线程数都被 使用时,可以放到处理队列中的请求数,超过 这个数的请求将不予处理 connectionTimeo ut 指定超时的时间数( 以毫秒为单位) Engine(表示指定service 中 的请求处理机,接收和处理来自Connector的请求)defaultHost 指定缺省的处理请求的主机名,它至少与其中 的一个host 元素的name 属性值是一样的 Context(表示一个 web 应用程序,通常为WAR 文件,关于WAR 的具体信息见servlet 规范)docBase应用程序的路径或者是WAR 文件存放的路径path 表示此web 应用程序的url 的前缀,这样请 求的url为http://localhost:8080/path/ **** reloadable 这个属性非常重要,如果为true ,则 tomcat 会自动检测应用程序的 /WEB-INF/lib 和/WEB-INF/classes 目录的 变化,自动装载新的应用程序,我们可以在不 重起tomcat 的情况下改变应用程序 host(表示name指定主机名

Web管理应用配置数据源连接池

1、使用 Tomcat 的 Web 管理应用配置数据源 启动 Tomcat 服务器,打开浏览器,输入 http://localhost:8080/admin/(其中 localhost 是名 称服务器或称为主机,没安装 admin 的参考后面的安装步骤),进入管理界面的登陆页面, 这时候请输入原来安装时要求输入的用户名和密码,登陆到管理界面,
选择 Resources-Data sources 进入配置数据源界面,选择 Data Source Actions ->选择 Create New Data Source,进入配置详细信息界面,内容如下: JNDI Name: jdbc/BookDB Data Source URL: jdbc:mysql://localhost:3306/BookDB JDBC Driver Class: com.mysql.jdbc.Driver User Name: dbusr Password: 1234 Max. Active Connections: 4 Max. Idle Connections: 2 Max. Wait for Connection: 5000 Validation Query: 按要求输入的 JNDI Name 等信息,其中除了 JDBC DriverClass 之外,其他的可以根据需要 填写。最后点击 Save->Commit Change. 注:这里的 BookDB 是我使用的数据库的名称 2、修改 web.xml 打开%TOMCAT_HOME%\conf\web.xml,在的前面添加以下内容: DB Connection jdbc/BookDB javax.sql.DataSource Container 3、修改%TOMCAT_HOME%\conf\Catalina\localhost 下对应你的引用的配置文件 在%tomcat_home%\conf\Catalina\localhost\下建立 bookstore.xml,如下

tomcat配置信息

tomcat6.0配置 第一步:下载j2sdk和tomcat:到sun官方站点 最新的jdk为1.6.04,tomcat为6.0,建议jdk1.4以上,tomcat4.0以上 第二步:安装和配置你的j2sdk和tomcat:执行j2sdk和tomcat的安装程序,然后设置按照路径进 行安装即可。 1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加 以下环境变量(假定你的j2sdk安装在c:\j2sdk1.4.2): JAVA_HOME=c:\j2sdk1.4.2 classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表 当前路径) path=%JAVA_HOME%\bin 接着可以写一个简单的java程序来测试J2SDK是否已安装成功: 将上面的这段程序保存为文件名为Test.java的文件。 然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令 javac Test.java java Test 此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需 要仔细检查一下你的配置情况。 2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的 tomcat安装在c:\tomcat): CATALINA_HOME:c:\tomcat CATALINA_BASE:c:\tomcat TOMCAT_HOME: C:\Tomcat 然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到 classpath中去,修改后的classpath如下:

Jndi配置

一、tomcat6配置 找到tomcat6的安装后的目录,在conf文件中的context.xml,配置如下: 注:driverClassName="oracle.jdbc.driver.OracleDriver" //oracle的驱动包 url="jdbc:oracle:thin:@192.168.1.34:1521:orcl" //url username="lyc" //用户名 password="lyc" //密码 为你自己的项目配置。 二、数据库驱动包 必须把数据库驱动包放在TOMCAT目录里的lib目录 三、ssh中配置 hibernate.cfg.xml去掉,此文件内全部配置在spring的配置文件中 在src根目录下面创建一个init.properties配置文件出来,这个文件保存着一些配置信息,然后在spring初始化时读取这个配置文件,init.properties 内容如下: jdbc.dbpool4jndi=java:comp/env/jdbc/jndipool #jdni名称 #以下是hibernate的配置信息 hibernate.dialect=org.hibernate.dialect.Oracle9Dialect hibernate.show_sql=true hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider https://www.360docs.net/doc/0112275137.html,e_query_cache=true hibernate.connection.autocommit=true hibernate.jdbc.batch_size=50 hibernate.jdbc.fetch_size=5 applicationContext.xml中配置:

net weaver JNDI方式连数据库

JDBC连数据库 一、配置jdbc 1.在浏览器中输入http://<服务器IP>:<端口> /nwa,进入登陆页面,输入用户名密码 登陆。 2.选择Configuration Management → Infrastructure → Application Resources。点击进入 后界面如下: 3.新增数据库驱动(Create New Resource→Deploy New JDBC Driver)

上传驱动: 成功后界面如下: 4.创建JDBC datasource(在每次服务器重启后失效)

填入相关信息 点击保存成功后,如下图(如果状态不是Fully Available,请检查配置重新配置)

配置完成后在程序中通过如下方法调用连接: InitialContext initialcontext = new InitialContext(); DataSource ds = (DataSource) initialcontext.lookup("jdbc/testJdbc") ; Connection con = ds.getConnection() ; 连接数据库经常用到,可以写一个类专门处理数据库操作(后面的实例中就是用这 种方式的)。 二、设计web Dynpro界面。 1.完成以上配置后,在net weaver studio中配置sap服务器(配置方法如下图)

2.开始web Dynpro工程(file—>new web Dynpro development Component),创建完成 后展开工程选址Application,右键创建Application。创建完成后如图: 3.打开创建的components的component controller,在context中创建如下context对 象,用来存放数据对象。

Tomcat配置数据源连接MySql数据库

1. 修改Tomcat安装目录下的conf文件夹里的context.xml文件. 在context.xml文件中添加以下内容:(注意是在之间添加) 其中:name必须为"jdbc/..."的形式."..."是指你想给datasource命名的名字. username是连接数据库的用户名. password是连接数据库的密码. url是jdbc:mysql://主机名:端口号/数据库名称 2. 在Tomcat安装目录下的webapps里创建工程MyTest工程. 3. 将ROOT下的WEB-INF文件夹整个拷贝至MyTest中. 4. 修改修改MyTest\WEB-INF中web.xml,在中添加如下 DB Connection jdbc/mytest javax.sql.DataSource Container 此处的名字应与context.xml中Resource name一致。 5. 在Tomcat服务器下的lib文件夹下添加连接MySQL数据库的驱动包。 6. MyTest下编写jsp测试连接池是否成功,在MyTest文件夹下创建myTest.jsp文件.输入内容如下:(注意修改数据库名字.) <%@ page import=”java.sql.*, javax.sql.*, javax.naming.*”contentType="text/html;charset=gb2312"%> 连接池测试页面 <%out.println("

Hello,test DBCP !

");%> <%

SpringMvc +Mybatis最全的配置

Springmvc+mybatis框架配置 (内含日志+多数据源配置+事务配置+maven配置)1spring-mvc.xml

Spring配置数据源的四种方式

Spring配置数据源的四种方式Spring框架支持四种数据源的配置: 1.自带数据源(DriverManagerDataSource) 2.DBCP数据源 3.C3P0数据源 4.JNDI数据源 准备: 2.Spring-config.xml中引入配置文件(注册JDBC属性配置文件) 方式二:(需要添加context约束)

第二种方式:DBCP数据源 便Spring容器关闭时,数据源能够正常关闭。除以上必须的数据源属性外,还有一些常用的属性:defaultAutoCommit:设置从数据源中返回的连接是否采用自动提交机制,默认值为true; defaultReadOnly:设置数据源是否仅能执行只读操作,默认值为false; maxActive:最大连接数据库连接数,设置为0时,表示没有限制; maxIdle:最大等待连接中的数量,设置为0时,表示没有限制; maxWait:最大等待秒数,单位为毫秒,超过时间会报出错误信息; validationQuery:用于验证连接是否成功的查询SQL语句,SQL语句必须至少要返回一行数据,如你可以简单地设置为:“select count(*) from user”; removeAbandoned:是否自我中断,默认是false ; removeAbandonedTimeout:几秒后数据连接会自动断开,在removeAbandoned为true,提供该值; logAbandoned:是否记录中断事件,默认为false; 第三种方式:C3P0数据源 们就可以保证Spring容器关闭时数据源能够成功释放。 acquireIncrement:当连接池中的连接用完时,C3P0一次性创建新连接的数目; acquireRetryAttempts:定义在从数据库获取新连接失败后重复尝试获取的次数,默认为30; acquireRetryDelay:两次连接中间隔时间,单位毫秒,默认为1000; autoCommitOnClose:连接关闭时默认将所有未提交的操作回滚。默认为false; automaticTestTable:C3P0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数,那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将中为C3P0测试所用,默认为null; breakAfterAcquireFailure:获取连接失败将会引起所有等待获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认为false; checkoutTimeout:当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后

JBOSS数据库配置大全

JBOSS数据库配置大全 Jboss 4.0的开发人员版本是一个开源的应用服务器, 他把HypersonicDB作为他的缺省数据库。然而,开发人员 也许还要使用除了Hyp ersonicDB以外其他种类的数据库, 在这篇文章中我们将看到如何在Jboss上配置使用其他的数 据库。 简介 Jboss4.0使用了JDBC配置文件来配置数据库连接,它 为EJB和其它J2EE应用提供了数据源(data source)进行访 问。如果你要使用Hyp ersonicDB以外的数据库你就要修改 这雠渲梦募U馄恼陆胖亟步庀旅娴募父霾糠郑?BR> Jboss的EJB部署描述符 Oralce数据库的配置 MySQL数据库的配置 Sysbase数据库的配置 DB2数据库的配置 Infomix数据库的配置 Jboss的EJB部署描述符standardjaws.xml (位于 X:\jboss4\server\default\conf ) 是一个映射CMP实体EJB的标准部署描述文件。它用于配置CMP 实体EJB,你也可以使用jaws.xml代替。你可以把这个文件copy 到ejb .jar 文件中的META-INF 目录下。这个文件用于描述下

面的信息: 描述一个数据源和映射类型。 描述EJB 映射的表描述EJB 的finder 方法描述类型映 射 这里的数据源描述的是一个JNDI 名称,可以通过这个 JNDI 来获得一个数据源连接池。Jboss4 缺省的数据源使用的是HypersonicDB 。如果使用其他的数据源你需要修改 jaws.xml 文件。 standardjbosscmp-jdbc.xml (位于 X:\jboss4\server\default\conf )是配置Jboss CMP 容器的标准部署描述文件,你也可以使用一个自定义的配置文件 --jbosscmp-jdbc.xml 来代替它。这个文件也放在EJB.jar 文件的META-INF 目录中。缺省使用的还是HypersonicDB 作为数据库,这里也需要修改。 Oracle 数据库的配置 Oracle 以它的运行稳定和可靠成为了一个非常受欢迎 的企业级数据库。要在Jboss 上配置使用Oracle 的话我们要做的第一件事就是把Oracle 的JDBC 驱动程序复制到 ClassPath 下。我们把这个JDBC 驱动程序复制到 server/default/lib 目录下。为了使用Oracle 的事务处理数据

数据库连接池配置的几种方法

今天遇到了关于数据源连接池配置的问题,发现有很多种方式可以配置,现总结如下,希望对大家有所帮助:(以Mysql数据库为例) 一,Tomcat配置数据源: 方式一:在WebRoot下面建文件夹META-INF,里面建一个文件context.xml,内容如下: 方式二:在tomcat6.0的目录conf下面的context.xml中,修改原来的context标签,改成内容如下: WEB-INF/web.xml 方式三:在配置虚拟目录时,也就是在配置conf下面的server.xml时,在context标签内改成如下形式:

相关文档
最新文档