[Seasar-user:19111] Re: [S2Dao]jarファイルにて実行するとgetRootDirにてNullPointerExceptionが発生する

Masanobu Shimura [E-MAIL ADDRESS DELETED]
2010年 1月 7日 (木) 14:35:01 JST


http://s2container.seasar.org/2.4/ja/DIContainer.html#ComponentAutoRegister

に書いてありますが。

org.seasar.framework.container.autoregister.FileSystemComponentAutoRegisterの
かわりに

org.seasar.framework.container.autoregister.ComponentAutoRegisterをつかえば
JARでもAutoregister 出来る筈ですが。

志村

2010年1月7日13:13 お 湯 <[E-MAIL ADDRESS DELETED]>:
>
> お世話になっております。お湯です。
> 前回MLにて回答を頂いた箇所から、どうしても解決しないため
> ご指摘いただければと思いメール致します。
>
> 前回こちらのMLに質問させていただきましたが
>http://ml.seasar.org/archives/seasar-user/2010-January/019095.html)
> ご指摘いただいた箇所を修正し、javaビルド後のjarファイルを展開→Rubyアプリケーションにて実行したところ
> 掲題の通りgetRootDirにてNullPointerExceptionが発生しております。
>
> diconファイルを読んで、Containerを生成するタイミングでDaoのクラスファイルが読めずに
> エラーとなっているのだと考えていますが、どのように修正すればよいのか全く検討がつきません。
> jarファイルのS2Daoを使用するアプリケーションを実行する場合、
> 実行の基点が変わってしまうためなのでしょうか?
>
> 修正するとすればdiconファイル
> <component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
> の中身の部分(packageのpathなど)だと考えていますが、正しいでしょうか?
>
> 以下にファイル構成、コンソールのエラー内容、Main.java、diconファイルについて記載致します。
>
> お忙しいところ大変申し訳ありませんが、ご教授の程宜しくお願いいたします。
> Rubyアプリケーションファイル構成
> sample--kanri--jp--sample--sample_test--test--GetTest.rb
> --lib--TestDao-1.0.jar
> Javaプロジェクトファイル構成
> JavaSample--src--test--Main.java
> Sample.java
> SampleDao.java
> SampleDao.dicon
> --j2ee.dicon
> jdbc.dicon
> jta.dicon
>
> ■エラー
> ------Sample Main 開始------
> ------設定ファイル pathセット完了------
> org/seasar/framework/container/autoregister/FileSystemComponentAutoRegister.java:55:in `getRootDir': java.lang.NullPointerException: null (NativeException)
>     from org/seasar/framework/container/autoregister/FileSystemComponentAutoRegister.java:33:in `registerAll'
>     from sun.reflect.NativeMethodAccessorImpl:-2:in `invoke0'
>     from sun.reflect.NativeMethodAccessorImpl:-1:in `invoke'
>     from sun.reflect.DelegatingMethodAccessorImpl:-1:in `invoke'
>     from java.lang.reflect.Method:-1:in `invoke'
>     from org/seasar/framework/util/MethodUtil.java:93:in `invoke'
>     from org/seasar/framework/container/assembler/AbstractMethodAssembler.java:94:in `invoke'
>     from org/seasar/framework/container/assembler/DefaultInitMethodAssembler.java:49:in `assemble'
>     from org/seasar/framework/container/deployer/SingletonComponentDeployer.java:69:in `assemble'
>     from org/seasar/framework/container/deployer/SingletonComponentDeployer.java:48:in `deploy'
>     from org/seasar/framework/container/deployer/SingletonComponentDeployer.java:76:in `init'
>     from org/seasar/framework/container/impl/ComponentDefImpl.java:236:in `init'
>     from org/seasar/framework/container/impl/S2ContainerImpl.java:563:in `init'
>     from org/seasar/framework/container/factory/SingletonS2ContainerFactory.java:150:in `init'
>     from test/Main.java:16:in `main'
>     from kanri/jp/sample/sample_test/test/GetTest.rb:21
>
> ■Main.java
> package test;
>
> import org.seasar.framework.container.S2Container;
> import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
>
> public class Main {
>     private static Sample[] smArray;
>     private static final String PATH = "test/SampleDao.dicon";
>
>     public static void main(String[] args){
>         System.out.println("------Sample Main 開始------");
>          // 設定ファイルを読み込む.
>         SingletonS2ContainerFactory.setConfigPath(PATH);
>         System.out.println("------設定ファイル pathセット完了------");
>         // 初期化する.
>         SingletonS2ContainerFactory.init();
>
>         〜(略)
>
> ■SampleDao.dicon
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
> "http://www.seasar.org/dtd/components24.dtd">
> <components>
>     <include path="dao.dicon"/>
>     <include path="j2ee.dicon"/>
>
>     <!-- ログ出力用のコンポーネント -->
>     <component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
>
>     <!-- コンポーネントの自動登録-->
>
>     <component
>         class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
>         <property name="autoNaming">
>         <component class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
>         </property>
>         <initMethod name="addClassPattern">
>         <arg>"test"</arg>
>         <arg>".*Dao"</arg>
>         </initMethod>
>     </component>
>
>     <!-- アスペクトの自動登録 -->
>     <component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
>         <property name="interceptor">j2ee.requiredTx</property>
>             <initMethod name="addClassPattern">
>             <arg>"test"</arg>
>             <arg>".*Dao"</arg>
>             </initMethod>
>         </component>
>     <component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
>         <property name="interceptor">dao.interceptor</property>
>             <initMethod name="addClassPattern">
>             <arg>"test"</arg>
>             <arg>".*Dao"</arg>
>             </initMethod>
>     </component>
> </components>
>
>
> _________________________________________________________________
> Windows 7とOfficeが安くなる!(ダウンロード版)
> http://promotion.live.jp/special/msstore/
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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