加载jar包下面的resources目录下的文件
2014-01-20 14:26
239 查看
背景(如并不关心,可以直接跳至最后一项实现代码):
现在这个项目会调用一个远程的webservice叫做NP,但是一直都没有准备好提供给我们用,我们的web application又需要继续开发。于是我们使用了dreamhead所写的moco,为我们模拟远程的NP。Moco做的事情是启动一个服务,监听某已配置端口,接收到一个request后,判断这个请求然后返回相应的response。
Moco提供了两种方式来配置。一种是使用Plugin,通过Json文件配置request和response,运行web application前启动好moco的server,就可以工作了。另一种是内嵌的moco,将moco引入在java代码中启动和配置,这种方式不需要运行项目前启动moco的server。
我们发送的request是xml格式的,期望得到的response也是xml格式的,于是我们定义了许多期望得到的xml文件,配置moco通过判断request返回对应的response。
问题:moco不是引入在webapp的module下面的,而是一个叫service的module,且这些response的xml都放在service这个目录下面的resources目录中。moco有两个方法可以返回两种类型,一个是方法是file,需要参数是路径(相对和绝对都可以);另一个是方法text,需要的参数是string。可以希望能在代码中加载到用于response的xml的文件。
[b]项目目录结构:[/b]
打包后的项目结构:
Maven在将webapp打包成war包的时候,将qdem-services打成了一个jar包,提供给webapp使用,由于moco是在这个jar包中被使用,所以只列出qdem-services这个jar包的目录结构。
加载resource目录下文件的方法:
当在配置Moco的response的时候,使用file方法传入xml的相对路径,即resources下文件的路径,但是单元测试能通过,但在在打完war包后,就找不到response1.xml文件了。所以这个方法是不成功的。
所以我们只有使用text方法,传入response.xml的string。可以使用class的ClassLoader去加载在resources目录下的文件。再将加载的文件转换为string。
我的Moco的配置在类MocoHttpEndPoint
IOUtils是commons-io包的方法,在maven中,添加了如下依赖:
现在这个项目会调用一个远程的webservice叫做NP,但是一直都没有准备好提供给我们用,我们的web application又需要继续开发。于是我们使用了dreamhead所写的moco,为我们模拟远程的NP。Moco做的事情是启动一个服务,监听某已配置端口,接收到一个request后,判断这个请求然后返回相应的response。
Moco提供了两种方式来配置。一种是使用Plugin,通过Json文件配置request和response,运行web application前启动好moco的server,就可以工作了。另一种是内嵌的moco,将moco引入在java代码中启动和配置,这种方式不需要运行项目前启动moco的server。
我们发送的request是xml格式的,期望得到的response也是xml格式的,于是我们定义了许多期望得到的xml文件,配置moco通过判断request返回对应的response。
问题:moco不是引入在webapp的module下面的,而是一个叫service的module,且这些response的xml都放在service这个目录下面的resources目录中。moco有两个方法可以返回两种类型,一个是方法是file,需要参数是路径(相对和绝对都可以);另一个是方法text,需要的参数是string。可以希望能在代码中加载到用于response的xml的文件。
[b]项目目录结构:[/b]
+---qdem | | | +---qdem-jetty | +---qdem-services | | | | | +---src | | | | | | | +---com.qing | | +---resources | | | | | ---response1.xml | +---qdem-webapp | +---qdem-tests
打包后的项目结构:
Maven在将webapp打包成war包的时候,将qdem-services打成了一个jar包,提供给webapp使用,由于moco是在这个jar包中被使用,所以只列出qdem-services这个jar包的目录结构。
qdem-services.jar | |---resonces1.xml |---+---com.qing
加载resource目录下文件的方法:
当在配置Moco的response的时候,使用file方法传入xml的相对路径,即resources下文件的路径,但是单元测试能通过,但在在打完war包后,就找不到response1.xml文件了。所以这个方法是不成功的。
所以我们只有使用text方法,传入response.xml的string。可以使用class的ClassLoader去加载在resources目录下的文件。再将加载的文件转换为string。
我的Moco的配置在类MocoHttpEndPoint
// file("response1.xml"); //does not work InputStream inputStream = MocoHttpEndPoint.class.getClassLoader().getResourceAsStream("response1.xml"); String value = IOUtils.toString(inputSteam, "UTF-8"); text(value);
IOUtils是commons-io包的方法,在maven中,添加了如下依赖:
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
相关文章推荐
- 应用Tomcat的WebappClassLoader加载指定目录的jar文件
- 命令行执行Java程序加载指定目录中的Jar文件
- maven学习系列8----将resources目录下的文件打包到jar包外
- 为什么不能把BlackBerry开发项目deliverables目录下面的jar文件给第三方?
- (tomcat中级)应用Tomcat的WebappClassLoader加载指定目录的jar文件
- java获取工程目录下面或者引用jar包中的配置文件方式:
- DexClassLoader自定义加载Assets目录下的dex、jar文件
- (tomcat中级)应用Tomcat的WebappClassLoader加载指定目录的jar文件
- [Java] 在 jar 文件中读取 resources 目录下的文件
- setting-->category(debug)中选择Generate mapfile就可以在debug和release目录下面出现.map的文件,就可以得到函数的唯一入口
- [备忘] [坑坑坑!]windows tar 压缩文件夹到指定目录下面
- 【转】如何监控某个驱动器或目录及其下面的所有子目录的创建文件的动作
- 生成可执行jar包和获得jar包同目录文件的方法
- 复制当前目录及其子目录下面的所有的txt文件,如果有文件名相同则重命名为bak01,bak02 ......
- 统计指定目录下面的文件类型及数量
- Libs文件夹下的Jar文件为什么不会自动放在Android Private Libraries目录下
- Java中动态加载jar文件和class文件
- jar包中class文件加载中文乱码解决
- myeclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题
- PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台!