`

Arch-03-28 Jndi 配置 Mongodb jetty 实现

 
阅读更多

使用 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;

	}


...
分享到:
评论

相关推荐

    Arch-03-15- Nginx+tomcat 配置负载均衡动静分离

    标题“Arch-03-15- Nginx+tomcat 配置负载均衡动静分离”涉及的是在Web服务器架构中使用Nginx与Tomcat的集成,通过配置实现负载均衡和动静态资源分离。这样的架构可以提高系统的可用性和响应速度,减轻后端应用...

    MongoDB Community(mongodb-linux-aarch64-ubuntu1804-5.0.8.tgz)

    MongoDB Community Server(mongodb-linux-aarch64-ubuntu1804-5.0.8.tgz)适用于Ubuntu 18.04 Arm芯片, MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决...

    cacti-plugin-arch-2.0.tar.gz

    "cacti-plugin-arch-2.0.tar.gz" 是一个针对Cacti的插件包,用于扩展Cacti的功能,提供更丰富的监控选项。此插件名为“Arch”,可能是对系统架构或性能分析相关的增强。 该压缩包文件的名称表明它是版本2.0,通常这...

    Comcast-SP-NGOD-ASSET-ARCH-I03-100731-FINAL-Coship.pdf

    Next Generation On Demand (NGOD) Asset Architecture Comcast-SP-NGOD-ASSET-ARCH-I03-100731 Issued July 31, 2010

    Arch-Linux-Install-ScriptArch_Linux_安装脚本_Arch-Linux-Insta

    正文中,我们首先需要明确的是,Arch_Linux_安装脚本或Arch-Linux-Install-Script,实际上是关于Linux操作系统中一种名为Arch Linux的发行版的安装脚本。Arch Linux是一个轻量级、灵活和面向社区的Linux发行版,它以...

    mongodb-linux-x86_64-ubuntu1604-4.0.18.tgz

    为了进一步优化MongoDB的性能,可以配置系统参数,例如增加内存分配、调整日志级别、启用oplog以实现复制集,或者设置合适的存储引擎选项。同时,监控MongoDB的日志文件和系统资源使用情况,有助于及时发现和解决...

    Arch_Linux_盒装安装媒介的小盒子_arch-media-box-typst.zip

    Arch_Linux_盒装安装媒介的小盒子_arch-media-box-typst.zip提供了一种方便快捷的方式来体验和安装Arch Linux,它通过预配置的安装媒介减轻了用户安装时的负担,使得用户能够更容易地进入Arch Linux的世界。

    变系数ARCH-M模型的ARCH效应检验

    变系数ARCH-M模型是时间序列分析领域的重要研究对象,其核心在于通过截面似然估计来检验模型是否具有条件异方差性(ARCH效应)。首先,我们来探讨一下条件异方差性的概念,它是指在时间序列分析中,随机变量的条件...

    apptoolkit-arch-core-common.jar

    基于android8.1源码平台中生成的jar,亲测可用!!!!

    UPnP-arch-DeviceArchitecture-v1.1.pdf

    文档中的地址分配部分讨论了如何确定是否使用自动IP配置,选择地址,测试地址的有效性,以及如何设置转发规则以确保动态地址的可用性。设备命名和DNS(域名系统)的交互也在这一部分被提及,以及名称到IP地址的解析...

    openrisc-arch-1.0-rev0

    OpenRISC是一种开源的指令集架构(ISA),它致力于提供一个简单、易于实现和使用的处理器核心,适用于广泛的嵌入式系统和应用程序。该文档是关于OpenRISC1000架构的手册,版本号为1.0,修订号为0,发布日期为2012年...

    保存我曾经安装arch时使用的一些配置和笔记_arch-linux.zip

    首先,从标题“保存我曾经安装arch时使用的一些配置和笔记_arch-linux.zip”和描述“保存我曾经安装arch时使用的一些配置和笔记_arch-linux”可以得知,这份压缩文件内容涉及的是与Arch Linux操作系统安装相关的配置...

    arch-deploy:自动安装和配置 Arch Linux 系统

    arch-deploy 自动安装和配置 Arch Linux 系统。描述arch-install.sh和arch-configure.sh文件都应该包含在您自己的 shell 脚本中。 它们为系统的安装和配置提供辅助功能。 所有可用的函数及其参数都记录在doc目录中。...

    Python库 | arch-4.11-cp35-cp35m-win32.whl

    标题中的"Python库 | arch-4.11-cp35-cp35m-win32.whl"指的是一个特定版本的Python库,名为“arch”,版本为4.11,适用于Python 3.5解释器(由"cp35"标识),且是针对32位Windows操作系统("win32")的。"cp35m"表示...

    Arch-03-24- Spring Security 应用

    NULL 博文链接:https://cnmqw.iteye.com/blog/1243596

    Comcast-SP-NGOD-GEN-ARCH-103-100731.pdf

    Next Generation On Demand (NGOD) Overall Architecture Comcast-SP-NGOD-GEN-ARCH-I03-100731 Issued July 31, 2010

    arch-snds100驱动程序

    解压缩后的"arch-snds100"文件包含了一系列源代码文件和配置文件,这些文件通常分为几个部分: 1. **头文件(Header Files)**:定义了驱动程序使用的函数原型、结构体和常量,供其他模块引用和调用。 2. **C...

    arch-openwrt-buildroot:基于 Arch Linux 的 OpenWrt buildroot docker 镜像

    安装克隆这个仓库git clone https://github.com/jannispinter/arch-openwrt-buildroot.git构建 docker 镜像 cd arch-openwrt-buildrootdocker build -t= " arch-openwrt-buildroot:trunk " . 最后的点表示Dockerfile...

    arch-box:Arch-box为不同的提供程序和后处理器(只读镜像)提供了Arch Linux版本的自动构建。

    **arch-box** 是一个专为Arch Linux自动化构建的项目,旨在为不同的虚拟化和容器环境提供预配置的Arch Linux镜像。它支持多种提供程序,包括 **Vagrant** 和 **VirtualBox**,同时也可能适用于 **QEMU** 等其他虚拟...

    Python库 | arch-4.8.0-cp27-cp27m-win32.whl

    python库。 资源全名:arch-4.8.0-cp27-cp27m-win32.whl

Global site tag (gtag.js) - Google Analytics