我有两个文件beans.xml和jndi.xml。我们想要在beans.xml中检索通过jndi.xml放入JNDI的东西。不幸的是,beans.xml中的bean是在加载jndi.xml之前创建的,所以当我们尝试在beans.xml中进行JNDI查找时,JNDI中什么都没有。有没有办法在beans.xml之前加载jndi.xml?
的beans.xml
...
<bean id="geronimoTransactionManager" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/UserTransaction" />
</bean>
...
jndi.xml
<beans>
<bean id="jndi"
class="org.apache.xbean.spring.jndi.SpringInitialContextFactory"
factory-method="makeInitialContext"
singleton="true">
<property name="entries" ref="jndiEntries" />
</bean>
<map id="jndiEntries">
<entry key="java:comp/UserTransaction" value-ref="geronimoTransactionManager" />
</map>
<bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="geronimoTransactionManager" />
</bean>
<bean id="geronimoTransactionManager" class="org.apache.geronimo.transaction.manager.TransactionManagerImpl" />
</beans>
这是让我相信在jndi.xml之前加载beans.xml的日志。
21:43:26,927 | INFO | l Console Thread | ultOsgiApplicationContextCreator | 72 - org.springframework.osgi.extender - 1.2.0 | Discovered configurations {osgibundle:/META-INF/spring/*.xml} in bundle [SWIM Prototype :: AqMqJDBC Pooling (camel-osgi-aqmq)]
21:43:26,939 | INFO | ExtenderThread-4 | OsgiBundleXmlApplicationContext | 61 - org.springframework.context - 3.0.5.RELEASE | Refreshing OsgiBundleXmlApplicationContext(bundle=camel-osgi-aqmq, config=osgibundle:/META-INF/spring/*.xml): startup date [Wed Apr 20 21:43:26 GMT+00:00 2011]; root of context hierarchy
21:43:26,939 | INFO | ExtenderThread-4 | OsgiBundleXmlApplicationContext | 61 - org.springframework.context - 3.0.5.RELEASE | Unpublishing application context OSGi service for bundle SWIM Prototype :: AqMqJDBC Pooling (camel-osgi-aqmq)
21:43:26,973 | INFO | ExtenderThread-4 | XmlBeanDefinitionReader | 59 - org.springframework.beans - 3.0.5.RELEASE | Loading XML bean definitions from URL [bundleentry://202.fwk22939763/META-INF/spring/beans.xml]
21:43:27,295 | INFO | ExtenderThread-4 | CamelNamespaceHandler | 75 - org.apache.camel.camel-spring - 2.6.0.fuse-01-09 | OSGi environment detected.
21:43:29,167 | INFO | ExtenderThread-4 | WaiterApplicationContextExecutor | 72 - org.springframework.osgi.extender - 1.2.0 | No outstanding OSGi service dependencies, completing initialization for OsgiBundleXmlApplicationContext(bundle=camel-osgi-aqmq, config=osgibundle:/META-INF/spring/*.xml)
21:43:29,283 | INFO | ExtenderThread-5 | DefaultListableBeanFactory | 59 - org.springframework.beans - 3.0.5.RELEASE | Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@77e77a: defining beans [template,consumerTemplate,camel-1:beanPostProcessor,camel-1,required,jtaTransactionManager,geronimoTransactionManager,activeMQ,jmsConnectionFactory,jmsManagedConnectionFactory,jmsResourceAdapter,jencksConnectionManager,jencksPoolingSupport,requiredBeanForOracleAq,oracleQueue,oracleQueueCredentials,aqConnectionFactoryQueue,aqXADataSource,jdbcXADataSource,managedXADataSource,myTransform,preProps,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0]; root of factory hierarchy
21:43:29,736 | INFO | ExtenderThread-5 | OsgiSpringCamelContext | 68 - org.apache.camel.camel-core - 2.6.0.fuse-01-09 | JMX enabled. Using ManagedManagementStrategy.
21:43:29,839 | INFO | ExtenderThread-5 | JtaTransactionManager | 74 - org.springframework.transaction - 3.0.5.RELEASE | Using JTA UserTransaction: org.apache.geronimo.transaction.manager.TransactionManagerImpl@1f07586
21:43:29,839 | INFO | ExtenderThread-5 | JtaTransactionManager | 74 - org.springframework.transaction - 3.0.5.RELEASE | Using JTA TransactionManager: org.apache.geronimo.transaction.manager.TransactionManagerImpl@1f07586
21:43:29,839 | INFO | ExtenderThread-5 | JtaTransactionManager | 74 - org.springframework.transaction - 3.0.5.RELEASE | Using JTA TransactionSynchronizationRegistry: org.apache.geronimo.transaction.manager.TransactionManagerImpl@1f07586
21:43:30,104 | INFO | ExtenderThread-5 | OsgiSpringCamelContext | 68 - org.apache.camel.camel-core - 2.6.0.fuse-01-09 | Apache Camel 2.6.0-fuse-01-09 (CamelContext: 202-camel-3) is starting21:43:30,430 | INFO | ExtenderThread-5 | Activator | 68 - org.apache.camel.camel-core - 2.6.0.fuse-01-09 | Found 13 @Converter classes to load
21:43:30,469 | INFO | ExtenderThread-5 | Activator | 68 - org.apache.camel.camel-core - 2.6.0.fuse-01-09 | Found 1 @Converter classes to load
21:43:30,473 | INFO | ExtenderThread-5 | Activator | 68 - org.apache.camel.camel-core - 2.6.0.fuse-01-09 | Found 1 @Converter classes to load
21:43:30,477 | INFO | ExtenderThread-5 | Activator | 68 - org.apache.camel.camel-core - 2.6.0.fuse-01-09 | Found 2 @Converter classes to load
21:43:34,173 | INFO | ExtenderThread-5 | OsgiSpringCamelContext | 68 - org.apache.camel.camel-core - 2.6.0.fuse-01-09 | Route: route1 started and consuming from: Endpoint[activeMQ://queue:BROKER2.QUEUE?concurrentConsumers=10]
21:43:34,194 | INFO | ExtenderThread-5 | OsgiSpringCamelContext | 68 - org.apache.camel.camel-core - 2.6.0.fuse-01-09 | Total 1 routes, of which 1 is started.
21:43:34,196 | INFO | ExtenderThread-5 | OsgiSpringCamelContext | 68 - org.apache.camel.camel-core - 2.6.0.fuse-01-09 | Apache Camel 2.6.0-fuse-01-09 (CamelContext: 202-camel-3) started in 4.089 seconds
21:43:34,204 | INFO | ExtenderThread-5 | OsgiBundleXmlApplicationContext | 61 - org.springframework.context - 3.0.5.RELEASE | Publishing application context as OSGi service with properties {org.springframework.context.service.name=camel-osgi-aqmq, Bundle-SymbolicName=camel-osgi-aqmq, Bundle-Version=4.3.0.fuse-03-00}
21:43:34,205 | INFO | ExtenderThread-5 | ContextLoaderListener | 72 - org.springframework.osgi.extender - 1.2.0 | Application context successfully refreshed (OsgiBundleXmlApplicationContext(bundle=camel-osgi-aqmq, config=osgibundle:/META-INF/spring/*.xml))
21:43:41,674 | INFO | tenerContainer-7 | SpringInitialContextFactory | 110 - org.apache.xbean.spring - 3.7 | Loading JNDI context from: class path resource [jndi.xml]
21:43:41,685 | INFO | tenerContainer-7 | XBeanXmlBeanDefinitionReader | 59 - org.springframework.beans - 3.0.5.RELEASE | Loading XML bean definitions from class path resource [jndi.xml]
答案 0 :(得分:0)
在jndi.xml中,您应该尝试:
<beans>
<import resource="beans.xml"/>
(...)