[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 メーリングリストの案内