- 浏览: 85723 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
honghu:
朋友能把你的demo分享下吗?谢谢,honghu616@gma ...
最近做的Web流程设计器雏形,支持BPMN2.0 -
dyllove98:
Here is a workaround. It uses i ...
MappedByteBuffer 之文件删除问题 -
hahalzb:
thank you
JPA 概述及下载 -
geek87:
我的安装成功了。。呵呵
尝试使用Visual Editor 1.4 -
geek87:
谢谢了,我在试试安装
尝试使用Visual Editor 1.4
通常OSGI中的服务的注册,是通过手工来完成的,比如
LoginService loginService = new LoginServiceImpl();
// 注册服务
context.registerService(LoginService.class.getName(), loginService, new Hashtable());
// create a tracker and track the service
loginServiceTracker = new ServiceTracker(context, LoginService.class.getName(), null);
loginServiceTracker .open();
//使用
service = (LoginService) loginServiceTracker .getService();
service .login();
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/vwpolo/archive/2008/02/18/2101901.aspx
可以看到,非常的麻烦,现在我给大家介绍一个工具,名称为 Equinox OSGI Declarative Service,通过使用这个东西,我们可以像使用Spring那样来声明注册服务。
Equinox 的org.eclipse.equinox.ds项目提供了OSGi R4规范中的Declarative Service标准服务的实现,该组件由Prosyst公司提供实现。Declarative Service提供了基于OSGI平台之上的面向服务构件模型(Service-Oriented Component Model),也为在OSGI基础之上搭建SOA应用提供了可能。Declarative Service实现并没有包含在Eclipse的默认软件包中,需要单独从 Eclipse 的的网站上获得,网站名称为 http://download.eclipse.org/eclipse/equinox/ 页面下载这个项目,这张网页也提供了其他的项目下载,有兴趣的话可以看看
在提供了DS之后我们可以采用XML文件的方式来声明:
<?xml version="1.0" encoding="UTF-8"?>
<component name="LoginService">
<implementation class="org.vwpolo.osgi.service.model.impl.LoginServiceImpl"/>
<service>
<provide interface="org.vwpolo.osgi.service.model.LoginService"/>
</service>
</component>
上面的XML配置文件声明了LoginService的组件,组件实现类是 org.vwpolo.osgi.service.model.impl.LoginServiceImpl ,同时,声明了组件的服务接口为 org.vwpolo.osgi.service.model.LoginService 。我们将这个文件放在 OSGI-INF 文件夹中,文件结构如下图所示 :
接着我们再在 MANIFEST.MF 文件中指定服务配置文件的位置
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Services Plug-in
Bundle-SymbolicName: org.vwpolo.osgi.services
Bundle-Version: 1.0.0
Service-Component: OSGI-INF/component.xml
Import-Package: org.osgi.framework;version="1.3.0"
Eclipse-LazyStart: true
Export-Package: org.vwpolo.osgi.service.model,
org.vwpolo.osgi.service.model.impl
Bundle-Activator: org.vwpolo.osgi.service.Activator
上面的 " Service-Component: OSGI-INF/component.xml " 这行代码说明了 OSGI 服务配置文件的位置,下面先将项目的所有代码帖出来: Org.vwpolo.osgi.services 项目的源代码: Activator.java
package org.vwpolo.osgi.service;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private BundleContext context;
public void start(BundleContext context) throws Exception {
}
public void stop(BundleContext context) throws Exception {
}
}
LoginService .java
package org.vwpolo.osgi.service.model;
public interface LoginService ...{
public void login(String name, String password);
}
LoginServiceImpl .java
package org.vwpolo.osgi.service.model.impl;
import org.vwpolo.osgi.service.model.LoginService;
public class LoginServiceImpl implements LoginService {
@Override
public void login(String name, String password) {
if (name.equals("vwpolo") && password.equals("123"))
System.out.println("登录成功");
else
System.out.println("登录失败,用户名或密码错误!");
}
}
UseOSGIServiceExample 项目的源代码:
Activator.java
package org.vwpolo.osgi.service; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.vwpolo.osgi.service.model.LoginService; public class Activator implements BundleActivator { private BundleContext context; public void start(BundleContext context) throws Exception { this.context = context; ServiceReference serviceRef = context.getServiceReference(LoginService.class.getName()); LoginService loginService = (LoginService) context.getService(serviceRef); loginService.login("vwpolo", "123"); System.out.println("OSGI框架已经成功启动了,一切运行正常"); } public void stop(BundleContext context) throws Exception { } }
项目建好了发现如果有错误的话那么肯定是环境没配置好,比如包没有导出或导入,
在 org.vwpolo.osgi.services 项目 MANIFEST.MF 文件中的 Runtime 标签页将org.vwpolo.osgi.service.model 和 org.vwpolo.osgi.service.model.impl 这两个包导出
然后在 UseOSGIServiceExample 项目的 MANIFEST.MF 文件中的 Dependencies 标签页将上面导出的两个包导入就行了
下面我们来运行一下看看最终的效果,打开运行配置对话框,
依次勾选上图中的要依赖的项目, 还是列出来比较好:
org.vwpolo.osgi.services UserOSGIServiceExample org.eclipse.equinox.app org.eclipse.equinox.common org.eclipse.equinox.ds org.eclipse.equinox.registry org.eclipse.osgi org.eclipse.osgi.services org.eclipse.osgi.util 点击运行,结果:
输入 ss 回车,可以看到插件的状态
发表评论
-
Java并发的四种风味
2015-08-07 09:21 522刚看到这篇文章,讨论了Java应用中并行处理的多种方法,其中 ... -
使用Ant构建Maven3项目【更新】
2013-04-03 00:40 1491之前的转的帖子经过验证发现还是有点问题的,所以打算重写一遍 ... -
婚礼用--宾客席位搜索器
2013-01-04 13:21 1020前阵子事情多,又要准备结婚,所以博客好久没更新了。 2 ... -
Java 过滤文件的BOM头
2012-09-06 15:22 1386最近项目碰到一个小问题,配置文件如果用记事本改过,会因为解析错 ... -
nexus 初试笔记
2012-06-27 22:01 1256今天花了点时间研究了下Nexus,做个小笔记。 1.别 ... -
Java 阻塞队列
2012-06-21 14:13 1224项目中需要用到多线程处理,线程的任务最好是动态的负载均衡,自然 ... -
Vaadin 学习笔记
2012-03-22 22:50 0话说最近一个小项目,我实在是难以忍受不给力的美工MM,也受够了 ... -
开始试试Vaadin
2012-03-16 22:57 1380最近发现了一个比较有意思的Web Ria框架:Vaadin。官 ... -
Nutz中支持SLF4J
2011-11-15 14:08 2440Nutz是个不错的轻量级框架,小巧易用,不了解到同学可以 ... -
抛弃log4j改用logback
2011-11-04 14:09 8161公司的新平台最近日志总出问题: - 满容量后不自动备份,并且 ... -
JAVA 7 新特性
2011-08-02 17:25 1772Java 7 正式版已经发布,来看看新特性。(转载自OSC ... -
[转] DbUnit 入门
2011-05-19 10:35 933什么是dbunit以及为什 ... -
log4j 日志文件的相对路径
2011-03-31 20:36 1131日志文件生成在工程目录下经常可以省去很多麻烦。 网上参 ... -
Quartz 时间表达式
2011-03-15 17:55 1347最近用了下大名鼎鼎的quartz,基本能满足调度需求的变化了。 ... -
使用JXL(JExcelAPI)操作Excel
2011-02-28 15:27 1339原文链接:http://www.cnblogs.com/ray ... -
equinox web开发依赖包(jetty)
2010-11-06 19:07 1536今天尝试了下基于equinox的web开发,需要加入如下依赖包 ... -
Java游戏开发中应始终坚持的10项基本原则
2010-08-07 09:24 1266关于文章中涉及的两个杜撰概念:一、绘图器:众所周知,Ja ... -
Java游戏开发中怎样才能获得更快的FPS
2010-08-07 09:12 55众所周知,Java应用的 ... -
JPA 2.0 新特性
2010-06-28 15:04 979http://en.wikibooks.org/wiki/Ja ... -
获取bundle的绝对路径
2010-06-22 13:13 2145最近碰到个小麻烦,如何从bundle获取其绝对路径。 ...
相关推荐
标题"基于EQUINOX的OSGI BUNDLE运行例子"指的是一个实际操作示例,展示了如何在EQUINOX OSGi环境中运行OSGi Bundle。EQUINOX提供了一个完整的运行时环境,使得开发者可以方便地管理和执行这些模块化的Bundle。 描述...
Equinox是Eclipse基金会提供的一个OSGi实现,它是Eclipse IDE的基础,同时也被广泛用于构建可扩展的、灵活的和模块化的Java应用程序。 本教程将深入讲解如何使用Equinox开发OSGi应用程序,并提供相关的源码供学习和...
例如,下面的MANIFEST.MF片段展示了如何声明一个名为`test.xml`的Component配置文件: ``` Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Test Plug-in Bundle-SymbolicName: test Bundle-...
提到"Appfuse的缩小版",意味着这个"equinox-1.7"可能是一个定制的、精简过的Equinox版本,专门针对Appfuse的需求进行了优化,减少了不必要的组件,使得在Appfuse项目中使用更加轻便和高效。 从压缩包文件的文件...
在本篇博文中,我们将探讨如何使用Equinox作为框架来开发OSGi应用程序。Equinox是Eclipse项目的一个组件,它提供了OSGi规范..."helloworld"项目是一个很好的起点,它能帮助我们理解OSGi的基本概念和Equinox的使用方法。
Equinox P2是Eclipse平台中的一个核心组件,主要用于软件的发布、管理和更新。它提供了一种灵活且强大的机制,使得基于Eclipse的Rich Client Platform (RCP)应用程序能够实现自我更新。这篇博客的文章标题“使用...
从Eclipse环境中脱离,将Equinox OSGi应用程序部署为独立的Java应用,需要创建一个包含所有依赖bundle和Equinox运行时的启动脚本。启动脚本通常会调用Equinox提供的启动器,如`org.eclipse.osgi.launch....
Equinox SDK 4.18 是一个用于开发和运行OSGi(Open Service Gateway Initiative)应用程序的框架。OSGi是一种模块化系统,它允许Java应用程序以更细粒度的组件进行构建,增强了可维护性、可扩展性和可升级性。...
【压缩包子文件的文件名称】"myhello"可能是一个示例项目,用于演示如何在Equinox上构建和运行一个简单的应用。这个项目可能包含以下元素: 1. `MANIFEST.MF` - 这是每个OSGi bundle的核心文件,包含了模块的元数据...
读者将首先了解到如何在 Servlet Container 中嵌入 OSGI,并从文章提供的例子中了了解其工作原理, 并提供一个简单的示例。通过学习了解 Servlet Container 中嵌入 OSGI, 我们也可以将这种技术用到其它的已有的系统...
**示例应用**:压缩包中的"osgi_example"可能包含了一个简单的OSGi Bundle示例,例如,创建一个HelloWorld服务,其他Bundle可以注册和使用这个服务。 总结来说,基于Eclipse的Equinox框架开发OSGi Bundle应用,可以...
Equinox是Eclipse项目的一部分,它是一个开源的OSGi实现,用Java编写,主要用于构建模块化应用程序。OSGi(Open Service Gateway Initiative)是一种Java服务框架,它定义了一种标准的模块化系统,允许Java应用程序...
Equinox是OSGi规范的一个实现,由Eclipse基金会开发,广泛应用于各种Java项目,尤其是那些需要动态部署、更新和管理组件的场景。 在《OSGi与Equinox 创建高度模块化的Java系统》一书的第6章中,作者深入探讨了如何...
Equinox是Eclipse项目的一部分,它是一个开源的OSGi(Open Service Gateway Initiative)框架的实现。OSGi是一种模块化系统,用于Java应用程序的构建、部署和管理,它提供了动态发现和依赖管理的能力,使得开发者...
3. **启动Equinox系统**:为了体验Equinox的强大功能,需要了解如何启动一个Equinox系统。Equinox的启动依赖于特定的操作系统和芯片架构,因此在不同的平台上可能需要不同的下载版本。访问Equinox下载站点...
Equinox SDK 3.8.2 是一个针对OSGi(开放服务网关倡议)标准的实现框架,由Eclipse基金会维护。OSGi是一种模块化系统和Java应用程序框架,它允许在运行时动态发现、组合和配置软件组件。下面将详细阐述Equinox SDK...
Equinox SDK 4.22M1 是 Eclipse 组织发布的一个重要的软件开发工具包,主要针对 OSGi(Open Service Gateway Initiative)框架。OSGi 是一个用于Java平台的模块化系统,它允许开发者将应用分解为独立的、可重用的...
Equinox是Eclipse开源项目的核心组成部分,它是一个强大的OSGi(Open Service Gateway Initiative)框架实现。OSGi是一种模块化系统,允许Java应用程序以模块化方式构建,这些模块称为"bundle",每个bundle都有自己...
Equinox是OSGi联盟实现OSGi规范的一个实现,由Eclipse基金会维护,广泛应用于企业级开发,如IBM WebSphere、Eclipse IDE等。本资源提供了深入理解OSGi:Equinox原理、应用与最佳实践的源代码分析,以及equinox-SDK-...
下面将详细介绍如何使用Equinox框架开发一个简单的OSGi应用程序——Hello World示例。 ##### 准备工作 1. 下载并安装Eclipse 3.x版本。推荐使用Eclipse 3.3.2或更高版本,因为它全面支持OSGi R4规范。 2. 解压...