Jboss にデプロイした既存のサービス Bean があります。残念ながら、dataSource 参照は、JNDI サービスの「mappedName」ルックアップを介してデータソース参照を注入するように構成されています。
@Resource(name = "dataSource", mappedName = "java:/OracleDS")
private DataSource dataSource = null;
JNDI 以外の環境で Bean をテストしたい。JNDI 以外の環境で実行すると、この例外が発生することが予想されました。
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'myService': Injection of resource fields failed; nested exception
is org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean
definition with name 'java:/OracleDS' defined in JNDI environment: JNDI lookup
failed; nested exception is javax.naming.NoInitialContextException: Need to
specify class name in environment or system property, or as an applet parameter,
or in an application resource file: java.naming.factory.initial
これを修正する最も簡単な方法は、mappedName の制限を削除することだと認識しています。これは、本番またはテストのスプリング コンテキストがデータソースを定義できるためです。しかし、私がこれを行うことができない場合。上記の例外を回避するために、テストスプリングコンテキストを介して InitialContext を定義する方法はありますか?