linux部署tomcat到管理tomcat常用

相关传输命令:

zip -r myzip.zip  /root/myfolder

unzip myzip

cp -r /root/back  /root/…./ROOT

whereis httpd

weget http://….jdk.bin

ps -aux | grep java 查看进程
kill -9 12345 【-9 强制】

定时任务【数据库备份命令】

安装字体【生成PDF文件使用】
/usr/share/fonts/truetype/simsun/simsun.ttc

=============
java环境变量
生成PDF字体安装
MYSQL备份脚本
MYSQL数据库添加
APACHE代理设置
TOMCAT端口设置
jmagick安装

自动启动TOMCAT vi /etc/rc.d/rc.local

export JDK_HOME=/usr/local/java/jdk1.6.0_13
export JAVA_HOME=/usr/local/java/jdk1.6.0_13
/usr/local/java/tomcat-sinykk/bin/startup.sh

=====================================================================
mysql 操作

查看mysql状态: service mysqld status;

查看所有用户
select user,host,password from mysql.user;

创建用户
GRANT ALL PRIVILEGES ON xiaochun51itsns.* TO xiaochun51itsns@”%”  IDENTIFIED BY “xiaochun51itsns123” ;

mysql> GRANT ALL ON *.* TO admin@’%’ IDENTIFIED BY ‘admin’ WITH GRANT OPTION;     
mysql> flush privileges;

1>这句话的意思 ,允许任何IP地址(上面的 % 就是这个意思)的电脑 用admin帐户  和密码(admin)来访问这个MySQL Server     

2>必须加类似这样的帐户,才可以远程登陆。 root帐户是无法远程登陆的,只可以本地登陆 

mysql> create database uch_blog character set utf8;
mysql> use uch_blog;
mysql> set names utf8;
mysql> source e:/sinykk_db.sql;

==========================================
关机命令:
1、halt 立刻关机
2、poweroff 立刻关机
3、shutdown -h now 立刻关机(root用户使用)
4、shutdown -h 10 10分钟后自动关机
如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启

重启命令:
1、reboot
2、shutdown -r now 立刻重启(root用户使用)
3、shutdown -r 10 过10分钟自动重启(root用户使用)
4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

=============================
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

  crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

  crontab -l //列出某个用户cron服务的详细内容

  crontab -r //删除没个用户的cron服务

  crontab -e //编辑某个用户的cron服务

  比如说root查看自己的cron设置:crontab -u root -l

  再例如,root想删除fred的cron设置:crontab -u fred -r

  在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

========================
安装imagemagick

yum install ImageMagick

convert aa.jpg bb.jpg

================================================

查看IP,VM无线这个可能不能查
ifconfig

查看linux版本

cat /proc/version

用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)
查看CPU信息:cat /proc/cpuinfo
查看板卡信息:cat /proc/pci
查看PCI信息:lspci (相比cat /proc/pci更直观)
查看内存信息:cat /proc/meminfo
free
查看USB设备:cat /proc/bus/usb/devices
查看键盘和鼠标:cat /proc/bus/input/devices
查看系统硬盘信息和使用情况:fdisk & disk – l & df
查看磁盘分区表及分区结构 fdisk -l
查看硬盘信息 df -lh
查看各设备的中断请求(IRQ):cat /proc/interrupts
查看启动硬件检测信息日志:dmesg more /var/log/dmesg

Linux下配置java、tomcat、mysql环境

1.到sun官网下载jdk:jdk-6u22-linux-i586-rpm.bin  http://java.sun.com http://www.oracle.com/technetwork/java/index.html

安装命令:./jdk-6u22-linux-i586-rpm.bin

#set java_environment

JAVA_HOME=jdk路径

export JAVA_HOME

CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export CLASSPATH

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

export PATH

2.下载tomcat http://tomcat.apache.org/ 解压后既可使用

3.下载mysql http://www.mysql.com/

下载client与servet即可

MySQL-client-5.1.52-1.glibc23.i386.rpm

MySQL-server-5.1.52-1.glibc23.i386.rpm

 

Tomcat中数据源的配置及原理

一:数据源介绍 数据源简介

JDBC2.0提供了javax.sql.DataSource的接口,负责与数据库建立连接,实际应用时不需要编写连接数据库代码,可以直接从数据源获得数据库的连接,使得应用于数据库的耦合降低。

 

Dataource中事先建立了多个数据库连接,这些数据库连接保持在数据库连接池中,当程序访问数据库时,只需要从连接池从取出空闲的连接,访问数据库结束,在将这些连接归还给连接池。DataSource对象由容器(Tomcat)提供,不能使用创建实例的方法来生成DataSource对象,要采用JAVA的JNDI(Java Nameing and Directory Interface,java命名和目录接口)来获得DataSource对象的引用。(另有一种说法:“其实从技术上来说,数据源连接方式是不需要目录服务的,我们同样可以通过序列化数据源对象直接访问文件系统。这点是需要明确的。”感兴趣的朋友可以试试。)

 

JNDI是一种将对象和名字绑定的技术,对象工厂负责生产出对象,这些对象都和唯一的名字相绑定。程序中可以通过这个名字来获得对象的引用。Tomcat把DataSource作为一种可配置的JNDI资源来处理,生成DataSource对象的工厂为rg.apache.comm.ons.dbcp.BasicDataSourceFactory。

 

二:配置数据源

配置数据源其实相当简单,可以配置单个应用的数据源,也可以配置整个容器的数据源。以下详细说明如何配置单个应用的数据源。

 

1.准备工作

Tomcat4.1.24 (其它版本也可以,原理相通的) 

确认在%Tomcat _Home%\common\lib下有commons-collections.jar、commons-dbcp.jar、commons-pool.jar包(tomcat默认有这些包),如果没现有,请到此地下载:http://tomcat.apache.org/ 。这三个包是必需的。

 

下载相应数据库驱动,放在%Tomcat _Home%\common\lib下。本例以oracle数据库为例,使用的驱动包为:jdbc14.jar, 数据库为Oracle9i,确认在%Tomcat _Home%\common\lib下有jndi.jar、dbc2_0-stdext.jar(tomcat默认有这些包)。

 

2.配置单个应用的数据源

2.1配置server.xml文件

首先打开%Tomcat _Home%\conf下 server.xml文件,在相应的<Context>中加入<Resource>元素,在<Context>(你的应用配置上下文)中加入以下代码(以MySql为例):

 

 

<Context path="/test" docBase="E:\JAVA\mytest\webapp" > 

    <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"/> 

    <ResourceParams name="jdbc/test"> 

       <parameter> 

           <name>username</name> 

           <value>root</value> 

       </parameter> 

       <parameter> 

           <name>password</name> 

           <value></value> 

       </parameter> 

       <parameter> 

           <name>driverClassName</name> 

           <value>com.mysql.jdbc.Driver</value> 

       </parameter> 

       <parameter> 

           <name>url</name> 

           <value>jdbc:mysql://localhost/dlog</value> 

       </parameter> 

    </ResourceParams> 

</Context>

 

2.2< Resource >配置说明如下:

 

描述

name

指定ResourceJNDI的名字

auth

指定管理ResourceManager,由两个可选值:ContainerApplicationContainer表示由容器来创建和管理ResourceApplication表示由WEB应用来创建和管理Resource。如果在web application deployment descriptor中使用<resource-ref>,这个属性是必需的,如果使用<resource-env-ref>,这个属性是可选的。

type

指定Resource所属的java类名

 

2.3<ResourceParams>元素的属性如下:

 

描述

name

指定ResourceParamsJNDI的名字,必须和Resourcename保持一致

factory

指定生成DataSource对象的factory的类名

maxActive

指定数据库连接池中处于活动状态的数据库连接最大数目,0表示不受限制

maxldle

指定数据库连接池中处于空闲状态的数据库连接的最大数目,0表示不受限制

maxwait

指定数据库连接池中的数据库连接处于空闲状态的最长时间(单位为毫秒),超过这一事件,将会抛出异常。-1表示可以无限期等待。

username

指定连接数据库的用户名

password

指定连接数据库的密码

driverClassName

指定连接数据库的JDBC驱动程序

url

指定连接数据库的URL

 

 

2.3引用数据源

 如果在web应用中访问了由Servlet容器管理的某个JNDI Resource,则必须在web.xml中声明对这个JNDI Resource的引用。表示资源引用的元素为<resource-ref>,该元素加在<wepapp></ wepapp >中。

 打开你的应用配置文件web.xml,输入以下粗体部分:

 <wepapp> ……

<resource-ref>

       <description>connectDB test</description>

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

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

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

    </resource-ref>

</ wepapp >

 

2.4<resource-ref>元素的属性如下:

 描述:description  对所引用的资源的说明;
res-ref-name 指定所引用资源的JNDI名字,与<Resource>元素中的name属性保持一致;
res-type  指定所引用资源的类名字,与<Resource>元素中的type属性保持一致;

res-auth  指定所引用资源的Manager,与<Resource>元素中的auth属性保持一致;

 

2.5测试数据源   

 首先,检查Tomcat的%Tomcat _Home%\common\lib下有commons-collections.jar、commons-dbcp.jar、commons-pool.jar包,如果没现有,请到此地下载:http://tomcat.apache.org/    

 注意以上三个包不要引入你的工程类路径,否则可能报错。

 

 然后,将驱动包放入%Tomcat _Home%\common\lib下,注意包必须为.jar后缀。Tomcat只认.jar包。 配置完成后,写个测试,如下:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD 
HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<%
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource db = (DataSource)envContext.lookup("jdbc/myoracle ");

//javablogorl为<Resource>元素中name属性的值
Connection conn = db.getConnection( );
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM test");
while(rs.next()){
out.print(rs.getString("admin_name")+" ");
out.print(rs.getString("admin_password")+"<br>");
}
rs.close();
stmt.close();
conn.close(); 

%>
</body>
</html>

 

 如果输出你期望的结果,表示数据源配置成功。

 

3.配置容器全局数据源
以上配置的数据源为单个应用使用的数据源,只能为单个应用所使用,下面我们配置全局的数据源,所有的应用都可以使用,通过引用很自然的使用全局数据源。准备工作同上。

3.1 配置server.xml文件

首先打开%Tomcat _Home%\conf下 server.xml文件,在<GlobalNamingResources>下输入以下粗体部分:

 

<GlobalNamingResources> ……


    <Context path="/test" docBase="E:\JAVA\mytest\webapp" > 

    <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"/> 

    <ResourceParams name="jdbc/test"> 

       <parameter> 

           <name>username</name> 

           <value>root</value> 

       </parameter> 

       <parameter> 

           <name>password</name> 

           <value></value> 

       </parameter> 

       <parameter> 

           <name>driverClassName</name> 

           <value>com.mysql.jdbc.Driver</value> 

       </parameter> 

       <parameter> 

           <name>url</name> 

           <value>jdbc:mysql://localhost/dlog</value> 

           </parameter> 

        </ResourceParams> 

</Context>

</GlobalNamingResources>

 

 

3.2 引用数据源

由于我们配置的是容器全局数据源,因此所有的应用都可以引用这个数据源。在你的应用中建立引用,在<Context></Context>之间输入以下粗体部分:

<Context path="/test" docBase="E:\JAVA\mytest\webapp" >

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

</Context>

 

3.3 配置应用文件web.xml

打开你的应用配置文件web.xml,输入以下粗体部分:

 

<wepapp> …… 

<resource-ref>

       <description>connectDB test</description>

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

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

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

    </resource-ref>

</ wepapp >

 

 3.4测试  创建测试文件:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD 
HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<%
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource db = (DataSource)envContext.lookup("myDB ");//名称与web.xml配置中的一致

//javablogorl为<Resource>元素中name属性的值
Connection conn = db.getConnection( );
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM test");
while(rs.next()){
out.print(rs.getString("admin_name")+" ");
out.print(rs.getString("admin_password")+"<br>");
}
rs.close();
stmt.close();
conn.close();

%>
</body>
</html>

 

 

如果输出你期望的结果,表示数据源配置成功。

Hibernate.cfg.xml文件中删除所有连接数据库的配置参数,添加connection.datasource属性,其中jdbc/test为数据源在应用服务器中的JNDI名:

<property name=”connection.datasource”>java:/comp/env/jdbc/test</property>

 

 

tomcat+mysql性能优化

在单数据库,单计算机服务下随着用户的增加,随之而来的会出现很多问题,诸如连接、jvm空间不足等等,这些问题带来的后果就是性能大打折扣,客户投诉。当然处理办法有多种,比如添加服务,做负载均衡,添加缓存服务,动静分离等等。这里我们只谈谈对服务器(tomcat)和数据库(mysql)的优化。

  1. tomcat相关

  • 增加jvm堆栈的内存


我们在做大数据测试时常常会碰到这样一类错误:outofmemoryerror:java heap space

 这类问题出现的原因就是jvm的堆内存已满,导致内存溢出。解决这类问题首先要查的还是程序,看是否有死循环之类的bug问题,还有就是增加jvm的堆内存。这个配置需要在tomcat的bin目录下的catalina.bat文件中设置。编辑这个文件,在文件的rem —————————————————————–和rem Guess CATALINA_HOME if not defined之间插入:set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m,这里做下介绍  -Xms(JVM初始化堆的大小 不要超过物理内存的80%
),-Xmx(JVM堆的最大值 不要超过物理内存的80%
),-XX:PermSize(jvm非堆内存初始值 默认是物理内存的1/64),XX:MaxPermSize(jvm非堆内存最大值 默认是物理内存的1/4)


  • 打开tomcat的NIO

熟悉IO与NIO的都知道,他们的区别和对性能的影响,这里就不多说了,其实tomcat是支持java NIO特性的,只不过默认情况下并未开启该功能,比如我们在未配置过的tomcat中常常会发现如下的配置

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
			   URIEncoding="UTF-8"
               redirectPort="8443" />

 

 
而且启动时你会发现如下信息


2012-10-26 18:14:07 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2012-10-26 18:14:07 org.apache.catalina.startup.Catalina load

 

 以下便是开启tomcatNIO特性

<Connector  URIEncoding="UTF-8" 
    		    acceptCount="1000" 
    			connectionTimeout="20000" port="8080" 
    			protocol="org.apache.coyote.http11.Http11NioProtocol" 
    			redirectPort="8443"/>

 




  •  
    配置tomcat线程池


在tomcat启动时创建线程池,解决tomcat在获取请求时候创建线程的压力消耗,从而提升tomcat处理能力

在tomcat的server.xml文件中添加如下线程池声明



<Executor name="tomcatThreadPool" 
                namePrefix="catalina-exec-" 
                maxThreads="1000" 
                minSpareThreads="300" />

 


 


相关参数说明

     name:线程池的名称

     namePrefix:线程池的前缀

     maxThread:最大线程数

     minSpareThreads:初始化线程数

声明完线程池后,接着就使用该线程池,在tomcat的server.xml的连接器中配置该线程池,效果如下

<Connector  executor="tomcatThreadPool"  
    		   URIEncoding="UTF-8" 
    		   acceptCount="1000" 
    		   connectionTimeout="20000"   
                   port="8080"   			
                   protocol="org.apache.coyote.http11.Http11NioProtocol" 
    		   redirectPort="8443"/>

Mysql和Tomcat的配置数据库连接池(管理员界面方式)

这几日按照网上现有的教程结合Mysql和Tomcat的配置数据库连接池。费了很大劲终于成功。连接池的配置(Tomcat+MySql)有两种方式:代码配置与可视化配置。
其中,可视化配置方便快捷,下面就根据我配置的经验写下配置的过程。
版本:MySQL-4.19、Tomcat–5.5.9。
在 进行Tomcat连接池配置前,先解压缩mysql-connector-java-xxx.zip,将其中的mysql-connector-java -3.x.x-xxx.jar取出,置于commonlib中,没有?去http://www.mysql.com/products下载吧。

1. 如果Tomcat没有安装Admin,先安装Admin。安装后以admin权限登陆(用户管理在/conf/tomcat-user.xml下,如果没 有admin权限的用户了,新建一个用户,或者将已有的tomcat或者both等设置roles=”admin”);
2.登陆以后,在左边的选择栏里可以看到如下功能:
–Tomcat Server
–+Service (Catalina)
–Resources
–+Data Sources
–+Mail Sessions
–+Environment Entries
–+User Databases
–User Definition
–+Users
–+Groups
–+Roles
点Data Sources–>Data Source Actions 下拉选择Create New Data Source.填写下面几个选项,其中yxz是我建立的mySql实例,根据情况修改。
JNDI Name: mySql/yxz
Data Source URL:jdbc:mysql://localhost:3306/yxz
JDBC Driver Class:com.mysql.jdbc.Driver
User Name:root
Password:root
Max. Active Connections: 20 —最大活跃连接数
Max. Idle Connections:10—最大闲置连接数
Max. Wait for Connection:5000
Validation Query:
完成后,按save,再按Commit Changes,OK!
3.此时,数据库连接池可视化配置完成。但如果要在相应的应用下使用该连接池,仍旧需要另外的工作,就是配置相应的content.xml。在yourapp/META-INF/下建立content.xml文件,将刚才的配置拷贝进去,如下:



factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/yxz"
username="root" password="root"
maxActive="20" maxIdle="10" maxWait="-1" />


保存,OK。
4. 在mySql里的yxz下建立table:user 进行测试。user表含有字段ID,Name。
5.测试程序,在yourapp下建立index.jsp,拷贝下面代码:

solr分布式(复制)配置

    solr 分布式其实是分发,这概念像Mysql的复制。所有的索引的改变都在主服务器里,所有的查询都在从服务里。从服务器不断地(定时)从主服务器拉内容,以保持数据一致。

先描述下我的环境:
solr-master(192.168.1.181), solr-slave(192.168.1.155), jdke1.6.0_06, tomcat-5.5.26, solr-1.2 
tomcat_home在 /home/chenlb/tomcat-5.5.26
solr_home在 /home/chenlb/solr-home
solr解压后的目录 /home/chenlb/solr-1.2.0
最好两机可以ssh无密码交互,ssh无密码登录请看:http://www.blogjava.net/chenlb/archive/2008/07/03/212293.html

    solr的分发是用rsync的。
    快照与分发过程:

1.snapshooter
 命令在主服务器产生快照。一般在commit和optimize之后被solr调用。

2.snappuller
命令在从服务器运行,所做的事是从主服务器拉最新的快照。 用rsync的daemon模式来运行可以获得更好的性能与更底的CPU利用率。

3.snapinstaller

命令在从服务器运行,当从服务器从主服务器拉完快照后才执行。它会通知本地Solr服务器打开一个新的index
reader,然后预热这个新index reader的缓存,此时有请求,原来的index reader继续为这此请求服务。一但预热完成,Solr
启用新的index reader,旧的被消亡。

    Solr 的Distribution(分发) 在Scripts文件里记录。在solr_home/conf/scripts.conf文件里。

我现在这样配置:

user
=
chenlb
solr_hostname

=
localhost
solr_port

=
8080

rsyncd_port

=
18080

data_dir

=/
home
/
chenlb
/
solr

home
/
data
webapp_name

=
solr
master_host

=
192.168
.
1.181

master_data_dir

=/
home
/
chenlb
/
solr

home
/
data
master_status_dir

=/
home
/
chenlb
/
solr

home
/
logs


上面的配置两机都一样。

1.安装好solr后启动它们,怎样在tomcat安装solr请看:http://www.blogjava.net/chenlb/archive/2008/03/25/188459.html

[chenlb@solr

master 
~
]$ .
/
tomcat

5.5
.
26
/
bin
/
startup.sh


启用且启动rsync

[chenlb@solr

master 
~
]$ .
/
solr

home
/
bin
/
rsyncd

enable 

u chenlb 

v
[chenlb@solr-master ~]$ ./solr-home/bin/rsyncd-start -u chenlb -v

[chenlb@solr

slave 
~
]$ .
/
tomcat

5.5
.
26
/
bin
/
startup.sh


2.solr-master
先修改post.sh

[chenlb@solr

master 
~
]$ cd solr

1.2
.0
/
example
/
exampledocs
/

[chenlb@solr


master exampledocs]$ vi post.sh
[chenlb@solr


master exampledocs]$

#
把http://localhost:8389/solr/update改下面的


http:
//
localhost:
8080
/
solr
/
update


提交数据

[chenlb@solr

master exampledocs]$ .
/
post.sh 
*
.xml


产生快照

[chenlb@solr

master 
~
]$ .
/
solr

home
/
bin
/
snapshooter 

u chenlb 

v


说明:由于<listener event=”postCommit”
class=”solr.RunExecutableListener”>…</listener>没有设置成功(出现
java.io.IOException: Cannot run program “snapshooter” (in directory
“solr/bin”): java.io.IOException: error=2, No such file or
directory,现在还没解决),可以只能手动生成快照(当然也可以cron)

3.solr-slave
启用快照下拉

[chenlb@solr

slave 
~
]$ .
/
solr

home
/
bin
/
snappuller

enable 

u chenlb 

v


拉快照

[chenlb@solr

slave 
~
]$ .
/
solr

home
/
bin
/
snappuller 

u chenlb 

v


安装

[chenlb@solr

slave 
~
]$ .
/
solr

home
/
bin
/
snapinstaller 

u chenlb 

v

现在可以在solr-slave里看结果了:
http://192.168.1.155:8080/solr/select q=solr

http://192.168.1.181:8080/solr/select q=solr

看结果是否一样。

TomCat6.0数据库连接池配置实例(mysql数据库)

TomCat6.0数据库连接池配置有几种方式,在这里我只介绍其中的一种供大家参考: 下面我把配置过程分成三个步骤来完成: 第一步:在你安装TomCat的目录下找到context.xml配置文件。(例如:D:\Tomcat 6.0\conf\context.xml)然后打开context.xml,在标签之间加入以下内容:(为了大家容易理解,我加了较详细的注释) //这个也默认就好了 第二步:在你的项目WEB-INF目录下找到web.xml配置文件,然后打开,在标签之间加入以下内容: DB Connection jdbc/course javax.sql.DataSource Container 其中:DB Connection 是自定义的,而jdbc/course是对应上面标签中的name属性的值,还有javax.sql.DataSource就对应type属性的值,而最后Container对应的是auth属性的值。 第三步:上网下载一个叫mysql-connector-java-3.1.10-bin.jar的jar包,然后将该jar包放到TomCat安装目录下的lib文件夹里。(例如:D:\Tomcat 6.0\lib\mysql-connector-java-3.1.10-bin.jar)完成这三步就配置好了TomCat数据源了。 下面根据刚才配置好的数据源做一个简单获取数据库连接的测试,代码如下: import javax.sql.DataSource; import java.sql.Connection; import javax.naming.InitialContext; public class GetConnectionTest { public static void main(String[] args) { try { InitialContext ctx = new InitialContext(); /*在下面的字符串”java:comp/env/jdbc/course”中,*”java:comp/env/”是不变的, *而”jdbc/course”大家应该还记得自己之前起的数据源名称吧! */ DataSource ds = (DataSource) ctx.lookup(“java:comp/env/jdbc/course”); Connection conn = ds.getConnection(); } catch (Exception e) { e.printStackTrace(); } } }

 

 

 

 

 

 

2.在tomcat/conf/context.xml添加

 

<Resource name=”java:/ConnectDB” auth=”Container” type=”javax.sql.DataSource”
    maxActive=”100″ maxIdle=”30″ maxWait=”10000″ username=”root” password=”root” driverClassName=”com.mysql.jdbc.Driver”        url=”jdbc:mysql://192.168.0.192:3306/tdrms”/>

CAS-单点登录环境安装+JDBC支持配置

由于工作原因,很久没有写点东西了。

写在另一个博客上:

http://cid-5c0c98dd2e25c135.spaces.live.com/blog/cns!5C0C98DD2E25C135!128.entry

哎,space太慢了,很久没有使用了,还不容易使用一次啊,还赶上了逼迁啊。算了,还是使用国内的吧。

可恶的网易,这技术文章也要阉割,好吧,我直接贴出来。

 

 

一:软件准备

apache-tomcat-6.0.26

mysql5.1

cas-server-3.4.2.1-release

cas-client-3.1.10-release

 

二:安装数据库

参见在win7下安装绿色版mysql

三:配置cas-服务端

1)将cas.war文件拷贝到tomcat webapps目录下面

2)增加jdbc数据库支持

将Mysql数据库驱动(mysql-connector-java-5.1.13-bin.jar)拷贝到apache-tomcat-6.0.26\lib目录,或者拷贝apache-tomcat-6.0.26\webapps\cas\WEB-INF\lib目录

为了方便我将驱动包拷贝到了apache-tomcat-6.0.26\lib目录。

修改文件:deployerConfigContext.xml

<property name="authenticationHandlers">
			<list>
				<!--
					| This is the authentication handler that authenticates services by means of callback via SSL, thereby validating
					| a server side SSL certificate.
					+-->
				<!--
				<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
					p:httpClient-ref="httpClient" />
				-->
				
				<!--
					| This is the authentication handler declaration that every CAS deployer will need to change before deploying CAS 
					| into production.  The default SimpleTestUsernamePasswordAuthenticationHandler authenticates UsernamePasswordCredentials
					| where the username equals the password.  You will need to replace this with an AuthenticationHandler that implements your
					| local authentication strategy.  You might accomplish this by coding a new such handler and declaring
					| edu.someschool.its.cas.MySpecialHandler here, or you might use one of the handlers provided in the adaptors modules.
					+-->
				<!-- 	
				<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
				-->
				
				<!-- jdbc  -->
				<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
					<property name="sql" value="select sPassword from tbosstaff where sStaffAccount= " />
          <property name="dataSource" ref="dataSource" />
				</bean>
				
				
			</list>
		</property>
	</bean>
增加数据源配置
  <!-- jdbc DataSource -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
                <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
                <property name="url"><value>jdbc:mysql://localhost:3306/dzyw-cas</value></property>
                <property name="username"><value>root</value></property>
                <property name="password"><value></value></property>
        </bean>

四:配置cas-客户端

以tomcat里面的docs应用作为客户端来完成本次配置

1)在docs/WEB-INF下面建立lib文件夹

2)将cas-client-core-3.1.10.jar和commons-logging-1.1.jar拷贝到docs/WEB-INF/lib下面

3)权限认证过滤器配置

修改web.xml文件

xml version="1.0" encoding="ISO-8859-1" >
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5"> 

  <display-name>Tomcat Documentation</display-name>
  <description>
     Tomcat Documentation.
  </description>
  
  <filter>
  	<filter-name>CAS Authentication Filter</filter-name>
  	<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
  	<init-param>
  		<param-name>casServerLoginUrl</param-name>
  		<param-value>http://localhost:8081/cas/login</param-value>
  	</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://localhost:8081</param-value>
		</init-param>
</filter>

<filter-mapping>
      <filter-name>CAS Authentication Filter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>


</web-app>

4)登出配置

A)使用过滤器的方式

B)使用监听器的方式

四:测试

1)测试是否是否能够登录系统

使用ie访问http://localhost:8081/docs ,会自动切换到CAS-OSS的登录页面,输入数据库中保存的用户名和密码,则可以正常跳转到docs。

五:思考问题

1)数据库的密码使用加密的方式,cas怎么配置?

2)本问中的数据源使用的是简单的jdbc连接,实际项目总可能需要使用JNDI或者数据库连接池这些配置应该怎么配置?

3)怎么将登录者的信息在整个环境中传递?

4)怎么对CAS服务端做压力测试。

JDBC事务控制

con.setAutoCommit(false);//设置事务为手动控制  
con.commit();//提交事务  
con.rollback();//回滚事务  
st.executeUpdate(sql);
sp = conn.setSavepoint();//1.获取事务标志位

conn.rollback(sp);//2.回滚到事务标志位
conn.commit();//3.事务提交
//设置事务隔离级别. Connection类定义了一些事务级别常量
con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

//多个数据源操作事务的时候,需要JTA容器支持.tomcat不支持JTA.

//返回主键

PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
		ResultSet rs = ps.getGeneratedKeys();

================================================================================

事务隔离级别

隔离级别                                脏读      不可重复读    幻读

读未提交(Read uncommitted)               V            V          V

读已提交(Read committed)                 X            V          V

可重复读(Repeatable read)                X            X          V

可序列化(Serializable)                   X            X          X

================================================================================

隔离级别(isolation level)

隔离级别定义了事务与事务之间的隔离程度。

隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差;隔离程度越低,数据库的并发性越好。

ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别:

未提交读(read uncommitted)

提交读(read committed)

重复读(repeatable read)

序列化(serializable)

通过一些现象,可以反映出隔离级别的效果。这些现象有:

更新丢失(lost update):当系统允许两个事务同时更新同一数据是,发生更新丢失。

脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。

非重复读(nonrepeatable read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。(A transaction rereads data it has previously read and finds that another committed transaction has modified or deleted the data.  )

幻像(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。(A transaction reexecutes a query returning a set of rows that satisfies a search condition and finds that another committed transaction has inserted additional rows that satisfy the condition.  )

================================================================================

--mysql查询当前用户
mysql> select user();

--mysql查询当前事务处理级别
mysql> select @@tx_isolation;

--mysql设置隔离级别
mysql> set transaction isolation level read uncommitted;

部署cmp时的教训

原来数据库服务器随系统启动而启动,前几天把数据库服务改为手动启动后一直没有部署过cmp,直到昨晚做cmp作业时,部署cmp jboss就报出n多错误,眼花缭乱啊。还没等报完错误,我就关了jboss,心想怎么会这样的呢?前几天还好好的。刚好昨晚tomcat也启动不了,二话没说把jdk,tomcat,jboss重新安装了一边,期间安装tomcat时说找不到jre,晕死了。最后使用了狠招还是把tomcat安装上去了。配置好classpath和path,tomcat是可以运行了,只是jboss部署cmp时还是有错误。这次恼火了,但恼火归恼火,还是静下心来看了jboss给的N多的异常,看到其中有“mysql……”(我用的数据库是mysql)什么的,突然记起来我没有开mysql服务器。启动mysql服务器试试吧,再部署cmp,一切问题解决。 现在想来,这真是很小的事情,但是,没有经历过或者没人跟你说过,的确不知道怎么回事。jboss一连串的异常也真是恼人,第一想到的是:这么多异常怎么看啊,算了,关了jboss再试试。 部署cmp之前先打开数据库服务器,切记。