SAStruts使用的配置文件说明。
web.xml
Servlet容器用的配置文件,放置在WEB-INF目录下。sa-struts-tutorial工程放置在webapp/WEB-INF目录下。
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">
sastruts.VIEW_PREFIX
/WEB-INF/view
encodingfilter
org.seasar.extension.filter.EncodingFilter
encoding
UTF-8
s2filter
org.seasar.framework.container.filter.S2ContainerFilter
hotdeployfilter
org.seasar.framework.container.hotdeploy.HotdeployFilter
routingfilter
org.seasar.struts.filter.RoutingFilter
jspDirectAccess
false
encodingfilter
/*
s2filter
/*
REQUEST
FORWARD
INCLUDE
hotdeployfilter
/*
REQUEST
FORWARD
INCLUDE
routingfilter
/*
REQUEST
action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml
configFactory
org.seasar.struts.config.S2ModuleConfigFactory
1
s2container
org.seasar.framework.container.servlet.S2ContainerServlet
2
action
*.do
s2container
/s2container
*.jsp
false
UTF-8
false
/WEB-INF/view/common/common.jsp
JSP页面等表示层的文件的根目录通过sastruts.VIEW_PREFIX指定。根目录放在通过浏览器不能 直接访问的/WEB-INF的文件夹下比较好。
EncodingFilter是请求参数的编码过滤器。
S2ContainerFilter是Seasar2对请求以及响应的Servlet用的对象进行操作的过滤器。
HotdeployFilter是Seasar2对JAVA类变更后进行HOT应用的过滤器。
RoutingFilter对URL进行美化(Struts的.do之类的扩展名不显示)的过滤器。 默认,禁止对JSP直接访问,如果有此必要将参数jspDirectAccess设置为true。
filter标签和filter-mapping标签的顺序非常重要。 一定要记住按照上面的顺序进行定义。
ActionServlet是Struts用的Servlet。
S2ContainerServlet是Seasar2初始化和终止处理用的Servlet。 为了在ActionServlet之后进行启动,请将load-on-startup的值设置为比ActionServlet的load-on-startup的值更大。
S2ModuleConfigFactory是实现不使用struts-config.xml进行开发的类。
jsp-config标签的详细请参照这里。
struts-config.xml
Struts的配置文件。WEB-INF文件夹下。sa-struts-tutorial工程放在webapp/WEB-INF下。
/p>
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
maxFileSize="1024K"
bufferSize="1024"
processorClass="org.seasar.struts.action.S2RequestProcessor"
multipartClass="org.seasar.struts.upload.S2MultipartRequestHandler"/>
factory="org.seasar.struts.util.S2PropertyMessageResourcesFactory"/>
property="pathnames"
value="/WEB-INF/validator-rules.xml"/>
controller标签的processorClass属性设为S2RequestProcessor。 通过S2RequestProcessor,按照SAStruts的实现方式对请求进行处理。multipartClass属性设为S2MultipartRequestHandler。 通过S2MultipartRequestHandler,文件上传时发生文件超大的异常的时候,能够得到响应的异常信息。(Struts不能取得)。
message-resources标签设定为S2PropertyMessageResourcesFactory。 通过S2PropertyMessageResourcesFactory异常信息的变更能及时反映。
plug-in标签设置为S2ValidatorPlugIn。 通过S2ValidatorPlugIn检测注释的变更能及时反映。
validator-rules.xml
在WEB-INF下的validator-rules.xml中对验证进行定义。 对于示例工程sa-struts-tutorial,在webapp/WEB-INF文件夹下。SAStruts是用Struts标准的validator-rules.xml文件, 但是增加了minbytelength、maxbytelength、longRange验证的定义。
classname="org.seasar.struts.validator.S2FieldChecks"
method="validateMinByteLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.minbytelength"/>
classname="org.seasar.struts.validator.S2FieldChecks"
method="validateMaxByteLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.maxbytelength"/>
classname="org.seasar.struts.validator.S2FieldChecks"
method="validateLongRange"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends="long"
msg="errors.range"/>
app.dicon
app.dicon是应用启动时最先读入的文件。app.dicon应该放在Class-path定义的路径下,sa-struts-tutorial放在src/main/resources目录下。
app.dicon
/p>
"http://www.seasar.org/dtd/components24.dtd">
class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
为了读取别的定义文件,使用了标签include,被include文件也可以include别的文件, 支持include嵌套。 以app.dicon为根节点,形成了一棵配置文件树。
aop.dicon是调试等常用拦截器的定义文件,包含在s2-framework-xxx.jar中。 拦截器,方法调用前后的AOP的模块。AOP的详细介绍, 请参照这里。
j2ee.dicon是事物拦截器的定义文件,包含在s2-extension-xxx.jar中。
s2jdbc.dicon是S2JDBC的定义文件。
为了拦截Action以外发生的信息、 以便于使用ActionMessages(html:errors)来输出而使用了拦截器ActionMessagesThrowsInterceptor。 关于拦截器ActionMessagesThrowsInterceptor的详细信息, 请参照这里。
convention.dicon
convention.dicon用来定义约定。sa-struts-tutorial工程放置在src/main/resources文件夹下。
convention.dicon
/p>
"http://www.seasar.org/dtd/components24.dtd">
class="org.seasar.framework.convention.impl.NamingConventionImpl">
"tutorial"
class="org.seasar.framework.convention.impl.PersistenceConventionImpl"/>
addRootPackageName的tutorial,根据项目的实际填写。 根目录的定义详细,请参照这里。
env.txt
env.txt用来定义Seasar2的运行环境。sa-struts-tutorial工程放置src/main/resources目录下。
默认定义了下列运行环境。
ut单元测试环境。
ct集成测试环境。
it综合测试环境。
product实际运行环境。没有定义env.txt时的默认的环境。
env.txt设置为ct的时候,Seasar2能够使用热部署(HOT deploy)。sa-struts-tutorial工程、env.txt设置为ct。
env.txt为it或product(没有)设置的时候。Seasar2只能进行冷部署(COOL deploy)。 冷部署的时候,当JAVA类进行了修改后只能重启来进行更新。但是相对于热部署而言,执行速度高。
env.txt为ut的时候,Seasar2为缓部署(WARM deploy)。 缓部署的时候,即不能马上识别JAVA类的更新,也不需要通过重启服务来进行应用部署。 而是利用已部署应用的缓存,使用已经用过的组件来实现高速响应。
热部署的时候,所有已部署的内容全部破弃,request需要的组件全部重新部署。
缓部署相对于冷部署的优点是,应用重启快。 例如,冷部署的时候,1个测试实例只使用了一个组件的时候,也重新部署所有的组件。 而缓部署的时候,指重新部署需要的组件,从而测试实例能够高速执行。而且,测试的时候,也不需要热部署。
env_ut.txt
在文件env_ut.txt中定义使用S2Unit进行单体测试的环境,sa-struts-tutorial工程中,放置在src/main/resources文件夹中,env_ut.txt的値设置为ut。
s2container.dicon
s2container.dicon是Seasar2自己进行定制的配置文件。sa-struts-tutorial工程,放置在src/main/resources目录下。
/p>
"http://www.seasar.org/dtd/components24.dtd">
根据include标签的condition属性值,当满足特定的条件时,加载对应的设置文件#ENV是env.txt里定义的值。 条件使用OGNL进行定义。warmdeploy.dicon、hotdeploy.dicon、cooldeploy.dicon文件包含在s2-framework-xxx.jar中。
根据env.txt里定义的值,通过s2container.dicon里的不同判断条件,来使用Seasar2的不同部署方法。
creator.dicon
creator.dicon是自动生成目录包.action等JAVA的配置情报的设定文件。ます。sa-struts-tutorial工程,在src/main/resources目录下。
/p>
"http://www.seasar.org/dtd/components24.dtd">
class="org.seasar.framework.container.creator.ActionCreator"/>
class="org.seasar.struts.creator.FormCreator"/>
class="org.seasar.framework.container.creator.ServiceCreator"/>
class="org.seasar.framework.container.creator.DtoCreator"/>
class="org.seasar.framework.container.creator.InterceptorCreator"/>
action、form、service等等不同的包对应的Creator进行了定义。
customizer.dicon
customizer.dicon是对Creator生成的配置信息进行定制的设定文件。sa-struts-tutorial工程在src/main/resources目录下。
/p>
"http://www.seasar.org/dtd/components24.dtd">
class="org.seasar.framework.container.customizer.CustomizerChain">
"aop.traceInterceptor"
"actionMessagesThrowsInterceptor"
class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
class="org.seasar.struts.customizer.ActionCustomizer"/>
class="org.seasar.framework.container.customizer.CustomizerChain"/>
class="org.seasar.framework.container.customizer.CustomizerChain">
"aop.traceInterceptor"
class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
为了对action和Servic的配置进行定制, 追加了actionCustomizer和serviceCustomizer的定义。
aop.traceInterceptor是追踪用的日志输出的拦截器,在aop.dicon里进行了定义。
actionMessagesThrowsInterceptor是对action以外,用ActionMessages(html:errors)来对信息进行输出的拦截器,已经在app.dicon里进行了定义。
TxAttributeCustomizer是为了实现自动事物处理而进行的定制。 詳細请参考这里。
ActionCustomizer是Action被部署时, 对Struts的配置信息进行自动更新的类,也是SAStruts里最重要的类。
jdbc.dicon
jdbc.dicon是定义数据库连接的配置文件。sa-struts-tutorial工程在src/main/resources目录下。
jdbc.dicon的详细信息,请参照这里。
s2jdbc.dicon
S2JDBC使用的配置文件。sa-struts-tutorial工程在src/main/resources目录下。
s2jdbc.dicon的详细信息,请参照这里。
log4j.properties
log4j使用的配置文件sa-struts-tutorial工程在src/main/resources目录下。
log4j.category.org.seasar=DEBUG, C
log4j.additivity.org.seasar=false
log4j.category.tutorial=DEBUG, C
log4j.additivity.tutorial=false
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.out
log4j.appender.C.ImmediateFlush=true
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%-5p %d [%t] %m%n
log4j.rootLogger=INFO, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
tutorial部分的定义,设置为根目录名。 根目录的详细信息,请参照这里。
Tomcatのserver.xml
使用Tomcat,在GET请求出现文字乱码的时候,conf/server.xml的Connector标签如下所示进行定义。
使用Tomcat,URL出现乱码的时候。、conf/server.xml的Connector如下所示进行定义。UTF-8 的部分,根据encodingfilter的设定进行调整。
Tomcatのcontext.xml
使用Tomcat,热部署的情况下, 保存在Session里的ActionForm或者Dto可能失效 这是因为,Tomcat对Session进行序列化,Seasar2不能进行访问的情况下不能进行反向序列化。
为了部队Seesion进行序列化,反向序列化, 去掉conf/context.xml的标签Manager的注释。
消息资源
应用程序使用的消息,在xxx.properties里定义。sa-struts-tutorial工程在src/main/resources目录下有application(_ja).properties文件。
多语言对应的时候使用xxx_ja.properties。xxx部分,在struts-config.xml的标签message-resources的parameter属性里设定。
factory="org.seasar.struts.util.S2PropertyMessageResourcesFactory"/>
推荐使用PropEdit进行多语言properties文件设定