`
houzhaowei
  • 浏览: 498013 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

weblogic 下解决文件批读取

阅读更多

      自己写了些sql 脚本的配置文件,以前在tomcat下可以从根目录获得所有这些配置文件,并在服务器启动时进行解析放到缓存。但在weblogic下就不行了!我在网上找过各种weblogic获得文件绝对路径的方案,但都是针对于单个文件读取的方案,不能解决批读取。于是想到了如下解决方案:

      写一个xml配置文件来引用所有的之前的配置文件,并写一个类对用dom4j对这个配置文件进行解析,依次读取xml中引入的所有配置文件。

    无代码无真相:

     用这个xml文件来引入其它配置文件:

    

<?xml version="1.0" encoding="UTF-8"?>
<dbscript-files>
	<dbscript-location value="/com/sinosoft/emergency/dbscripts/">
		<list path="authorization">
			<value>infoTransfer.xml</value>
			<value>module.xml</value>
			<value>orgnization.xml</value>
			<value>permission.xml</value>
			<value>role.xml</value>
			<value>user.xml</value>
		</list>
		<list path="graph">
			<value>graph.xml</value>
		</list>
		<list path="sbgl/sbgl001_sbccdwgl">
			<value>sbccdwgl.xml</value>
		</list>
	</dbscript-location>
</dbscript-files>

 然后这样进行解析:

package com.sinosoft.emergency.parser.core;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.sinosoft.emergency.exception.core.ParserException;


public class DBScriptsConfigParser {
	public static List<String> parser(InputStream is) throws ParserException{
		SAXReader reader = new SAXReader();
		try {
			Document doc = reader.read(is);
			Element root = doc.getRootElement();
			DBScriptsConfigVisitor visitor = new DBScriptsConfigVisitor();
			root.accept(visitor);
			return visitor.getFilepaths();
		} catch (DocumentException e) {
			throw new ParserException("parser dbscript config exception.", e);
		}
	}
}

 

package com.sinosoft.emergency.parser.core;

import java.util.ArrayList;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Element;
import org.dom4j.VisitorSupport;

public class DBScriptsConfigVisitor extends VisitorSupport {
	private List<String> filepaths = new ArrayList<String>();
	private String location = "";
	private String listPath = "";
	@Override
	public void visit(Element element) {
		String name = element.getName();
		if(name.equals("dbscript-location")) {
			location = "";
			Attribute valueAttr = element.attribute("value");
			if(valueAttr == null) {
				assert false : "node [dbscript-location] must has [value] attribute."; 
			}
			location = valueAttr.getValue().trim();
		}
		
		if(name.equals("list")) {
			Attribute pathAttr = element.attribute("path");
			listPath = "";
			if(pathAttr != null) {
				String pathValue = pathAttr.getValue().trim();
				if(!location.endsWith("/") && !pathValue.startsWith("/")) {
					listPath = "/" + pathValue;
				} else {
					listPath = pathValue;
				}
			}
			
		}
		
		if(name.equals("value")){
			String valueText = element.getText();
			if(!(location+listPath).trim().endsWith("/") && !valueText.startsWith("/")) {
				valueText = "/" + valueText.trim();
			}
			filepaths.add(location + listPath + valueText);
		}
		
		if(name.equals("dbscript-file")){
			String fileText = element.getText();
			filepaths.add(fileText);
		}
	}

	public List<String> getFilepaths() {
		return filepaths;
	}

	public void setFilepaths(List<String> filepaths) {
		this.filepaths = filepaths;
	}

}

 

0
1
分享到:
评论

相关推荐

    linux相关命令学习

    而`delusers.awk`则简单地从文件中读取用户名,然后批量执行`userdel`命令删除用户。 ### 2. 系统监控与资源管理 #### 网络连接状态监控 `netstat-an|grep`组合用于监控特定端口的网络连接状态。例如,`netstat-an...

    JAVA上百实例源码以及开源项目源代码

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    java开发乱码问题处理大全

    对于源代码文件,如果它们不是UTF-8编码,可以使用批量转换脚本来统一转换。例如,可以创建一个批处理脚本,使用`native2ascii`命令将非UTF-8编码的资源文件转换为目标编码。然而,最简便的方法是直接在IDE中设置...

    DWR中文文档.pdf

    这通常意味着下载DWR的最新版本,并将其包含在项目的lib目录下。确保所有的依赖库都已正确配置。 ##### 1.2.2 编辑配置文件 DWR的配置文件(`web.xml` 和 `dwr.xml`)是启动DWR的关键。`web.xml` 是Servlet容器的...

    ssh(structs,spring,hibernate)框架中的上传下载

     以上是Spring+Hibernate将文件二进制数据持久化到数据库的解决方案,而Struts通过将表单中file类型的组件映射为ActionForm中类型为org.apache.struts.upload. FormFile的属性来获取表单提交的文件数据。  工程...

    Spring.3.x企业应用开发实战(完整版).part2

    9.2.5 Spring使用ThreadLocal解决线程安全问题 9.3 Spring对事务管理的支持 9.3.1 事务管理关键抽象 9.3.2 Spring的事务管理器实现类 9.3.3 事务同步管理器 9.3.4 事务传播行为 9.4 编程式的事务管理 9.5 使用XML...

    Spring3.x企业应用开发实战(完整版) part1

    9.2.5 Spring使用ThreadLocal解决线程安全问题 9.3 Spring对事务管理的支持 9.3.1 事务管理关键抽象 9.3.2 Spring的事务管理器实现类 9.3.3 事务同步管理器 9.3.4 事务传播行为 9.4 编程式的事务管理 9.5 使用XML...

    TongWeb6.0应用开发手册.pdf

    - **改进的批量更新/删除**:提高批量操作的性能。 - **改进的XML映射**:提供了更灵活的XML映射选项。 #### 第6章:JEE6新特性 ##### 6.1 DI的使用 - **@Inject**:用于注入依赖项。 - **@Qualifier**:用于限定...

    框架面试笔试问答题.docx

    - **文件下载**:通过读取服务器上的文件流,使用`response.getOutputStream()`发送给客户端。 - **分页**:使用`PageHelper`插件对SQL语句进行分页处理,或者在Service层手动实现分页逻辑。 #### 10. Spring框架的...

    Spring中文帮助文档

    9.9. 常见问题的解决方法 9.9.1. 对一个特定的 DataSource 使用了错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 ...

    Spring API

    9.9. 常见问题的解决方法 9.9.1. 对一个特定的 DataSource 使用了错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 ...

Global site tag (gtag.js) - Google Analytics