Tomcat数据源和连接池配置怎么配~~ 小弟快疯了~~~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat数据源和连接池配置怎么配~~ 小弟快疯了~~~相关的知识,希望对你有一定的参考价值。

到底怎么配置的?又是server.xml 又是conf/Catalina/localhost/*.xml 又是web.xml的
配置信息放在server.xml的什么位置?现在搞得连tomcat有启动不了
警告: Catalina.start using conf/server.xml:
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效。。。。。
高手帮帮忙
都配了一天了~~~
还有一个问题:从servlet输出mysql的数据 中文为什么显示乱码?我在控制台上打印出来中文显示正常?response.setContentType("text/html;gbk");
request.setCharacterEncoding("gbk"); utf-8都试了 可还是显示乱码!请问怎么解决?

参考技术A 这位小同学,不同TOMCAT版本的数据原配置是不一样的?你用的是tomcat6还是tomcat5?
我给你配吧 我的是tomcat6.0
(1)第一步:在tomcat的配置文件(context.xml)加入数据库连接信息
<Resource name="jdbc/dataBase1" auth="Container" type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"//你的数据库驱动程序名字;
url="jdbc:oracle:thin:@192.168.20.90:1521:carddb"你的数据库URL连接;
username="card"//用户名
password="password"//密码
maxActive="20"//连接池的最大数据库连接数,设为0表示无限制
maxIdle="10"//
maxWait="10000" />

(2)在web.xml中配置引用
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/dataBase1</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

(3)第三部测试代码

测试代码:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DataSourceTest
public static Connection getCon()
Connection conn = null;
try
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/dataBase1");
conn = ds.getConnection();
catch(NamingException e)
e.printStackTrace();
catch(SQLException e)
e.printStackTrace();

return conn;

追问

数据源已经配好了 另外在请教一下 我从servlet输出mysql的数据 中文为什么显示乱码?我在控制台上打印出来中文显示正常?response.setContentType("text/html;gbk");
request.setCharacterEncoding("gbk"); utf-8都试了 可还是显示乱码!请问怎么解决?

追答

先给分就给你解决

参考技术B response.setContentType("text/html;gbk");这段代码有错。

应该是:response.setContentType("text/html;charset=gbk");

Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置

Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题:
(1)dbcp 是单线程的,为了保证线程安全会锁整个连接池
(2)dbcp 性能不佳
(3)dbcp 太复杂,超过 60 个类,发展滞后。
因此,通常J2EE中还会使用其它的高性能连接池,如 C3P0,还有阿里系的 druid 等。为此,Tomcat 从 7.0 开始引入一个新的模块: Tomcat jdbc pool
tomcat jdbc pool 近乎兼容 dbcp ,性能更高
异步方式获取连接
tomcat jdbc pool 是 tomcat 的一个模块,基于 tomcat JULI,使用 Tomcat 的日志框架
使用 javax.sql.PooledConnection 接口获取连接
支持高并发应用环境
超简单,核心文件只有8个,比 c3p0 还少
更好的空闲连接处理机制
支持 JMX
支持 XA Connection。
tomcat jdbc pool 可在 Tomcat 中直接使用,也可以在独立的应用中使用。

1.Tomcat 中直接使用的方法:
在conf/server.xml下的<GlobalNamingResources>节点里配置resource,例如:

 

<Resource name="jdbc/ens"
      auth="Container"
      type="javax.sql.DataSource"
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
      testWhileIdle="true"
      testOnBorrow="true"
      testOnReturn="false"
      validationInterval="30000"
      timeBetweenEvictionRunsMillis="30000"
      maxActive="100"
      minIdle="10"
      maxWait="10000"
      initialSize="10"
      removeAbandonedTimeout="60"
      removeAbandoned="true"
      logAbandoned="true"
      minEvictableIdleTimeMillis="30000"
      jmxEnabled="true"
      jdbcInterceptors=
"org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
      username="root"
      password="123"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost:3306/ens"/>

 

然后,在context.xml文件的<Context></Context>节点中添加如下配置:

<ResourceLink global="jdbc/ens" name="jdbc/ens" type="javax.sql.DataSource"/>

 

global="jdbc/ens" 中的参数值("jdbc/ens")必须和上一段<Resource >配置中的name属性的值保持一样。name="jdbc/ens" 这个可以随便取,但是在程序中调用的时候,就应该与name的值保持一致。到这里,连接池已经配置好啦。

用JSP测试一下:

 

<%@ page language="java" pageEncoding="gbk"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.naming.Context"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%
   //连接池的获取
    Connection conn = null;
    DataSource ds = null;
    ResultSet rs  =null;
    Statement stmt = null;
    Context initCtx = new InitialContext();
    ds =(DataSource)initCtx.lookup("java:comp/env/jdbc/ens");
   if(ds!=null){
        out.println("已经获得DataSource!"); 
        out.println("<br>");
        conn = ds.getConnection();
       try{
        stmt = conn.createStatement();
        String sql ="select * from ens_area";
        rs = stmt.executeQuery(sql);
        out.println("以下是从数据库中读取出来的数据:<br>");
            while(rs.next()){
                out.println("<br>");
                out.println(rs.getString("area_name"));
            }
       }catch(Exception ex){
         ex.printStackTrace();
       }finally{
          conn.close();
          rs.close();
          stmt.close();
       }
   }
%>



http://www.open-open.com/lib/view/open1365991769687.html

以上是关于Tomcat数据源和连接池配置怎么配~~ 小弟快疯了~~~的主要内容,如果未能解决你的问题,请参考以下文章

性能实战分析-问题分析

java中建立数据库连接池,有哪几个步骤

tomcat 6..0.20 连接池配置 SQL server 2000数据库

配置Tomcat服务器数据连接池

tomcat怎么配置JNDI连接

Tomcat7和mysql连接池dbcp方式的配置方法和测试