-和JDBC域很类似,只不过访问数据库的方式不同,这个是使用JNDI DataSource来访问数据库的。
先在web.xml中加入安全约束,在和JDBC域一样新建两张表,然后在server.xml文件的<GlobalNamingResources>元素下添加如下内容:
DataSource域
< ResourceParams name ="jdbc/tomcatusers" >
< parameter >































</ ResourceParams >

注意:Tomcat的JNDI资源必须配置在<GlobalNamingResources>元素下,服务器才能找到,否则会出现NameNotFoundException;低于Tomcat5.0.12的版本,即使正确配置了DataSourceRealm,也会出现找不到JNDI DataSource的异常,这个小猫的一个bug;在web.xml中是不需要配置<resource-ref>元素的,因为Web应用并不会访问这个DataSource。
当然server.xml还需要添加和JDBC域几乎相同的代码:
driverName ="com.mysql.jdbc.Driver" debug ="0"
connectionURL ="jdbc:mysql://localhost/tomcatusers" connectionName ="roor"
connectonPassword ="" userTable ="users" userNameCol ="user_name"
userCredCol ="user_pass" userRoleTable ="user_roles" roleNameCol ="role_name" >

Tomcat阀
由org.apache.Catalina.Value接口定义,能够对Catalina容器接收的HTTP Request进行预处理,是小猫特有的功能,可以加入到3种容器中(Engine、Host、Context)。
客户访问日志阀(Access Log Value)- 能够将可以的Request信息写入到日志中。可以记录页面访问的次数、用户Session活动和用户验证信息等。
例如:<Value className="org.apache.catalina.AccessLogValue" directory="logs" prifix="localhost_access_log" suffix=".txt" pattern="%h%l%u%t%s%r%s%b" resolveHost="true">
上面的pattern值可以用common,一个默认的值。
pattern属性规定日志的格式和内容:%a-远程IP地址;%A-本地IP地址;%b-发送的字节数,不包括HTTP Header;%h-远程主机名;%H-客户请求所用的协议;%l-"-";%m-请求的方法;%p-接受请求的本地服务器断开;%q-查询字符串;%r-用户请求的第一行内容;%s-响应HTTP Request的状态码;%S-用户Session ID;%t-时间;%u-验证的用户名;%U-请求URL路径;%v-本地服务器名。
远程地址过滤器(Remote Address Filter)-根据IP地址决定是否接受客户的请求。
例如:<Value className="org.apache.catalina.RemoteAddrValue" allow="127.0.0.1" deny="127.111.*"/>
远程主机过滤器(Remot Host Filter)-根据主机名决定是否接受请求。
<Value className="org.apache.catalina.RemoteHostValue" allow="localhost" deny="monster*"/>
客户请求记录器(Request Dumper)-把客户请求的详细信息记录在日志文件中,这里的日志文件是指<Logger>元素。
假定在server.xml中localhost的<Host>元素下已经配置了<Logger>元素:
suffix =".txt" timestamp ="true" />

然后再添加<Value>元素:

参考:《Tomcat与JavaWeb开发技术详解》