[Seasar-user:2119] Re: injectDependencyについて

Koichi Kobayashi koichik
2005年 6月 7日 (火) 00:55:58 JST


小林 (koichik) です.

On Mon, 06 Jun 2005 18:02:47 +0900
Masataka Kurihara <[E-MAIL ADDRESS DELETED]> wrote:

>   これですが、S2ContainerFactory経由のところでは、Builder
> の選択をプロトコル付きのパスのプロトコル種にするのではいかが
> でしょう?
> 
> S2Container container = S2ContainerFactory.create(
>     "context://WEB-INF/app.dicon");

一瞬いいアイディアかと思ったのですが,よくよく考えると
使いづらいような...
一連の dicon を WEB-INF に置こうと思うと,include の path なんかでも
そのようにプロトコル込みのパスを指定することになるわけですよね?
そうすると,それらの dicon をクラスパス以下に戻す際に変更が
必要になっちゃいますよね.

自分的には,path の記述自体を変えることなく,Factory / Builder の
構成次第でクラスパスから探してくれたり WEB-INF から探してくれたり,
切り替えられる方がよさげ.
一つのコンテナをインスタンス化する際に,java: とか context: とかが
入り交じっている && 明示的に指定しないといけない状況というのは
想像しにくいので.
せいぜい,クラスパスから見つからなければ WEB-INF から探すとかで
十分なのではないかと思います.

先に示した ResourceResolver の実装で上記のような URL 風のパスを
扱うことも十分可能なので,S2 の標準としてサポートするのは
避けたいかなぁ.個人的には.

> みたいな。"examples/dicon/Aop.dicon"のように既存の
> 書き方だとプロトコル省略とみなして、Javaクラスパスを示す
> プロトコルを補って処理をします。
> "java://examples/dicon/Aop.dicon"。InputStreamまで

本題から外れて申し訳ありませんが,URL での // はいわゆる
スーパールート (RFS 用語かな? ローカルなファイルシステム等の
ルート ( / ) の上位,ネットワーク上の仮想的な頂点) で,ネットワーク
ワイドでリソースをアドレスする場合の表記になります (たぶん).
簡単に言うと,// の後はホストを特定する識別子 (ホスト名 or DNS 名 or
IP アドレス等) とその付加物 (ポート番号やユーザ・パスワード等) です.
そして先頭が / は絶対パスを意味するので,クラスパスからのリソース
(これは相対パスでしょう) を意味するなら

java:examples/dicon/Aop.dicon

の方が適切かと.
何かのプロダクトで classpath:〜 っていうのも見かけた気がしますが.
同じように,コンテキストルートからのパスは

context:/WEB-INF/app.dicon

でしょうか.
もしHTML における <base> みたいなのを起点とした相対パスを表したければ,

context:foo.dicon

になるという感じかなぁ.
別に URL の約束事に従う必要はないかもしれませんが,念のため.

-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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