[Seasar-user:1750] TooManyRegistrationRuntimeException : [ESSR0045]について

北村 拓也 takuya-kitamura
2005年 4月 6日 (水) 12:04:29 JST


北村です。

下記のようなプログラムを組んだ場合、ContainerからのouterComponent時に以下のような例外が発生します。

org.seasar.framework.container.TooManyRegistrationRuntimeException: [ESSR0045]interface tech.di.ICCCに複数のコンポーネント(tech.di.CCC, tech.di.CCC)が登録されています

申し訳ありませんが、解決方法をお分かりの方がいらっしゃいましたら教えていただけないでしょうか。

注:b2を取得しようとすると正常終了するのですが、b1を取得しようとすると上記の例外が発生します。

■diconファイル
<components>
	<component name="b1" class="tech.di.BBB" />
	<component name="b2" class="tech.di.BBB">
		<property name="cCC">c2</property>
	</component>
	<component name="c1" class="tech.di.CCC" />
	<component name="c2" class="tech.di.CCC" />
</components>

■BBB.java
public class BBB {
    private ICCC ccc;
    
    public void setCCC(ICCC ccc) {
        this.ccc = ccc;
    }
    
    public ICCC getCCC() {
        return ccc;
    }
}

■ICCC.java
public interface ICCC {
    public abstract void print();
}

■CCC.java
public class CCC implements ICCC {
    public void print() {
        System.out.println("hello, world");
    }
}

■main
public class DISample {
	public static void main(String[] args) {
        S2Container container = S2ContainerFactory.create(PATH);
        BBB b1 = (BBB)container.getComponent("b1");
	}
}




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