您的位置:首页 > 运维架构 > Tomcat

tomcat5.5.28+admin+serverlet配置数据源连接池

2010-04-11 18:35 519 查看
总结一下吧!

留个脚印,说不定哪里又忘了,这个东西,时间长了不用,到时又不记得了,记下来,将来或许还用得着,也给后人参考.

那就从头开始吧

首先要准备admin插件,tomcat5好像没有将admin集成进tomcat了,而是作为插件了.输入:http://localhost:8080/admin如果出现以下界面恭喜你,你已经装过了.下面的可以不用看了.跳过吧!!



如果没有安装:那么安装吧

1:下载admin插件,可以去官网下也可以去这里下:http://download.csdn.net/source/2227639;

2:安装;

1:将下载的.../webapps/admin文件夹放在你的%Tomcat_home%webapps下

2:将下载的.../conf/Catalina/localhostadmin.xml文件放到你的%Tomcat_home%conf/Catalina/localhost

3:%Tomcat_home%conf/tomcat-users.xml最后加下以下语句,如果以前装tomcat时设过密码,下面这段已经有了,不用再加,

username;password可以随便设,用于登陆之用,不记得密码可以在这里看,呵呵

<user username="admin" password="admin" roles="admin,manager"/>

tomcat-users.xml文件如下:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>


好了,先试试吧,看成功没成功.

启动tomcat输入上述地址看出来没,如果启动tomcat报错,可看看那个%Tomcat_home%conf/Catalina/localhost 下的admin.xml文件

里面有这样一段

<Context docBase="${catalina.home}/server/webapps/admin" privileged="true"
antiResourceLocking="false" antiJARLocking="false">看看这个地址跟你的tomcat是否一致,我的是不一致,因为我们下载的admin插件的webapps在文件夹server下,而我自己装的前面并没有这个server文件夹,所以将这里的server去掉,<Context docBase="${catalina.home}/webapps/admin" privileged="true" antiResourceLocking="false" antiJARLocking="false">

同样webapps下的admin里也有一个admin.xml这个里面的同样改一改吧,

这下应该不会有错了.admin安装就到此,下面开始配置吧.

2:配置tomcat连接池

登陆tomcat的admin,在左边的树里有一个resources下面有一个data sources;我们点他在右边有一个下拉框,我们选

Create New Data Source 在这里配置
开始吧:



JNDI Name: jdbc/dmst//这里你写自己的吧,但是后面要跟这里一致
Data Source URL: jdbc:mysql://localhost:3306/qxxt?useUnicode=true;characterEncoding=GBK
JDBC Driver Class: com.mysql.jdbc.Driver
User Name: root
Password: root
其他默认吧
完了记得save一下,最后一定要commit changes才能生效
这时在我们的 %tomcat%con/server.xml里会有这段
<Resource
name="jdbc/dmst"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
password="hnbc145"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/qxxt?useUnicode=true&characterEncoding=GBK"
maxActive="4"/>
好了,tomcat好像已经配完了,接下来我们要在我们的项目中配了,项目中要配两处地方:一处是web.xml里,另一处在eclise中好像还找不到.要在tomcat中找,我们把项目发布到tomcat中后,在webapps/你的项目名/META-INF/context.xml这个文件参考上面的server.xml配吧,跟他一样就OK了.
3:配项目context.xml
在<Context>这间加入,如果有则改一下
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Listener className="org.apache.catalina.startup.TldConfig"/>
<Listener className="org.apache.catalina.startup.TldConfig"/>
<Listener className="org.apache.catalina.startup.TldConfig"/>
<Listener className="org.apache.catalina.startup.TldConfig"/>
<Resource
auth="Container"
description="dmst"
name="jdbc/dmst"
password="hnbc145"
username="root"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/qxxt?useUnicode=true&characterEncoding=GBK"
</Context>
怎么样跟上面一样吧,默认好像有些项是没有,连 driverClassName这一样后面都是空的,如果不配置的话,后面会报错的,很多人就在这里犯错了,而且找不到原因,这个错就是Cannot create JDBC driver of class '' for connect URL 'null';如果你们遇到了,可以考滤这里,OK
4:再配web.xml吧
直接贴代码吧
<resource-ref>
<description>dmst</description>
<res-ref-name>jdbc/dmst</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
直接加在web-app之间就可以了
OK测试吧:
看看我们成果吧,我们决定写一个serverlet测,不写jsp测,呵呵一样拉
serverlet记得在web.xml里配哦
package test;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

public class TestServerlet extends HttpServlet {

@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {

DataSource ds = null;
try {
InitialContext ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/dmst");
Connection conn = ds.getConnection();

PreparedStatement ps=conn.prepareStatement("select * from sm_user");
ResultSet rs=ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1)+","+rs.getString(2));
}
rs.close();
ps.close();
conn.close();

} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>TestServerlet</servlet-name>
<servlet-class>test.TestServerlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServerlet</servlet-name>
<url-pattern>/servlet/TestServerlet</url-pattern>
</servlet-mapping>
插在web.xml的web-app中间吧
输入地址:http://localhost:8080/项目名/servlet/TestServerlet+回车试试吧,
好,一切都OK了,没什么难的吗?继续努力

====================================================================================
=== 修改一下 ==
====================================================================================
以上配的是全局的,今天重新布署了一下项目,发现问题又出现了,后来干脆不用上面的方式来弄了.
我们还是配一个局部的,我的项目是名叫pmsm
登陆tomcat的admin页面



选择你的项目,单独为他创建一个数据源,这样我们只要在我们的web.xml文件中配一下就可以了,省得麻烦.
<resource-ref>
<description>dmst</description>
<res-ref-name>jdbc/dmst</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: