基于OSGi和Spring开发Web应用.docx
- 文档编号:6751531
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:17
- 大小:414.78KB
基于OSGi和Spring开发Web应用.docx
《基于OSGi和Spring开发Web应用.docx》由会员分享,可在线阅读,更多相关《基于OSGi和Spring开发Web应用.docx(17页珍藏版)》请在冰豆网上搜索。
基于OSGi和Spring开发Web应用
基于OSGi和Spring开发Web应用
作为一个新的事实上的工业标准,OSGi已经受到了广泛的关注,其面向服务(接口)的基本思想和动态模块部署的能力,是企业级应用长期以来一直追求的目标。
Spring是一个著名的轻量级J2EE开发框架,其特点是面向接口编程和非侵入式的依赖注入。
将OSGi和Spring结合能充分发挥二者各自的特长,更好地满足企业级应用开发的需求。
Spring开发组织在2008年发布了将OSGi和Spring结合的第一个版本:
Spring-DM。
dmServer是一个完全模块化部署的,基于OSGi的Java服务器,为运行企业Java应用和Spring应用提供更加强大的灵活性和可靠性。
SpringSource应用平台是构建在Spring、OSGi和ApacheTomcat之上的应用服务器,这个新的应用服务器摒弃了原有的JavaEE服务器标准,自然而然地将Spring编程模型展现其中,随之而来的还有一套基于OSGi内核构建的全新部署和打包系统。
本文通过一个简单实例,介绍如何利用Spring-DM开发基于OSGi和Spring架构的Web应用,同时探讨其中用到的关键技术及其基本思想。
实例教程:
一、.指定TargetPlatform到所用到的所有的bundle包的目录中。
二、创建一个Service接口bundle
新建一个接口类:
mon.ShowMsgInfo
同时新加一个接口方法:
publicStringGetMsgInfo();
打开这个接口bundle工程的MANIFEST.MS文件,在Runtime/ExprotedPackages中添加刚刚新建的接口类,使之对外提供这个服务。
三、创建一个接口bundle的实现bundle
打开这个接口bundle工程的MANIFEST.MS文件,在Dependencies/ImportedPackages中添加上面新建的接口类
新建一个接口实现类:
ShowMsgInfo
在这个类中,实现接口中的方法:
packagecom.infotech.test.service;
importmon.IShowMsgInfo;
publicclassShowMsgInfoimplementsIShowMsgInfo{
@Override
publicStringGetMsgInfo(){
return"HelloWord!
!
!
";
}
}
接下来,我需要将这个实现类发布成为一个OSGI服务:
在工程新一个目录OSGI-INF,并新建一个components.xml文档。
xmlversion="1.0"encoding="UTF-8"?
>
打开这个接口bundle工程的MANIFEST.MS文件,添加一行
Service-Component:
OSGI-INF/components.xml
四、接下来,我们创建一个WEB应用bundle:
.1.新建一个网页bundle工程:
2.在工程目录中创建WEB-INF/lib、WEB-INF/classes两个目录
并在WEB-INF目录中,创建Spring、jsf、及web配置文件:
3.在MANIFEST.MF文件中的配置项:
Runtime/Classpath中添加刚才创建的两个目录。
4.点击Add添加我们将要使用的jar包
5.新建一个网页就的Bean类TestBean
packagecom.infotech.test.bean;
importcom.infotech.test.control.TestBeanControl;
publicclassTestBean{
privateTestBeanControltestControl;
publicStringgetShowMsg(){
returntestControl.getShowMsg();
}
publicTestBeanControlgetTestControl(){
returntestControl;
}
publicvoidsetTestControl(TestBeanControltestControl){
this.testControl=testControl;
}
}
6.创建一下控制类TestBeanControl
packagecom.infotech.test.control;
importmon.IShowMsgInfo;
publicclassTestBeanControl{
privatestaticIShowMsgInfomsginfoService;
publicStringgetShowMsg(){
returnmsginfoService.GetMsgInfo();
}
publicvoidsetMsginfoService(IShowMsgInfomsginfoService){
this.msginfoService=msginfoService;
}
publicvoidunsetMsginfoService(IShowMsgInfomsginfoService){
if(this.msginfoService==msginfoService)
this.msginfoService=null;
}
}
7.打开这个接口bundle工程的MANIFEST.MS文件,在Dependencies/ImportedPackages中添加上面新建的接口服务类及WEB服务类
8.新建一个OSGI-INF/components.xm文件,我们来引用上面发布出来的OSGI服务
xmlversion="1.0"encoding="UTF-8"?
>
bind="setMsginfoService"unbind="unsetMsginfoService" cardinality="0..1"policy="dynamic"/> 9.打开这个接口bundle工程的MANIFEST.MS文件,添加一行 Service-Component: OSGI-INF/components.xml 10. 修改Application-test.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http: //www.springframework.org/dtd/spring-beans.dtd"> 修改faces-config.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEfaces-configPUBLIC "-//SunMicrosystems,Inc.//DTDJavaServerFacesConfig1.1//EN" " org.springframework.web.jsf.DelegatingVariableResolver 修改web.xml xmlversion="1.0"encoding="UTF-8"? > xmlns=" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" org.springframework.web.context.ContextLoaderListener org.apache.myfaces.webapp.filter.ExtensionsFilter org.springframework.web.filter.CharacterEncodingFilter 11.导入三个工程: Catalina.config Server.config Org.springframework.osgi.log4j.config 12.好了,写一个测试页: index.jsp <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%> <%@taglibprefix="f"uri="%> <%@taglibprefix="h"uri="%> <%@taglibprefix="x"uri="http: //myfaces.apache.org/tomahawk"%> <%@taglibprefix="c"uri=" <%@taglibprefix="t"uri="
view> outputTextvalue="#{TestBean.showMsg}"> outputText>
view>
13.最后我创建一个Debug环境
运行结果:
定时下载任务:
下载文件,设置超时,若长时间下载不成功,则取消下载
下载文件后,对其进行解压缩,
判断解压缩后的文件是否为XML文件,若是,则先删除老文件,将其移到至新文件夹,并存储文件信息到数据库。
若不是,则直接删除整个文件夹不予更新。
上传文件
判断文件是为XML文件还是ZIP文件,
若为XML文件则转移到新文件夹,记录到数据库
若为ZIP文件,则解压缩,则解压缩后的文件
读取XML文件,将相关信息读取出来存储
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 OSGi Spring 开发 Web 应用