1.在tomcat/common/lib下的jar文件,若更新或新增了,则只能重启服务器,才能重新加载jar包,使jar包生效。
2.如果application的WEB-INF/lib下的jar文件更新,则可以不重启tomcat便能使之生效,做法是修改application的Context,修改其reloadable属性为true,(如果没有该属性就添加),该属性默认是false。
例如:
<Context path="/myweb" docBase="D:\workplace\myweb\WebRoot"
debug="5" reloadable="true" crossContext="true"/>
当我们启动一个tomcat的服务的时候,jar包和claess文件是是以怎么样的顺序被加载进来的?
加载顺序:
1. $java_home/lib 目录下的java核心api
2. $java_home/lib/ext 目录下的java扩展jar包
3. java -classpath/-Djava.class.path所指的目录下的类与jar包
4. $CATALINA_HOME/common目录下按照文件夹的顺序从上往下依次加载
5. $CATALINA_HOME/server目录下按照文件夹的顺序从上往下依次加载
6. $CATALINA_BASE/shared目录下按照文件夹的顺序从上往下依次加载
7. 我们的项目路径/WEB-INF/classes下的class文件
8. 我们的项目路径/WEB-INF/lib下的jar文件
在同一个文件夹下,jar包是按顺序从上到下依次加载
1、在tomcat根目录下新建shared/lib目录结构,将项目的jar包放在此目录下,记得将项目下的jar包(一般在项目的WEB-INF\lib目录下)删除。
2、修改tomcat的conf目录下的catalina.properties文件,主要修改两处
1)shared.loader的值改为自己建立的共享jar包目录中所有的jar包,本例为:
shared.loader=D:/Program Files/Tomcat7/shared/lib/*.jar
2)tomcat.util.scan.DefaultJarScanner.jarsToSkip的值全部注释掉,追加*.jar。本例为:
tomcat.util.scan.DefaultJarScanner.jarsToSkip=\
*.jar
效果:修改后tomcat的启动速度加快。
同时防止tomcat多次加载项目中重复的jar包,造成内存移除异常。
注:实际部署的时候发现,不需要修改“tomcat.util.scan.DefaultJarScanner.jarsToSkip”的值,修改后反而可能出错,具体原因未知。
使用的时候具体情况具体分析
安装Tomcat之前要先安装JDK,可从http://java.sun.com上下载最新版本的JDK。Tomcat可从Apache Jakarta Project站点(http://jakarta.apache.org/site/binindex.cgi)上下载。本人使用的Tomcat版本是5.5.20,它需要安装J2SE 5.0(JDK 1.5)以上的版本才能运行。
第一步、安装jdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的j2sdk安装在c:/jdk1.5.0_09):
JAVA_HOME=c:/jdk1.5.0_09
classpath=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;(.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%/bin
接着可以写一个简单的java程序来测试J2SDK是否已安装成功:
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
public class Test{
public static void main(String args[]){
System.out.println("This is a test program.");
}
}
将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
javac Test.java
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
第二步、安装tomcat
下载apache-tomcat-5.5.20.exe 和 apache-tomcat-5.5.20-admin.zip 包,将下载的安装包,解压,并安装在C盘,填写设置的帐号和密码,默认可以设置 admin 123456.安装好后,我们就可以检验,tomcat5.5是否安装成功,打开开始菜单中的 Apache Tomcat 5.5-->Configure Tomcat 菜单.出现下面界面:我们点"start"启动tomcat5.5的服务,你也可以在服务里面,启动tomcat5.5.在浏览器中输入,http://127.0.0.1:8080,默认端口:8080,如果你安装改变了端口,你需要输入你设置的端口.如果出现下面的画面,说明你的Tomcat5.5已经成功安装.
Tomcat5.5 的admin安装包,需要我们独立下载,下载TOMCAT5.5 Admin.
解压该安装包 把目录apache-tomcat-5.5.20-admin下的apache-tomcat-5.5.20 中的 server,config两个目录和RELEASE-NOTES NOTICE LICENSE 全部复制到 C:/Program Files/Apache Software Foundation/Tomcat 5.5 下,覆盖原文件.重新启动tomcat5.5服务,点左边的 Tomcat Administration 或在地址栏中输入:http://127.0.0.1:8080/admin/ 输入你在安装时候设置的 帐号 和密码 默认是:admin 123456,进入如下的界面.我们可以在admin中配制连接池。
安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:/tomcat)://先不设置会有什么影响???????????????
CATALINA_HOME:c:/tomcat
CATALINA_BASE:c:/tomcat
TOMCAT_HOME: C:/tomcat
然后修改环境变量中的classpath,把tomat安装目录下的common/lib下的servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;%CATALINA_HOME%/common/lib/servlet-api.jar;
第三步:建立自己的jsp app目录
1.到Tomcat的安装目录的webapps目录,可以看到ROOT,examples, tomcat-docs之类Tomcat自带的的目录;
2.在webapps目录下新建一个目录,起名叫myapp;
3.myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
4.WEB-INF下新建一个文件web.xml,内容如下:
<!--[if !supportLineBreakNewLine]-->
<!--[endif]--> <?xml version="1.0" encoding="ISO-8859-1"?>
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Webdav Content Management</display-name>
<description>
Webdav Content Management
</description>
</web-app>
5.在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:
<html><body><center>
Now time is: <%=new java.util.Date()%>
</center></body></html>
6.重启Tomcat
7.打开浏览器,输入http://localhost:8080/myapp/index.jsp 看到当前时间的话说明就成功了。
第四步:建立自己的Servlet:HelloWorld.java:
写入你的第一个Servlet
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
package com;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)th
rows ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>");
out.println("This is my first Servlet");
out.println("</title></head><body>");
out.println("<h1>Hello,World!</h1>");
out.println("</body></html>");
}
}
将HelloWorld.java放在c:/com下,使用如下命令编译:
C:/com>javac HelloWorld.java
然后在c:/com下会产生一个编译后的servlet文件:HelloWorld.classes
如果出现无法import javax.servlet.*,那么就是应该把C:/Tomcat/common/lib里面的servlet.jar文件拷贝到C:/JDK/jre/lib/e
xt中,再次编译,就没有问题了!
1、 在%CATALINA_HOME%/webapps/myapp/WEB-INF/下新建一个classes目录,然后新建com文件夹,将编译后的servlet文件:HelloWorld.class, 拷贝到com下,现在webapps/myapp/WEB-INF/classes/com下有HelloWorld.class的文件目录结构。
2、修改webapps/myapp/WEB-INF/web.xml,添加servlet和servlet-mapping如下所示:
<servlet>
<servlet-name>haiergk</servlet-name>
<servlet-class>com.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>haiergk</servlet-name>
<url-pattern>/testservlet</url-pattern>
</servlet-mapping>
3、在修改web.xml完毕过后,重新启动Server,然后再输入http://localhost:8080/servlet/testservlet,那么偌大一个Hello,World!等
着你呢
第五步:建立自己的Bean:
1.用你最熟悉的编辑器(建议使用有语法检查的java ide)新建一个java程序,文件名为TestBean.java,文件内容如下:
package com;
public class TestBean{
private String name = null;
public TestBean(String strName_p){
this.name=strName_p;
}
public void setName(String strName_p){
this.name=strName_p;
}
public String getName(){
return this.name;
}
}
2 .编译
将TestBean.java放在c:/com下,使用如下命令编译:
C:/com>javac TestBean.java
然后在c:/com下会产生一个编译后的bean文件:TestBean.class
3 .将TestBean.class文件剪切到 %CATALINA_HOME%/webapps/myapp/WEB-INF/classes/com下,
4 .新建一个TestBean.jsp文件,文件内容为:
<%@ page import="com.TestBean" %>
<html><body><center>
<%
TestBean testBean=new TestBean("This is a test java bean.");
%>
Java bean name is: <%=testBean.getName()%>
</center></body></html>
5 .好了,重启Tomcat,启动浏览器,输入http://localhost:8080/myapp/TestBean.jsp 如果看到输出Java bean name is: This is a test java bean.就说明编写的Bean成功了。
第六步、tomcat5.5配置MYSQL数据库连接池
下载mysql-connector-java-5.0.4.zip,解压后把mysql-connector-java-5.0.4-bin.jar放置到tomat安装目录下的common/lib下,我在%CATALINA_HOME%/webapps/myapp/WEB-INF/lib下也拷贝了一份。
1)启动Tomcat服务器,打开浏览器,输入http://localhost:8080/admin/(其中localhost是名称服务器或称为主机),
进入管理界面的登陆页面,这时候请输入原来安装时要求输入的用户名和密码,登陆到管理界面,
2)选择Resources-Data sources进入配置数据源界面,选择
Data Source Actions ->选择Create New Data Source,进入配置详细信息界面
主要内容例如下:
JJNDI Name:jdbc/mysql
Data Source URL:jdbc:mysql://localhost:3306/duanxinbao
JDBC Driver Class:com.mysql.jdbc.Driver
User Name:root //数据库用户名
Password: //数据库密码
Max.Active Connections:4
Max.Idle Connections:2
Max.Wait for Connection:5000
3) 在%Catalina%/conf目录,打开server.xml
寻找以下内容:
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
<Resource
name="jdbc/mysql"
type="javax.sql.DataSource"
password="987654"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://192.168.0.137:3306/duanxinbao"
maxActive="4"/>
</GlobalNamingResources>
加黑部分为使用Tomcat Web Server Administration Tool程序自动产生的部分,将加黑部分剪切至
%Catalina%/webapps/你的项目所在目录/META-INF/context.xml??????????(http://hi.baidu.com/29163077/blog/item/bad60aee776c7e2c2df5349f.html)
修改/conf/context.xml,全部内容如下:
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<Resource
name="jdbc/mysql"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/duanxinbao"
maxActive="4"/>
</Context>
4)修改web.xml
打开%TOMCAT_HOME%/conf/web.xml,在</web-app>的前面添加以下内容:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
注意res-ref-name填写的内容要与在上文提到的JNDI Name名称一致。
到这里,配置工作就基本完成了!
5)引用JNDI时用"java:comp/env/jdbc/mysql";
有的时候直接应用JNDI名就可以,比如WEBLOGIC8。而TOMCAT就是这么做。
6)JDBC驱动程序mysql-connector-java-5.0.4-bin.jar
一定要放置到%TOMCAT_HOME%/common/lib下。
重启你的Tomcat服务。
7)写一个test.jsp:
<%@ page import = "java.sql.*" %>
<%@ page import = "javax.naming.*" %>
<%@ page import = "javax.sql.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>测试JNDI</title>
</head>
<body>
<%
Context ctx=null;
DataSource ds=null;
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try{
ctx = new InitialContext();
if( ctx == null )
out.println("no context");
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");
if( ds == null )
out.println("no datasource");
conn = ds.getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
String strSql = " select * from t_user";
rs = stmt.executeQuery(strSql);
while(rs.next()){
out.println(rs.getString("username")+"<br>");
}
}
catch(Exception ex){
ex.printStackTrace();
out.println(ex.toString());
}
finally{
if( rs != null )
rs.close();
if( stmt != null )
stmt.close();
if( conn != null)
conn.close();
if( ctx != null )
ctx.close();
}
%>
</body>
</html>
记得千万要用完close哦,不然一会就耗尽了。这一点可以通过以root身份登录MySQL,运行show processlist;命令来查看当前所有连接。