2

クラスにハッシュマップを挿入しようとしています。この投稿によると: utilスキーマを使用してリストを自動配線すると、マップではなく使用する必要があるNoSuchBeanDefinitionExceptionが発生します。@Resource@Autowire

私のコードは次のようになります:

@Configurable
public class MyClass
{   

    @Resource(name="myMap")
    private Map<String,String> myMap = new HashMap<String, String>();

私の設定は次のようになります:

<context:annotation-config/>
<context:component-scan base-package="com.MyClass"/>

<util:map id="myMap" 
            key-type="java.lang.String"
            value-type="java.lang.String">
    <entry key="k1" value="v1"/>
    <entry key="k2" value="v2"/>
</util:map>

アプリケーションは正常に起動しますが、を参照するコードを実行しようとするとMyClass、次のWebSphereエラーが発生します。

CNTR0035E:EJBコンテナーがcom.ibm.wsspi.injectionengine.InjectionExceptionをキャッチしました:メタデータのバインディングの処理に失敗しました
    com.ibm.ws.injectionengine.InjectionEngineImpl.processBindings(InjectionEngineImpl.java:529)で
    com.ibm.ws.injectionengine.InjectionEngineImpl.processInjectionMetaData(InjectionEngineImpl.java:322)で
    com.ibm.ws.util.ComponentNameSpaceHelper.populateJavaNameSpace(ComponentNameSpaceHelper.java:806)で
..。
原因:com.ibm.wsspi.injectionengine.InjectionException:CWNEN0044E:MyServiceコンポーネント用に定義された以下のリソース参照[myMap]のリソース参照バインディングが見つかりませんでした。
    com.ibm.wsspi.injectionengine.InjectionProcessor.collectInjectionNBindingData(InjectionProcessor.java:1042)で
    com.ibm.ws.injectionengine.InjectionEngineImpl.processBindings(InjectionEngineImpl.java:516)で
    ...52もっと
 そして、com.ibm.ejs.container.ContainerExceptionをスローしています:BeanMetaDataインスタンスの初期化に失敗しました。ネストされた例外は次のとおりです。
    com.ibm.wsspi.injectionengine.InjectionException:メタデータのバインディングの処理に失敗しました。

WebSphereのクラスにマップを挿入する方法はありますか?

(Spring 2.5、WebSphere 7を使用)


以前、私はこのコードで名前による自動配線を試しました:

@Configurable(autowire=Autowire.BY_NAME, preConstruction=true)
public class MyClass
{   

@Qualifier("myMap")
@Autowired(required=true)
    private Map<String,String> myMap = new HashMap<String, String>();

そしてこの設定で:

<context:annotation-config/>
<context:component-scan base-package="com.MyClass"/>

<util:map id="myMap" 
            key-type="java.lang.String"
            value-type="java.lang.String">
    <entry key="k1" value="v1"/>
    <entry key="k2" value="v2"/>
</util:map>

その結果、自動配線しようとしているフィールドはnullになります。

4

2 に答える 2

0

autowire byType または byName が機能しているようです..試しましたか..??

于 2012-12-12T12:03:52.553 に答える