[Seasar-user:18133] [Ymir][s2-pluggable] oc4j用の code-source プロトコルに対応していない
西山 はじめ
[E-MAIL ADDRESS DELETED]
2009年 7月 30日 (木) 21:58:11 JST
お世話になっております。
西山と申します。
環境:
Ymir 1.0.4
現在、YmirをOC4Jで動かすテストを行っております。
しかし、s2-pluggableがOC4Jに対応しておりません。
S2Container自体はOC4Jに対応しておりますので、対応を検討して
いただけないでしょうか。
s2-frameworkの
org.seasar.framework.container.cooldeploy.CoolComponentAutoRegister$CodeSourceFileStrategy
と同じ処理を
org.seasar.cms.pluggable.ClassTraverser
に追加することで、今のところ動作しております。
こちらで作成したソースは以下の通りです。
Index:
src/main/java/org/seasar/cms/pluggable/ClassTraverser.java
===================================================================
---
src/main/java/org/seasar/cms/pluggable/ClassTraverser.java
(revision 994)
+++
src/main/java/org/seasar/cms/pluggable/ClassTraverser.java
(working copy)
@@ -13,6 +13,7 @@
import org.seasar.framework.util.ClassTraversal;
import org.seasar.framework.util.JarFileUtil;
import org.seasar.framework.util.ResourceUtil;
+import org.seasar.framework.util.URLUtil;
import org.seasar.framework.util.ClassTraversal.ClassHandler;
public class ClassTraverser {
@@ -31,6 +32,7 @@
strategies.put("file", new FileSystemStrategy());
strategies.put("jar", new JarFileStrategy());
strategies.put("zip", new ZipFileStrategy());
+ strategies.put("code-source", new
CodeSourceFileStrategy());
}
public int getClassPatternSize() {
@@ -197,6 +199,22 @@
return JarFileUtil.create(new File(jarFileName));
}
}
+ /**
+ * OC4J固有の<code>code-source:</code>プロトコルで表現
されるURLをサポートするストラテジです。
+ */
+ protected class CodeSourceFileStrategy implements
Strategy {
+
+ public void process(Class<?> referenceClass, URL url) {
+ final JarFile jarFile = createJarFile(url);
+ ClassTraversal.forEach(jarFile, classHandler);
+ }
+
+ protected JarFile createJarFile(final URL url) {
+ final URL jarUrl = URLUtil.create("jar:file:" +
url.getPath());
+ return JarFileUtil.toJarFile(jarUrl);
+ }
+
+ }
class FilteredClassHandler implements ClassHandler {
=================ここまで
以上よろしくお願いいたします。
--
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
株式会社フジミック
システム開発センター ソフトウェア開発部
西山 創
[E-mail]:[E-MAIL ADDRESS DELETED]
〒140-0002 東京都品川区東品川3-32-42 フジテレビ別館7階
[TEL]:03-5495-1060
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Seasar-user メーリングリストの案内