|
使用 springdata mongodb,直接使用 spring 配置,很简单,但如果一定要使用 jndi 方式配置,则需要费一翻功夫了。
<!-- spring 中配置 springdata mongodb-->
<mongo:mongo id="replicaSetMongo" replica-set="192.168.1.24:30001,192.168.1.25:30001,192.168.1.27:30001"/>
<mongo:db-factory id="mongoDbFactory" dbname="plussns" mongo-ref="replicaSetMongo"/>
1. jetty-evn.xml
<New id="springMongoDb" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>bean/plusMongoFactory</Arg>
<Arg>
<New class="com.plusrun.datasource.SpringMongoDbFactory">
<Set name="serverName">192.168.1.24:30001,192.168.1.25:30001,192.168.1.27:30001</Set>
<Set name="databaseName">plussns</Set>
<Set name="user" />
<Set name="password" />
</New>
</Arg>
</New>
2. web.xml
<resource-ref>
<res-ref-name>bean/plusMongoFactory</res-ref-name>
<res-type>com.plusrun.datasource.SpringMongoDbFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3. applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
"
default-autowire="byName" default-lazy-init="false">
<bean id="mongoDao" abstract="true">
<property name="daoType" value="1"></property>
<property name="dbFactory" ref="mongoDbFactory"></property>
</bean>
<!-- mongodb -->
<jee:jndi-lookup id="jndiMongoDbFactory" jndi-name="bean/plusMongoFactory" />
<bean id="mongoDbFactory" class="org.springframework.data.mongodb.MongoDbFactory" factory-bean="jndiMongoDbFactory" factory-method="mongoDbFactory"/>
...
4. SpringMongoDbFactory.java
package com.plusrun.datasource;
import java.util.ArrayList;
import java.util.List;
import org.springframework.data.authentication.UserCredentials;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import com.mongodb.Mongo;
import com.mongodb.ServerAddress;
public class SpringMongoDbFactory {
private String serverName;
private String databaseName;
private String user;
private String password;
private static int DEFAULT_PORT = 27017;
public MongoDbFactory mongoDbFactory() throws Exception {
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
for (String addressStr : serverName.split(",")) {
String server = addressStr;
int port = DEFAULT_PORT;
if (addressStr.indexOf(":") > 0) {
server = addressStr.split(":")[0];
port = Integer.parseInt(addressStr.split(":")[1]);
}
addrs.add(new ServerAddress(server, port));
}
UserCredentials userCredentials = new UserCredentials(user, password);
return new SimpleMongoDbFactory(new Mongo(addrs), databaseName, userCredentials);
}
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongoDbFactory());
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
public void setUser(String user) {
this.user = user;
}
public void setPassword(String password) {
this.password = password;
}
}
5. BaseSpringDataDao.java
...
/**
* 设置 mongodb factory.
* @param mongoDbFactory -
*/
public void setDbFactory(final MongoDbFactory mongoDbFactory) {
this.mongoDbFactory = mongoDbFactory;
}
... |
|
|