Tom小猫,让我看清你的五脏六腑3(转)

来源:互联网 发布:网络机房建设报价单 编辑:程序博客网 时间:2024/04/30 05:52
Tom小猫,让我看清你的五脏六腑3(转)
2007-01-29 19:51

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

DataSource域

<Resource name="jdbc/tomcatusers" auth="Container" type="javx.sql.DataSource"/>
<ResourceParams name="jdbc/tomcatusers">
    <parameter>
     
<name>factory</name>
     
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
 
</parameter>
 
<parameter>
     
<name>maxActiove</name>
     
<value>100</value>
 
</parameter>
 
<parameter>
     
<name>maxIdle</name>
     
<value>30</value>
 
</parameter>
 
<parameter>
     
<name>maxWait</name>
     
<value>10000</value>
 
</parameter>
 
<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/tomcatusers?autoReconnect=true</value>
  
</parameter>
</ResourceParams>

注意:Tomcat的JNDI资源必须配置在<GlobalNamingResources>元素下,服务器才能找到,否则会出现NameNotFoundException;低于Tomcat5.0.12的版本,即使正确配置了DataSourceRealm,也会出现找不到JNDI DataSource的异常,这个小猫的一个bug;在web.xml中是不需要配置<resource-ref>元素的,因为Web应用并不会访问这个DataSource。
当然server.xml还需要添加和JDBC域几乎相同的代码:

<Realm className="org.apache.catalina.realm.DataSourceRealm" 
             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"&gt;
上面的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>元素:

<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhos_log." 
              suffix
=".txt" timestamp="true"/>

然后再添加<Value>元素:

<Value className="org.apache.catalina.RequestDumperValue"/>


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


原创粉丝点击