我有一个我们在 Jboss 中部署的现有服务 bean。不幸的是,它的数据源引用被配置为通过 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 限制,因为那时生产或测试 spring 上下文可以定义数据源。但在我不能这样做的情况下。有没有办法通过测试弹簧上下文定义 InitialContext 以避免上述异常。