Jbuilder2006+MySQL5.0+Tomcat5.5.9数据源配置(原创)

Jbuilder2006+MySQL5.0+Tomcat5.5.9数据源配置(原创)

 

MationChen 2008-4-27

 

这些天在网上找了不少有关这方面的资料,对于JB自带的猫(5.5.9+MySQL5.0配置数据源总结了方法如下:

第一步,创建JB工程myApp,其web Module 名为 myWeb,并在其下创建DBConntest.jsp作为测试之用。

第二步,创建MySQL数据库,数据库名为mytest,在数据库中建立数据库表test,并创建测试用字段test1,test2,写入测试用数据

语句如下:

/*

MySQL Data Transfer

Source Host: localhost

Source Database: mytest

Target Host: localhost

Target Database: mytest

Date: 2008-4-27 11:52:21

*/

 

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for test

-- ----------------------------

CREATE TABLE `test` (

  `test1` varchar(255) default '',

  `test2` varchar(255) default ''

) ENGINE=InnoDB DEFAULT CHARSET=gbk;

 

-- ----------------------------

-- Records

-- ----------------------------

第三步,运行JB中的DBConntest.jsp页面,目的是在工程文件夹下生成web.xml

server8083.xml(如果猫的端口是8080则生成server8080.xml

 

其中,server8083.xml文件位置在工程文件夹下面myApp/tomcat/conf目录下,笔者的工程在 D:/work/myApp,则文件位置就应该在D:/work/myApp/Tomcat/conf目录下。

web.xml则在myApp/myWeb/WEB-INF/目录下,也可以在JB的工程中找到web.xml

 

以上三步是基本的准备工作,接下来就要开始进行联接啦!

第四步,是mysql驱动,笔者用的是mysql-connector-java-5.0.8-bin.jar,读者可以在网上自己下载。

驱动应该放在JB安装目录下面的/thirdparty/jakarta-tomcat-5.5.9/common/lib下边,就是说要把驱动给拷到/thirdparty/jakarta-tomcat-5.5.9/common/lib文件夹下。

 

第五步,修改xml文件,这一步是最为关键的,要不然就够你受的啦!

 

首先,记住,是首先。也就是说是第一步,网上都说这一步在修改sever.xml之后,我觉得不然,应该是这一步在前!

应该在web.xml文件中的<web-app> </web-app>中间添加:

<resource-ref>

    <description>db conn</description>

    <res-ref-name>jdbc/myWeb</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

 </resource-ref>

 

解释一下,<res-ref-name>jdbc/myWeb</res-ref-name>

res-ref-name填写的内容是JNDI Name名称,应与server8083.xml以及程序中的lookup("jdbc/myWeb")保持一致。

其他的,description是描述,可以自己写,而res-type,res-auth则按默认即可。

 

然后,修改之前提到的server8083.xml,文件如下图所示

看到灰色部分了吧?红圈中的那些,记住,一定要删除!

即删除如下文字

<!--This comment marks this file as generated, so it may be deleted and regenerated at any time. To preserve manual changes to this file, delete this comment.-->

这一段的意大概就是说这个文件是JB自己生成的,把这一段注释删除就能防止JB自己修改那个文件!所以一定要删除的

 

然后便在<Context></Context>中间添加如下内容:

<Resource

      name="jdbc/myWeb"             

      type="javax.sql.DataSource"

      password="sa"

      driverClassName="com.mysql.jdbc.Driver"

      maxIdle="2"

      maxWait="5000"

      username="root"

      url="jdbc:mysql://localhost:3306/mytest"

      maxActive="4"/>

      <!--

      name:  JNDI数据源名称应该与web.xml以及程序中的lookup("jdbc/myWeb")相对应

      type:  按默认即可

      password:  mysql的用户密码

      driverClassName :  驱动类名

      url: 其是的mytest为数据库名,3306mysql的端口

      username:用户名

      maxIdle maxWait maxActive 三项按默认即可,我指的是在开发环境下,如果是在服务器中运行请另外参照相关资料     

      -->

完成之后文件如下

Server8083.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<Server port="8084" shutdown="SHUTDOWN">

<Service name="Catalina">

<Connector acceptCount="10" connectionTimeout="60000" maxThreads="75" minSpareThreads="5" port="8083"/>

<Engine defaultHost="localhost" name="Catalina">

<Host appBase="D:/work/myApp/Tomcat/webapps" autoDeploy="false" deployXML="false" name="localhost" unpackWARs="false">

<Context docBase="D:/work/myApp/myWeb" path="/myWeb" reloadable="true" workDir="D:/work/myApp/Tomcat/work/myWeb">

<Resource

      name="jdbc/myWeb"             

      type="javax.sql.DataSource"

      password="sa"

      driverClassName="com.mysql.jdbc.Driver"

      maxIdle="2"

      maxWait="5000"

      username="root"

      url="jdbc:mysql://localhost:3306/mytest"

      maxActive="4"/>

</Context>

</Host>

</Engine>

</Service>

</Server>

 

最后,建立测试页面

DBConntest.jsp

 

<%@ page contentType="text/html; charset=GBK"

import="java.sql.*,javax.sql.*,javax.naming.*" %>

<%request.setCharacterEncoding("GBK"); %>

<html>

<head>

<title>

DBConntest

</title>

</head>

<body bgcolor="#ffffff">

<h1>

mySql联接测试

</h1>

<%

 out.print("测试开始!+<br/>");

 DataSource ds=null;

 try{

  InitialContext initCtx=new InitialContext();

  Context ctx = (Context) initCtx.lookup("java:comp/env");

  ds=(DataSource)ctx.lookup("jdbc/myWeb");

  //"jdbc/myWeb"对应web.xml以及server8083.xml文件中的JNDI Name

  Connection conn=ds.getConnection();

  Statement stmt=conn.createStatement();

  String strSql="select * from test";

  ResultSet rs=stmt.executeQuery(strSql);

  while(rs.next()){

   out.print(rs.getString(1));

   out.print("<br/>");

   out.print(rs.getString(2));

   out.print("<br/>");

  }

  out.print("测试完成!<br/>");

 }catch(Exception e){

  e.printStackTrace();

 }

 %>

</body>

</html>

 

在浏览器中输入:http://localhost:8083/myWeb/DBConntest.jsp

 

运行页面,可以得到如下结果:

 

这样,配置就算是大功告成啦!还想再提一下,本文与网上许多文章不同的地方就是强调一定要先配置web.xml,再修改server8083.xml,这是笔者经过好几天实践所得出的结论^_^

 

调试过程中可能会遇到一些异常

异常一:Cannot create JDBC driver of class '' for connect URL 'null'

解决方法:

<Context ...></Context>中间添加

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

异常二:javax.naming.NameNotFoundException: Name XXX is not bound in this Context

解决方法:

网上对于这个异常的解决方法是在Web.xml中添加

<resource-ref>

    <description>db conn</description>

    <res-ref-name>jdbc/myWeb</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

 </resource-ref>

但是刚形如笔者和许多网友一样按此方法并不能解决此问题,经过几天的摸索,笔者觉得是在配置过程中的web.xmlserver808.xml顺序问题,按照笔者的方法配置去配置并没有出现这个异常,大家不妨试试^_^

PS:网上有一篇对于mysql联接过程中出现在异常进行总结的文章分析得详细,大家也可以参考参考:http://neonlight.bokee.com/5517972.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值