java - Spring-data-mongodb db-factory id does not work -


i have working copy of mongo-config.xml uses default id of db-factory:

<?xml version="1.0" encoding="utf-8"?>     <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"     xmlns:util="http://www.springframework.org/schema/util"     xmlns:mongo="http://www.springframework.org/schema/data/mongo"     xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd         http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.4.xsd         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  <mongo:mongo id="replicasetmongo" replica-set="localhost:10901,localhost:10902"> <mongo:options connections-per-host="8" ssl="false" /> </mongo:mongo>  <mongo:db-factory mongo-ref="replicasetmongo" dbname="logs" username="logs_owner" password="logs_owner" />  <mongo:mapping-converter> <mongo:custom-converters> <mongo:converter> <beanclass="com.utils.mongodb.dao.impl.ssplogswriteconverter"/> </mongo:converter> </mongo:custom-converters> </mongo:mapping-converter>  <beanid="xmllogtemplate"class="org.springframework.data.mongodb.core.mongotemplate"> <constructor-arg name="mongodbfactory" ref="mongodbfactory"/> <constructor-arg name="mongoconverter" ref="mappingconverter"/> <propertyname="writeconcern"> <util:constant static-field="com.mongodb.writeconcern.unacknowledged"/> </property> </bean>  </beans> 

however have requirement connect 2 different databases on same mongodb replica-set. hence want define 2 different mongo:db-factory beans. made following change: (only changed beans shown below)

<mongo:db-factory id="xmldbfactory"      mongo-ref="replicasetmongo"     dbname="logs"     username="logs_owner"     password="logs_owner" />  <beanid="xmllogtemplate" class="org.springframework.data.mongodb.core.mongotemplate">     <constructor-arg name="mongodbfactory" ref="xmldbfactory"/>     <constructor-arg name="mongoconverter" ref="mappingconverter"/>     <property name="writeconcern">     <util:constant static-field="com.mongodb.writeconcern.unacknowledged"/>     </property>     </bean> 

as deploy change, jboss starts throwing errors @ startup follows. bug in spring, or doing wrong?

15:33:37,507 error [org.springframework.web.context.contextloader] (msc service thread 1-1) context initialization failed: org.springframework.beans.factory.beancreationexception: error creating bean name 'indexcreationhelper': cannot resolve reference bean 'mongodbfactory' while setting constructor argument; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no bean named 'mongodbfactory' defined     @ org.springframework.beans.factory.support.beandefinitionvalueresolver.resolvereference(beandefinitionvalueresolver.java:329) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.beandefinitionvalueresolver.resolvevalueifnecessary(beandefinitionvalueresolver.java:107) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.constructorresolver.resolveconstructorarguments(constructorresolver.java:615) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.constructorresolver.autowireconstructor(constructorresolver.java:148) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.autowireconstructor(abstractautowirecapablebeanfactory.java:1049) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbeaninstance(abstractautowirecapablebeanfactory.java:953) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:490) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:461) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:295) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:223) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:292) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:194) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:607) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:932) [spring-context-3.2.0.release.jar:3.2.0.release]     @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:479) [spring-context-3.2.0.release.jar:3.2.0.release]     @ org.springframework.web.context.contextloader.configureandrefreshwebapplicationcontext(contextloader.java:383) [spring-web-3.2.0.release.jar:3.2.0.release]     @ org.springframework.web.context.contextloader.initwebapplicationcontext(contextloader.java:283) [spring-web-3.2.0.release.jar:3.2.0.release]     @ org.springframework.web.context.contextloaderlistener.contextinitialized(contextloaderlistener.java:112) [spring-web-3.2.0.release.jar:3.2.0.release]     @ org.apache.catalina.core.standardcontext.contextlistenerstart(standardcontext.java:3392) [jbossweb-7.0.13.final.jar:]     @ org.apache.catalina.core.standardcontext.start(standardcontext.java:3850) [jbossweb-7.0.13.final.jar:]     @ org.jboss.as.web.deployment.webdeploymentservice.start(webdeploymentservice.java:90) [jboss-as-web-7.1.1.final.jar:7.1.1.final]     @ org.jboss.msc.service.servicecontrollerimpl$starttask.startservice(servicecontrollerimpl.java:1811)     @ org.jboss.msc.service.servicecontrollerimpl$starttask.run(servicecontrollerimpl.java:1746)     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) [rt.jar:1.7.0_45]     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) [rt.jar:1.7.0_45]     @ java.lang.thread.run(thread.java:744) [rt.jar:1.7.0_45] caused by: org.springframework.beans.factory.nosuchbeandefinitionexception: no bean named 'mongodbfactory' defined     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.getbeandefinition(defaultlistablebeanfactory.java:549) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractbeanfactory.getmergedlocalbeandefinition(abstractbeanfactory.java:1096) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:278) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:194) [spring-beans-3.2.0.release.jar:3.2.0.release]     @ org.springframework.beans.factory.support.beandefinitionvalueresolver.resolvereference(beandefinitionvalueresolver.java:323) [spring-beans-3.2.0.release.jar:3.2.0.release]     ... 25 more 

the problem isn't db-factory, it's mapping-converter has optional argument "db-factory-ref". argument internally preset "mongodbfactory" match default "id" of db-factory.

so "id" of db-factory works, "db-factory-ref" of mongo-conver has set accordingly:

<mongo:db-factory id="xmldbfactory" ... /> <mongo:mapping-converter db-factory-ref="xmldbfactory"> 

Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -