[Seasar-user:495] Re: 例外の出方の改善案

B gluegent.com Masataka Kurihara kurihara
2004年 3月 22日 (月) 18:01:16 JST


栗原です。

やはり、

> 13)<arg>なしのAUTOモードで動かしながら、プロパティをセットしたとき

がRC1でも出るようです。例外は変わって、NoSuchConstructorRuntimeException
です。改善案の他の例はRC1でざっと試したところOKだと思います。

#例外表記
org.seasar.framework.exception.NoSuchConstructorRuntimeException:
  [ESSR0064]sample.org.seasar.TestComponentImpl, TestComponentImpl(),
  java.lang.NoSuchMethodException:
    sample.org.seasar.TestComponentImpl.<init>()
    at org.seasar.framework.util.ClassUtil.getConstructor
       (ClassUtil.java:96)

再現コードは、以下のとおりです。

#ブートストラップ
package sample.org.seasar;
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;
public class Bootstrap {
  public static void main(String[] args) {
    String path = "sample/org/seasar/test.xml";
    S2Container container = S2ContainerFactory.create(path);
    TestComponent component =
      (TestComponent)container.getComponent(TestComponent.class);
    component.getMessage();
  }
}

#引数用コンポーネント定義
package sample.org.seasar;
public interface TestArg {
  public String getName();
}

#引数用コンポーネント実装
package sample.org.seasar;
public class TestArgImpl implements TestArg {
  public String getName() {
    return "TestArg alive!";
  }
}

#取得コンポーネント定義
package sample.org.seasar;
public interface TestComponent {
  public String getMessage();
}

#取得コンポーネント実装
package sample.org.seasar;
public class TestComponentImpl implements TestComponent {
  private TestArg arg;
  private String message;
  public TestComponentImpl(TestArg arg) {
    this.arg = arg;
  }
  public void setMessage(String message) {
    this.message = message;
  }
  public String getMessage() {
    return message + " & arg(" + arg.getName() + ")";
  }
}

#コンテナ設定XML
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components
  PUBLIC "-//SEASAR//DTD S2Container//EN"
  "http://www.seasar.org/dtd/components.dtd">
<components>
  <component name="testAdvice"
    class="org.seasar.framework.aop.advices.TraceAdvice"/>
  <component name="testArg" class="sample.org.seasar.TestArgImpl"/>
  <component class="sample.org.seasar.TestComponentImpl">
    <!--arg>testArg</arg-->
    <property name="message">'kurihara'</property>
    <aspect>traceAdvice</aspect>
  </component>
</components>

以上です。

--
株式会社グルージェント
栗原 傑享(くりはら まさたか)
渋谷区渋谷3-7-6 第6矢木ビル4F
TEL:03-5469-8869 FAX:03-5469-8879
URL:http://www.gluegent.com/
--


> 栗原です。
> 
> > > 13)<arg>なしのAUTOモードで動かしながら、プロパティをセットしたとき
> > > org.seasar.framework.exception.lang.NoSuchMethodRuntimeException:
> > > [ESSR0057]クラス(org.seasar.extention.SpeakerManagerImpl)のメソッド
> > > (<<init>>())が見つかりません
> > > at org.seasar.framework.util.reflect.ClassUtil.getConstructor
> > > (ClassUtil.java:86)
> > > 
> > うごくはずですけど。
> > test.org.seasar.framework.container.deployer.SingletonComponentDeployerTest
> > #testDeployAutoManualProperty
> 
>   おや、そうですか。この例外の出方を見る環境が家のPCなので、今晩見て
> おきます。Aspectのところももう一回考えておきますね。返事は会社にまた
> 出てきてなので、明日になります。ではでは。
> 
> --
> 株式会社グルージェント
> 栗原 傑享(くりはら まさたか)
> 渋谷区渋谷3-7-6 第6矢木ビル4F
> TEL:03-5469-8869 FAX:03-5469-8879
> URL:http://www.gluegent.com/
> --
> 
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> http://lists.sourceforge.jp/mailman/listinfo/seasar-user






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