2011-04-21 82 views
0

我有两个文件beans.xml和jndi.xml。我们想要通过jndi.xml将bean.xml中的内容放入JNDI中。不幸的是,beans.xml中的beans是在加载jndi.xml之前创建的,所以当我们尝试在beans.xml中执行JNDI查找时,没有任何内容在JNDI中。有没有办法让jndi.xml在beans.xml之前加载?在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> 

这里是一个让我相信的beans.xml是jndi.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.fact[email protected]: 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: [email protected]f07586 
21:43:29,839 | INFO | ExtenderThread-5 | JtaTransactionManager   | 74 - org.springframework.transaction - 3.0.5.RELEASE | Using JTA TransactionManager: [email protected]f07586 
21:43:29,839 | INFO | ExtenderThread-5 | JtaTransactionManager   | 74 - org.springframework.transaction - 3.0.5.RELEASE | Using JTA TransactionSynchronizationRegistry: [email protected]f07586 
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

在jndi.xml,你应该尝试:

<beans> 
    <import resource="beans.xml"/> 
(...)