- 浏览: 285376 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (120)
- Struts 1.框架 (12)
- Spring框架 (9)
- hibernate框架 (6)
- web 综合 (15)
- Dwr (1)
- struts 2 (19)
- 设计模式 (0)
- lucene (6)
- oracle (3)
- linux (10)
- mysql (4)
- jquery (0)
- AJAX (1)
- javaScript (1)
- J2SE (4)
- IBATIS (3)
- JPA (1)
- Compass (3)
- 报表 (1)
- 任务调度 (1)
- tomcat (3)
- RMI (0)
- JMS (2)
- WebService (2)
- SOAP (0)
- XML (1)
- 多线程 (8)
- 缓存 (2)
- nginx (3)
- mongodb (1)
- ant打包 (0)
最新评论
-
iceman1952:
Hi 你觉得很好的那两三篇 百度文库的链接,能贴一下吗?
内网穿透&UDP打洞 -
ice86rain:
里面貌似没有用到Lucene
Struts2+Hibernate3.2+Spring2.5+Compass整合 -
sgq0085:
写得非常详细 好文章
JMS之ActiveMQ Linux下安装与应用实例 -
強顔歓笶:
JMS之ActiveMQ Linux下安装与应用实例 -
yixiandave:
forcer521 写道不指定所有子目录都在一起的话,这样用源 ...
linux下nginx稳定版1.6.2安装
需求 :生成动态数据源配置文件为列
main方法
执行结果:
package com.bky.datasource; import java.util.List; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Root; @Root(name="beans") public class MutilDataSourceXmlConfig { @Attribute(name="xmlns") private String xmlns = "http://www.springframework.org/schema/beans"; @Attribute(name="xmlns:xsi") private String xmlnsxsi = "http://www.w3.org/2001/XMLSchema-instance"; @Attribute(name="xsi:schemaLocation") private String xsischemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"; @ElementList(entry = "bean", inline = true,required = true) private List<MutilDataSourceXmlConfigBean> beans ; public String getXmlns() { return xmlns; } public void setXmlns(String xmlns) { this.xmlns = xmlns; } public String getXmlnsxsi() { return xmlnsxsi; } public void setXmlnsxsi(String xmlnsxsi) { this.xmlnsxsi = xmlnsxsi; } public String getXsischemaLocation() { return xsischemaLocation; } public void setXsischemaLocation(String xsischemaLocation) { this.xsischemaLocation = xsischemaLocation; } public List<MutilDataSourceXmlConfigBean> getBeans() { return beans; } public void setBeans(List<MutilDataSourceXmlConfigBean> beans) { this.beans = beans; } }
package com.bky.datasource; import java.util.List; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.ElementArray; import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Root; @Root public class MutilDataSourceXmlConfigBean { @Attribute(name="id") private String id ; @Attribute(name="class") private String clazz ; @Attribute(name="destroy-method") private String destroyMethod ="close"; @Attribute(name="lazy-init") private boolean lazyInit = true; @ElementList(entry = "property", inline = true , required= true) private List<MutilDataSourceXmlConfigBeanProperty> properties ; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getClazz() { return clazz; } public void setClazz(String clazz) { this.clazz = clazz; } public String getDestroyMethod() { return destroyMethod; } public void setDestroyMethod(String destroyMethod) { this.destroyMethod = destroyMethod; } public boolean isLazyInit() { return lazyInit; } public void setLazyInit(boolean lazyInit) { this.lazyInit = lazyInit; } public List<MutilDataSourceXmlConfigBeanProperty> getProperties() { return properties; } public void setProperties(List<MutilDataSourceXmlConfigBeanProperty> properties) { this.properties = properties; } }
package com.bky.datasource; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Root; @Root public class MutilDataSourceXmlConfigBeanProperty { @Attribute(name="name") private String name ; @Attribute(name="value") private String value ; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
package cn.richinfo.cmail.dbrouter; import java.io.File; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.simpleframework.xml.Serializer; import org.simpleframework.xml.core.Persister; public class MutilDataSourceXmlConfigUtil { public static void createXml(MutilDataSourceXmlConfig config , Map<MutilDataSourceXmlConfigBean, Map<String, String>> maps, String path,ContextHolder handdler) throws Exception{ Set<String> set = new HashSet<String>() ; for (MutilDataSourceXmlConfigBean key : maps.keySet()) { set.add(key.getId()) ; } handdler.init(set) ; MutilDataSourceXmlConfig configXml = createMutilDataSourceXmlConfig(config,maps,handdler); Serializer serializer = new Persister(); serializer.write(configXml, new File(path)); } public static MutilDataSourceXmlConfig createMutilDataSourceXmlConfig(MutilDataSourceXmlConfig config ,Map<MutilDataSourceXmlConfigBean, Map<String, String>> beansMap,ContextHolder handdler) { List<MutilDataSourceXmlConfigBean> beanList = new ArrayList<MutilDataSourceXmlConfigBean>(); for (MutilDataSourceXmlConfigBean key : beansMap.keySet()) { //设置bean属性id key.setId(handdler.getValue(key.getId())) ; beanList.add(createMutilDataSourceXmlConfigBean(key, beansMap.get(key))); } config.setBeans(beanList) ; return config; } /* public static void createXml(MutilDataSourceXmlConfig config ,MutilDataSourceXmlConfigBean bean , Map<String, Map<String, String>> maps, String path,ContextHolder handdler) throws Exception{ handdler.init(maps.keySet()) ; MutilDataSourceXmlConfig beans = createMutilDataSourceXmlConfig(config,bean, maps,handdler); Serializer serializer = new Persister(); serializer.write(beans, new File(path)); } public static MutilDataSourceXmlConfig createMutilDataSourceXmlConfig(MutilDataSourceXmlConfig beans ,MutilDataSourceXmlConfigBean bean ,Map<String, Map<String, String>> beansMap,ContextHolder handdler) { MutilDataSourceXmlConfig config = new MutilDataSourceXmlConfig(); //构建xml属性 config.setXmlns(beans.getXmlns()) ; config.setXmlnsxsi(beans.getXmlnsxsi()) ; config.setXsischemaLocation(beans.getXsischemaLocation()) ; List<MutilDataSourceXmlConfigBean> beanList = new ArrayList<MutilDataSourceXmlConfigBean>(); for (String key : beansMap.keySet()) { //设置bean属性id bean.setId(handdler.getValue(key)) ; beanList.add(createMutilDataSourceXmlConfigBean(bean, beansMap.get(key))); } beans.setBeans(beanList) ; return beans; } */ public static MutilDataSourceXmlConfigBean createMutilDataSourceXmlConfigBean(MutilDataSourceXmlConfigBean bean, Map<String, String> propMap) { // 构建bean //MutilDataSourceXmlConfigBean bean = new MutilDataSourceXmlConfigBean(); //bean.setId(param.getId()); //bean.setClazz(param.getClazz()); /*if (param.getDestroyMethod() != null) { bean.setDestroyMethod(param.getDestroyMethod()); } bean.setLazyInit(param.isLazyInit());*/ bean.setProperties(createMutilDataSourceXmlConfigBeanProperty(propMap)); return bean; } public static List<MutilDataSourceXmlConfigBeanProperty> createMutilDataSourceXmlConfigBeanProperty( Map<String, String> map) { List<MutilDataSourceXmlConfigBeanProperty> proList = new ArrayList<MutilDataSourceXmlConfigBeanProperty>(); MutilDataSourceXmlConfigBeanProperty property = null; for (String key : map.keySet()) { property = new MutilDataSourceXmlConfigBeanProperty(); property.setName(key); property.setValue(map.get(key)); proList.add(property); } return proList; } }
main方法
/** * 生成数据库路由bean配置文件 * @param list * @param filePath * @param ddrService * @author wuchaohui */ public static void createRoutBeanXml(List<DbRouterModel> list, String filePath ,DbRouterDatasourcePropertyService ddrService) { try { Map<MutilDataSourceXmlConfigBean, Map<String, String>> maps = new HashMap<MutilDataSourceXmlConfigBean, Map<String, String>>(); Map<String, String> map = null; for (int i = 0; i < list.size(); i++) { map = new HashMap<String, String>(); DbRouterModel model = list.get(i); dealDbRouterModelNullAttribute(model) ; if (DbRouterConst.DYNAMIC_DATASOURCE_DRUID_TYPE.equals(model.getDbRouterDatasourceType())) {// druid List<DbRouterDatasourcePropertyModel> props = ddrService .searchList(model.getDbRouterDatasourceType()); DruidDataSourceAttrModel attr = getDruidDataSourceAttrModel(props,model.getDbType(),model.getDbIp(),model.getDbPort(),model.getDbName(),model.getDbUser(),model.getDbPwd()); map = BeanCopierUtils.getProperties(attr); MutilDataSourceXmlConfigBean bean = new MutilDataSourceXmlConfigBean() ; bean.setId(String.valueOf(model.getCorpId())) ; bean.setClazz(DbRouterConst.DYNAMIC_DATASOURCE_DRUID_NAME); bean.setDestroyMethod("close"); bean.setLazyInit(true); maps.put(bean, map); } } ContextHolder handdler = new LogRouterContextHolder(); MutilDataSourceXmlConfig configParam = new MutilDataSourceXmlConfig(); MutilDataSourceXmlConfigUtil.createXml(configParam, maps, filePath, handdler); } catch (Exception e) { logger.error("cmd = HelpUtil:createRoutBeanXml | msg = 初始化生成日志懂爱数据库配置异常",e); } }
执行结果:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="ds_cmail_dbrouter_1002" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="true"> <property name="testOnBorrow" value="false"/> <property name="testWhileIdle" value="true"/> <property name="validationQuery" value="SELECT 'x'"/> <property name="password" value="2146230530"/> <property name="url" value="jdbc:mysql://192.168.34.143:3308/test_logreport?null"/> <property name="removeAbandonedTimeout" value="180"/> <property name="testOnReturn" value="false"/> <property name="maxActive" value="20"/> <property name="username" value="richmail"/> <property name="logAbandoned" value="true"/> <property name="maxOpenPreparedStatements" value="10"/> <property name="maxWait" value="60000"/> <property name="minIdle" value="3"/> <property name="removeAbandoned" value="true"/> <property name="timeBetweenEvictionRunsMillis" value="30000"/> <property name="minEvictableIdleTimeMillis" value="1800000"/> <property name="initialSize" value="1"/> </bean> <bean id="ds_cmail_dbrouter_1001" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="true"> <property name="testOnBorrow" value="false"/> <property name="testWhileIdle" value="true"/> <property name="validationQuery" value="SELECT 'x'"/> <property name="password" value="2146230530"/> <property name="url" value="jdbc:mysql://192.168.34.143:3308/test_logreport?null"/> <property name="removeAbandonedTimeout" value="180"/> <property name="testOnReturn" value="false"/> <property name="maxActive" value="20"/> <property name="username" value="richmail"/> <property name="logAbandoned" value="true"/> <property name="maxOpenPreparedStatements" value="10"/> <property name="maxWait" value="60000"/> <property name="minIdle" value="3"/> <property name="removeAbandoned" value="true"/> <property name="timeBetweenEvictionRunsMillis" value="30000"/> <property name="minEvictableIdleTimeMillis" value="1800000"/> <property name="initialSize" value="1"/> </bean> <bean id="ds_cmail_dbrouter_1000" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="true"> <property name="testOnBorrow" value="false"/> <property name="testWhileIdle" value="true"/> <property name="validationQuery" value="SELECT 'x'"/> <property name="password" value="2146230530"/> <property name="url" value="jdbc:mysql://192.168.34.143:3308/test_logreport?null"/> <property name="removeAbandonedTimeout" value="180"/> <property name="testOnReturn" value="false"/> <property name="maxActive" value="20"/> <property name="username" value="richmail"/> <property name="logAbandoned" value="true"/> <property name="maxOpenPreparedStatements" value="10"/> <property name="maxWait" value="60000"/> <property name="minIdle" value="3"/> <property name="removeAbandoned" value="true"/> <property name="timeBetweenEvictionRunsMillis" value="30000"/> <property name="minEvictableIdleTimeMillis" value="1800000"/> <property name="initialSize" value="1"/> </bean> <bean id="ds_cmail_dbrouter_1010" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="true"> <property name="testOnBorrow" value="false"/> <property name="testWhileIdle" value="true"/> <property name="validationQuery" value="SELECT 'x'"/> <property name="password" value="2146230530"/> <property name="url" value="jdbc:mysql://192.168.34.143:3308/test_logreport?null"/> <property name="removeAbandonedTimeout" value="180"/> <property name="testOnReturn" value="false"/> <property name="maxActive" value="20"/> <property name="username" value="richmail"/> <property name="logAbandoned" value="true"/> <property name="maxOpenPreparedStatements" value="10"/> <property name="maxWait" value="60000"/> <property name="minIdle" value="3"/> <property name="removeAbandoned" value="true"/> <property name="timeBetweenEvictionRunsMillis" value="30000"/> <property name="minEvictableIdleTimeMillis" value="1800000"/> <property name="initialSize" value="1"/> </bean> </beans>
- simple-xml-2.6.2.jar (361.1 KB)
- 下载次数: 1
相关推荐
总的来说,"整套xml开发工具包"提供了XML解析和日志记录的关键组件,对于任何涉及到XML处理和日志管理的Java项目来说都是不可或缺的资源。掌握DOM4j和log4j的使用,将大大提高开发效率和代码质量。
总的来说,这个小型XML解析工具包是开发者处理XML文档的得力助手,通过封装XML解析的核心逻辑,降低了理解和使用XML的门槛,提高了开发效率。不论你是初学者还是经验丰富的开发者,都可以从中受益。
这里提到的两个关键库——XStream和DOM4J,都是Java中广泛使用的XML处理工具。 XStream是一个Java库,它提供了一种简单的方式来序列化和反序列化Java对象到XML,反之亦然。它的核心优势在于其简洁的API和易用性。...
Java实用工具包中的XML处理是Java开发者经常遇到的一项任务,特别是在处理数据交换、配置文件或者存储结构化数据时。XML(eXtensible Markup Language)因其结构清晰、可读性强的特点,被广泛应用。本工具包专门针对...
1. dom4j-1.6.1.jar:这是一个灵活且功能强大的Java XML API,它提供了全面的XML处理功能,包括XML的读取、写入、修改、搜索以及XPath支持。DOM4J基于DOM模型,但更易于使用,且性能优于标准DOM。它支持事件驱动的...
Java实用工具包大众型XML处理主要关注的是在Java编程环境中如何高效、便捷地处理XML文档。XML(Extensible Markup Language)是一种广泛用于数据交换和存储的标记语言,它具有良好的可读性和结构化特性,因此在Java...
本文将详细讲解如何使用Java实现XML到Map以及Map到XML的一键转换,并介绍一个已封装好的工具类`EasyXmlUtil`。 首先,XML到Map的转换涉及到XML的解析。在Java中,我们可以使用`javax.xml.parsers....
`dom4j`是一个非常流行的Java XML API,它提供了全面且强大的XML处理功能,包括读取、写入、修改和操作XML文档。`dom4j-1.6.1.jar`是这个库的特定版本,它允许开发者通过DOM、SAX和StAX方式解析XML,同时支持XPath...
在Java编程中,处理XML文件通常需要利用特定的工具方法。以下将详细介绍标题和描述中提到的三个XML工具方法: 1. **根据XML内容转成复杂嵌套类对象信息** 这个过程称为XML到对象的反序列化。Java提供了多种库来...
该包主要工作是封装,把操作简单明了化,可以让那些对document的东东望而生畏的人不用去"头痛",使用xml处理很简单明了。上面的3个例子只有取属性,其实还有advanceGetNode("path/map[0]")来直接获取节点,然后就可以...
在Java项目中,常见的XML处理库有Apache的Xerces和Woodstox,它们提供了高效的XML解析器和实现。此外,Spring框架也内置了对XML配置的支持,使得开发者可以使用XML来定义bean和配置。 在使用XML的jar包时,需要注意...
【海关报文解析转换工具包】是一个专门针对电子报文处理的软件工具,它能够帮助用户解析、转换和处理海关进出口业务中的各种电子数据报文。在国际贸易中,海关报文是至关重要的,它们包含了货物的详细信息,如商品...
在使用XML查看工具时,用户可以有效地提高工作效率,尤其是在处理大型或复杂XML文件时。通过这些工具,不仅可以快速定位数据,还能进行结构化的数据分析,对XML文档进行深入理解和操作。在IT行业中,掌握一款高效的...
它在XML处理领域中因其性能优异、内存占用低而受到广泛关注。"多快好省地建设社会主义"这句话虽然是一种比喻,但形象地表达了VTD-XML在处理XML文档时所追求的目标:快速、高效、节省资源。 VTD(Virtual Token ...
Java操作XML文件是一种常见的任务,尤其在处理配置文件、数据交换或者...这有助于提高你处理XML问题的能力,并可能启发你设计更高效的XML处理方案。对于Java开发者来说,深入理解DOM4J源码是一个提升技能的重要步骤。
总之,JDOM为Java开发者提供了便利的XML处理工具,通过其丰富的API可以轻松地解析、创建和修改XML文档。无论你是新手还是经验丰富的开发者,理解JDOM的工作原理及其核心功能,都将极大地提升你在处理XML任务时的效率...
MATLAB的XML工具箱是一个扩展包,它允许用户在MATLAB中读取、写入以及处理XML文件。通过阅读这份文件内容,我们可以了解到该工具箱在操作XML文件时的一些重要知识点。 首先,文档提到的xmlwrite函数可以将MATLAB的...
Java操作XML文件是Java开发中常见的一项任务,特别是在处理配置、数据交换或存储...理解这些工具的工作原理和使用方法是Java开发中的重要技能,压缩包中的项目和jar包提供了一个实际操作的环境,有助于加深理解和实践。
“xmlxml压缩工具”可能是指一个专门针对XML文件进行压缩处理的软件或库。这种工具的主要功能可能是减小XML文件的大小,提高存储效率和网络传输速度。XML文件由于其结构特性,往往比文本文件大,特别是在包含大量...
通过使用W3C提供的XML校验工具,开发者可以轻松地确保XML文档的合法性和一致性,从而提高数据处理的可靠性和效率。无论是对于个人开发者还是企业级项目,掌握如何有效地利用这些工具都是非常重要的。