基于OSGi和Spring开发Web应用.docx

上传人:b****5 文档编号:6751531 上传时间:2023-01-10 格式:DOCX 页数:17 大小:414.78KB
下载 相关 举报
基于OSGi和Spring开发Web应用.docx_第1页
第1页 / 共17页
基于OSGi和Spring开发Web应用.docx_第2页
第2页 / 共17页
基于OSGi和Spring开发Web应用.docx_第3页
第3页 / 共17页
基于OSGi和Spring开发Web应用.docx_第4页
第4页 / 共17页
基于OSGi和Spring开发Web应用.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于OSGi和Spring开发Web应用.docx

《基于OSGi和Spring开发Web应用.docx》由会员分享,可在线阅读,更多相关《基于OSGi和Spring开发Web应用.docx(17页珍藏版)》请在冰豆网上搜索。

基于OSGi和Spring开发Web应用.docx

基于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"

"

xmanager_web_resources

zh_CN

org.springframework.web.jsf.DelegatingVariableResolver

TestBean

com.infotech.test.bean.TestBean

session

testControl

#{TestControl}

index

*

index

/index.jsp

修改web.xml

xmlversion="1.0"encoding="UTF-8"?

>

xmlns="

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

XmanagerWeb

javax.faces.CONFIG_FILES

/WEB-INF/faces-config.xml

org.apache.myfaces.DETECT_JAVASCRIPT

false

org.apache.myfaces.PRETTY_HTML

true

org.apache.myfaces.AUTO_SCROLL

true

contextConfigLocation

/WEB-INF/Application*.xml

org.springframework.web.context.ContextLoaderListener

MyFacesExtensionsFilter

org.apache.myfaces.webapp.filter.ExtensionsFilter

maxFileSize

100m

MyFacesExtensionsFilter

FacesServlet

MyFacesExtensionsFilter

/faces/myFacesExtensionResource/*

SetCharacterEncoding

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

SetCharacterEncoding

*.jsf

FacesServlet

javax.faces.webapp.FacesServlet

1

FacesServlet

*.jsf

index.jsf

index.jsp

 

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文件,将相关信息读取出来存储

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1