`
qq38450529
  • 浏览: 27839 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Virgo与Maven整合开发环境搭建(三)

    博客分类:
  • OSGI
阅读更多

             3.MP3、Picture

                     先来看picture搜索实现.

                     pom中,打包规则可以继承自应用类bundle打包规则。除了打包规则,还需要加入spring的依赖和api包的依赖。

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>org.springframework.spring-library</artifactId>
			<type>libd</type>
                        <version>3.5.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.phantom.demo</groupId>
			<artifactId>org.phantom.demo.api</artifactId>
			<version>1.0.0-SNAPSHOT</version>
		</dependency>

                     添加完依赖,可以进行代码编写了.先来看PictureSearchBean,我们让picture对象拥有两个属性,图片标题和图片链接.类很简单,作为数据载体及bundle通讯时传递的实体对象.

package org.phantom.demo.search.picture;

import org.phantom.demo.api.SearchBean;

public class PictureSearchBean implements SearchBean {

	private String title;
	private String url;
	public PictureSearchBean() {
	}
	public PictureSearchBean(String title, String url) {
		this.title = title;
		this.url = url;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}

}

                       接下来看picture搜索业务的实现代码,同样也很简单.我们为了简便,模拟一些本地数据,表明意思即可.

package org.phantom.demo.search.picture;

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

import org.phantom.demo.api.SearchBean;
import org.phantom.demo.api.SearchHandler;
import org.springframework.stereotype.Service;


@Service("pictureSearch")
public class PictureSearchHandler implements SearchHandler {

	private static List<PictureSearchBean> beans = new ArrayList<PictureSearchBean>();
	
	static{
		beans.add(new PictureSearchBean("aaaaa", "aaaaaa"));
		beans.add(new PictureSearchBean("bbbbb", "vvvvvv"));
		beans.add(new PictureSearchBean("ccccc", "aaaaaa"));
		beans.add(new PictureSearchBean("daaddd", "aaaaaa"));
		beans.add(new PictureSearchBean("ddddd", "aaaaaa"));
	}
	
	
	public List<? extends SearchBean> doSearch(String key) {
		List<PictureSearchBean> temp = new ArrayList<PictureSearchBean>();
		for (PictureSearchBean b : beans) {
			if(b.getTitle().contains(key))
				temp.add(b);
		}
		return temp;
	}

}

                       通过key遍历数据,找到符合要求的返回.一个很简单的service.接下来看如何将这个服务发布.再普通OSGI中,发布该服务也不是很难,编写几行代码就ok了.

bundleContext.registerService(SearchHandler.class,new PictureSearchHandler(),null);

                        在Virgo中(这里看作Spring-DM),其实也是这样注册的,只不过这行代码不需要你亲自写.把注册service的事情完全交给spring去做.第一步,将这个类发布成Spring bean.

@Service("pictureSearch")

                         然后,来看一下spring配置文件.META-INF/spring/applicationContext.xml(默认位置)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:osgi="http://www.springframework.org/schema/osgi"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd">
		
	<context:component-scan  base-package="org.phantom.demo.search.picture"/>
	<osgi:service ref="pictureSearch" interface="org.phantom.demo.api.SearchHandler"/>
  </beans>

                        大致解释一下这个配置文件.将spring-osgi-schema导入

xmlns:osgi="http://www.springframework.org/schema/osgi"

                         然后打开注解扫描,将bean加入到spring的管理中,重点就是下面一句.

<osgi:service ref="pictureSearch" interface="org.phantom.demo.api.SearchHandler"/>

                         这样就将一个bean发布成OSGI的service了.osgi:service还有一些其他属性,这里不过多介绍.这篇文章的目的是向大家介绍我们在开发中如何使用Virgo,如何与Maven集成开发.其他的内容,我相信,当你看到这里的时候,肯定具有一定的学习能力.自己去查一下就OK.

                          再来看一下Picture的OSGI描述.

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: picutre search module
Bundle-SymbolicName: org.phantom.demo.search.picture
Bundle-Version: 1.0.0.SNAPSHOT
Excluded-Imports: org.phantom.demo.search.picture
Import-Template: org.springframework.*;version="[3.0.5,4)"
Import-Package: org.springframework.context.config;version="[3.0.5,4)",
 org.eclipse.gemini.blueprint.config;version="[1.0.0,2)"

                         我们template.mf中没有写任何api包的东西,但是它肯定是依赖api包的.这就交给bundlor插件去做吧,给我们节省一点时间.可以打开最后生成的MANIFEST.MF看一下

                       我们按照同样的方式,开发另一个实现.MP3

                           再贴一些关键代码和配置.其实基本和Picture一模一样.

package org.phantom.demo.search.mp3;

import org.phantom.demo.api.SearchBean;

public class Mp3SearchBean implements SearchBean{

	private String name;
	private String singer;
	
	public Mp3SearchBean() {
	}
	public Mp3SearchBean(String name, String singer) {
		this.name = name;
		this.singer = singer;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSinger() {
		return singer;
	}
	public void setSinger(String singer) {
		this.singer = singer;
	}
}

 

package org.phantom.demo.search.mp3;

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

import org.springframework.stereotype.Service;

import org.phantom.demo.api.SearchBean;
import org.phantom.demo.api.SearchHandler;

@Service("mp3Search")
public class Mp3SearchHandler implements SearchHandler{

	private static List<Mp3SearchBean> beans = new ArrayList<Mp3SearchBean>();
	
	static{
		beans.add(new Mp3SearchBean("aaaaa", "aaaaaa"));
		beans.add(new Mp3SearchBean("bbbbb", "vvvvvv"));
		beans.add(new Mp3SearchBean("ccccc", "aaaaaa"));
		beans.add(new Mp3SearchBean("daaddd", "aaaaaa"));
		beans.add(new Mp3SearchBean("ddddd", "aaaaaa"));
	}
	
	
	public List<? extends SearchBean> doSearch(String key) {
		List<Mp3SearchBean> temp = new ArrayList<Mp3SearchBean>();
		for (Mp3SearchBean b : beans) {
			if(b.getName().contains(key))
				temp.add(b);
		}
		return temp;
	}

}

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:osgi="http://www.springframework.org/schema/osgi"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd">
	<context:component-scan  base-package="org.phantom.demo.search.mp3"/>
	<osgi:service ref="mp3Search" interface="org.phantom.demo.api.SearchHandler"/>
  </beans>

 

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: mp3 search module
Bundle-SymbolicName: org.phantom.demo.search.mp3
Bundle-Version: 1.0.0.SNAPSHOT
Excluded-Imports: org.phantom.demo.search.mp3
Import-Template: org.springframework.*;version="[3.0.5,4)"
Import-Package: org.springframework.context.config;version="[3.0.5,4)",
 org.eclipse.gemini.blueprint.config;version="[1.0.0,2)"

                         pom中加入spring和api的依赖即可.


 

 


 
 

 

  • 大小: 82.9 KB
  • 大小: 173.3 KB
  • 大小: 88 KB
分享到:
评论

相关推荐

    基于virgo环境的OSGI+Maven的web开发代码下载(spring+hibernate+GWT)

    标题中的“基于virgo环境的OSGI+Maven的web开发代码下载”表明这是一个使用OSGi(模块化Java系统)和Maven构建的Web应用程序项目,运行在Virgo服务器上。Virgo是SpringSource推出的一个OSGi应用服务器,它支持Spring...

    学位论文-—基于virgoserver进行springosgiweb开发.doc

    基于VirgoServer进行Spring Osgi Web开发需要配置VirgoServer开发环境,使用Maven和Eclipse Virgo Tools,创建Bundle Project,并配置Spring配置文件。同时,需要实现Servlet类,用于处理请求,并配置classpath和...

    virgo server

    在Virgo Server中,开发者可以利用Maven的生命周期和插件机制来构建、部署和管理OSGi模块,这大大简化了在Virgo环境中开发和部署应用的工作流程。 在"virgo-tomcat-server-3.5.0.RELEASE"这个压缩包中,包含了Virgo...

    基于VirgoServer进行Spring Osgi Web开发

    首先,我们需要确保拥有正确的开发环境和工具,包括Spring Tool Suite (STS),Maven插件,以及Eclipse Virgo Tools插件。 **一、开发工具** 1. **Spring Tool Suite (STS)**: 这是一个基于Eclipse的集成开发环境,...

    基于VirgoServer进行SpringOsgiWeb开发.doc

    通过以上步骤,我们不仅构建了一个基于VirgoServer的Spring OSGi Web开发环境,还完成了两个具体项目的搭建和配置。这种方式充分利用了Spring框架的优势以及OSGi的模块化特性,有助于构建灵活、可扩展的应用程序。

    virgo编程手册.pdf

    - **集成开发环境(IDE)集成**:Virgo与Eclipse等主流IDE的深度集成,使得开发者可以轻松地进行调试、测试和部署。手册提供了详细的步骤指导,帮助用户快速上手。 - **库和库供应**:Virgo支持通过各种渠道自动...

    最新virgo开发文档

    通过阅读"最新Virgo开发文档",开发者可以全面掌握Virgo的使用方法,提升在OSGi环境中构建和管理服务的能力。这份文档会详细阐述上述各个知识点,并提供实例和指导,帮助开发者快速上手并熟练运用Virgo进行开发工作...

    virgo-plan-maven-plugin

    Maven 插件,它根据项目直接依赖(忽略瞬态依赖)生成 Virgo 计划 XML。 示例配置: 使用“计划”项目打包 &lt;groupId&gt;group &lt;artifactId&gt;artifact &lt;version&gt;0.0.1-SNAPSHOT &lt;packaging&gt;plan &lt;groupId&gt;...

    virgo中添加hibernate需要的库

    Virgo,全称为OSGi Enterprise Platform,是SpringSource推出的一款基于OSGi规范的应用服务器,旨在为开发和部署企业级应用程序提供一个模块化、可扩展的平台。而Hibernate,则是一款流行的Java ORM(对象关系映射)...

    最新virgo-jetty-server

    【最新virgo-jetty-server】是一款专为Jetty设计的Virgo服务器,它提供了一种高效、可扩展的运行环境,使得基于Java技术的应用能够快速部署和管理。Virgo服务器是SpringSource公司(现已被VMware收购)开发的一款轻...

    virgo-bin包

    "Virgo-Bin" 包,正如其名,是一个与Virgo相关的二进制软件包。Virgo项目,源自SpringSource,是...在实际工作中,熟悉Virgo服务器的工作原理和配置,以及如何与之交互,对于提升开发效率和系统稳定性具有重要意义。

    virgo-web-server

    "Virgo Web Server" 是一个基于Java平台的轻量级应用服务器,主要由SpringSource团队开发,后来成为VMware(现为Dell Technologies的一部分)的一部分。这个服务器是为运行Spring框架的应用程序而设计的,特别关注高...

    最新virgo-tomcat-server

    这个版本包含了Virgo服务器的核心组件,可能包括了配置文件、管理工具、OSGi运行时环境以及与Tomcat的集成模块。用户可以通过解压这个文件,然后按照官方文档的指引在本地环境中安装和配置Virgo服务器,以便在Apache...

    virgo programmer guide

    以下将对Virgo的核心概念、功能、开发与部署流程进行深入解析。 1. Virgo概述: Virgo是由SpringSource公司开发的轻量级应用服务器,它基于OSGi(开放服务网关规范)框架,提供了一个模块化的运行环境,允许开发者...

    virgo分屏.zip

    总的来说,Virgo分屏软件以其实用性和易用性,成为了办公环境中的一款神器。通过合理利用这款工具,用户可以更好地组织和优化工作流程,提高生产力。无论是在日常办公还是专业项目中,Virgo都能提供强大的支持,让多...

    基于VirgoServer进行Spring Osgi Web开发(示例代码)

    在IT行业中,Spring OSGi(Open Service Gateway Initiative)是一种模块化开发的框架,它将Spring框架与OSGi服务架构相结合,为Web应用程序提供了一种更灵活、可扩展的开发方式。VirgoServer是Pivotal公司推出的一...

Global site tag (gtag.js) - Google Analytics