[Seasar-user:8447] Re: [S2] XIncludeできません

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 6月 18日 (月) 23:30:34 JST


小林 (koichik) です.

Date:    Mon, 18 Jun 2007 22:45:34 +0900
From:    松崎 学 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:8446] Re: [S2] XIncludeできません

> xercesImpl-2.6.2.jarを配置して、javax.xml.parsers.SAXParserFactoryを
> 作成しても結果は同じでした。

それは不思議ですね.
XInclude されていないというのはどのように判断してますか?
例外の発生状況などはどうなったのでしょうか?

ビルドによって WEB-INF/classes の下に
META-INF/services/javax.xml.parsers.SAXParserFactory
があるはずですが,存在しているでしょうか?

> Java5を使っているので、Xercesは不要なのではと思って外してみました。
> Xerces2.6.2に強く依存するのであれば、
> TeedaではXIncludeは使えないのでしょうか?

Teeda は Xerces2.6.2 を直接使いますが,S2 は JAXP を
通して XML パーザを使用します.
JAXP が使用するパーザは
META-INF/services/javax.xml.parsers.SAXParserFactory 
で変更することができます.
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/xml/parsers/SAXParserFactory.html#newInstance()

これによって,JAXP では Xerces 2.6.2 ではなく,Java5 に
バンドルされている XInclude 対応の Xerces が使われるように
なります.
# S2 と Teeda では異なるパーザを使うことになります.


で,元のメール [Seasar-user:8444] を見直してみたのですが,

> > ・app.dicon
> >     <xi:include href="/convention.dicon"/>
> >     <xi:include href="/aop.dicon"/>
> >     <xi:include href="/app_aop.dicon"/>
> >     <xi:include href="/teedaExtension.dicon"/>
> >     <xi:include href="/dao.dicon"/>
> >     <xi:include href="/dxo.dicon"/>
> >     <xi:include href="/dbsession.dicon"/>

これらは XInclude にする必要はないですね.

> >     <!-- ■■■■ ValidatorにDIしたいコンポーネント ■■■■ -->
> >     <xi:include href="/hoge/allValidatorLabels.dicon"/>

Validator「に」allValidatorLabels「を」DI 
したいのでしょうか?
あるいは,
Validator「を」allValidatorLabels「に」DI
したいのでしょうか?

前者なら XInclude ではなく,<include> で構いません.
後者なら allValidatorLabels.dicon は XInclude にする
必要があります.
おそらく前者だと思うので,XInclude は必要ないのでは
ないかと思います.

っていうか,allValidatorLabels は HashMap ですか...
Map は型による自動バインディングの対象ではないので,
Validator に allValidatorLabels を DI するなら,
Validator は正確に setAllValidatorLabels(Map) という
名前のメソッドを持つ必要があります.
微妙に違っていたりすると DI されないのでメソッド名と
コンポーネント名をチェックしてみてください.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内