設定ファイルが肥大化すると、可読性や編集効率の低下や競合の発生頻度が上がってしまうので、サブシステムや機能単位などに分割したい時があると思います。
include要素で別のxwork設定ファイルを読み込むことができ、package要素のextends属性で他のパッケージの設定の継承をすることが出来ます。
個人的にはwebwork-defaultを継承して、システム共通のinterceptorやglobal-resultを書いたpackageを作って、末端のpackageがそれを継承して、xwork.xmlにまとめてincludeするというのが良いと思います。
構造
xwork.xml |->system-a.xml->system-default.xml->webwork.default.xml |->system-b.xml->system-default.xml->webwork-default.xml |->system-c.xml->system-default.xml->webwork-default.xml
xwork.xml
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"> <xwork> <include file="system-a.xml"/> <include file="system-b.xml"/> <include file="system-c.xml"/> </xwork>
system-a.xml
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"> <xwork> <include file="system-default.xml"/> <package name="system-a" extends="system-default"> <action /> </package> </xwork>
system-default.xml
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"> <xwork> <include file="webwork-default.xml"/> <package name="system-default" extends="webwork-default"> <result-types> <result-type /> </result-types> <interceptors> <interceptor /> <interceptor-stack /> </interceptors> <default-interceptor-ref name="xxxxStack"/> <global-results> <result /> </global-results> </package> </xwork>
※ packageのname属性はそれぞれユニークにする必要があると思います。