http://blog.sina.com.cn/s/blog_492dbb6b01014jvo.html
本文面向具有osgi基础的初级读者。内容主要包括
- 如何用maven创建osgi项目
- 如何启动osgi框架
- 如何在osgi外部与osgi框架通信
- 如何应用jndi配置资源引用
- 如何发布osgi服务
- 如何创建基于osgi的web应用项目
1.用maven创建osgi项目
用maven的目的是使开发相率更高,而且不需要自己修改manifest.mf文件,用maven插件即可自动完成创建manifest并打包。创建这种项目的要求如下:
项目包类型为:<packaging>bundle</packaging>
要使用maven自动创建manifest.mf文件,需要插件maven-bundle-plugin,配置如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${pom.name}</Bundle-Name>
<Bundle-Version>${pom.version}</Bundle-Version>
<Bundle-Activator>com.javaworld.sample.tomcat.webActivator</Bundle-Activator>
<Export-Package>com.javaworld.sample.tomcat</Export-Package>
<Import-Package>
org.osgi.framework
</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
使用maven-bundle-plugin请参考:http://wso2.org/library/tutorials/develop-osgi-bundles-using-maven-bundle-plugin ,配置好后在项目目录下执行mvn install即可
同时还要引用osgi框架支持依赖包:
<dependencies>
<dependency>
<groupId>org.eclipse.osgi</groupId>
<artifactId>framework</artifactId>
<version>3.4.2.R34x_v20080826</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
</dependencies>
注意这里的type和scope,这种用法不仅表名bundel项目可以引用第三方bundle项目,普通项目也可以。下面将会看到。
2.启动osgi框架,并在外部与osgi框架通信
这里用Equinox OSGi框架,让EquinoxContainer 实现接口OsgiServices 并实现OsgiContainable 的start和stop方法。对于框架的启动和停止,我们放在tomcat启动和停止时触发。
首先用maven创建普通的项目,在pom中添加依赖
<dependencies>
<dependency>
<groupId>apache-tomcat</groupId>
<artifactId>catalina</artifactId>
<version>5.5.12</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.osgi</groupId>
<artifactId>services</artifactId>
<version>3.1.200.v20071203</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.osgi</groupId>
<artifactId>framework</artifactId>
<version>3.4.2.R34x_v20080826</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
</dependencies>
public interface OsgiServices {
public Object getOSGiService(String serviceName);
public Class<?> getBundleClass(String bundleName, String className)
throws ClassNotFoundException;
}
//OsgiContainable 扩展OsgiServices 并提供start和stop接口
相关推荐
在本篇文章中,我们将详细介绍如何使用Maven构建一个OSGi项目,包括项目的创建、容器的启动、Bundle的导入与创建等方面。 #### 开发环境 - Eclipse 3.6 或更高版本 - Maven - OSGi框架(例如Equinox或Felix) - ...
**基于OSGi的Web应用开发**是现代软件开发中的一种技术实践,它允许开发者构建模块化、可扩展和可维护的Web应用。OSGi(Open Service Gateway Initiative)是一种开放的标准,提供了一种服务导向的、模块化的Java...
在本文中,我们将深入探讨如何基于VirgoServer进行Spring Osgi Web开发,这是一个涉及OSGi容器、Spring框架和Web应用程序的集成技术。首先,我们需要确保拥有正确的开发环境和工具,包括Spring Tool Suite (STS),...
标题中的“基于virgo环境的OSGI+Maven的web开发代码下载”表明这是一个使用OSGi(模块化Java系统)和Maven构建的Web应用程序项目,运行在Virgo服务器上。Virgo是SpringSource推出的一个OSGi应用服务器,它支持Spring...
OSGi(Open Service Gateway Initiative)则是一种模块化运行时环境,它允许Java应用程序以模块化的方式进行构建,解决了Java类加载器的复杂性问题,提供了动态服务发现和依赖管理的能力。 在这个"IntelliJ 13下...
常见的工程类型包括普通的Java应用、Android应用、OSGi bundle、Clojure项目、Web应用打包(WAR)等。通过不同的archetype选项,开发者能够快速搭建起相应的项目结构。 在构建过程中,Maven会根据项目POM文件中定义...
在本书中,作者介绍了OSGi的基本概念和高级语义,并且通过实例演示了如何使用Maven、Bndtools等工具来构建OSGi应用。Bndtools是一个强大的构建工具,它带有BND插件,可以帮助开发者打包、测试和调试OSGi Bundles。...
在本文中,我们将深入探讨Pax Web的基本配置,以及如何基于Maven构建OSGI项目,并利用pax-runner插件进行二次开发。 **1. Pax Web介绍** Pax Web的核心特性包括: - 支持多种Servlet容器,如Jetty、Tomcat和...
该骨架用于创建一个基于Hibernate、Spring和JSF的Web应用程序原型。它包含了Web开发所需的主要技术栈,适用于希望快速启动一个企业级Web应用的开发者。 #### 2. internal->appfuse-basic-spring 此骨架用于创建基于...
1. **基于OSGi和Spring开发Web应用.doc** - 这个文档很可能是关于如何在OSGI环境中集成和使用Spring框架来构建Web应用的教程。Spring框架是Java领域广泛使用的依赖注入框架,它与OSGI结合可以提供动态服务发现和更细...
本示例将探讨如何在OSGI环境中集成和运行Jetty,以构建可扩展、灵活的Java Web应用。 首先,理解OSGI的关键在于其模块化系统,每个模块称为一个bundle,它们有自己的类加载器,可以独立加载和运行。这种设计使得...
标签提到的“工具”意味着开发OSGi应用通常需要相应的IDE插件,如Eclipse PDE(Plug-in Development Environment)或Apache Felix的maven插件,它们帮助开发者管理和构建OSGi bundle。 8. **实战应用** OSGi广泛...
1. **创建bundle项目**:使用如BndTools这样的工具,或者直接使用Maven或Gradle的OSGi插件,来设置bundle的MANIFEST.MF文件,定义bundle的导出和导入包。 2. **定义服务和组件**:使用DS或Spring的XML配置,声明...
Maven iPOJO插件则允许开发者在Maven构建流程中处理iPOJO组件,进行编译、验证和打包。 描述中的 "angulargwt.zip,gwt angularjs集成gwtangularjs集成gwt" 暗示了这个压缩包包含了一个项目,该项目旨在集成Google ...
使用Maven或Gradle等构建工具,创建一个新的OSGi Bundle项目。确保在pom.xml或build.gradle文件中包含适当的OSGi依赖,例如Apache Felix或Equinox的Servlet API。 4. **编写Servlet类** 创建一个继承自`javax....
ArcGIS是由Esri公司提供的一个全面的GIS平台,其JavaScript API允许开发人员在Web浏览器中构建交互式的地图应用。这个API提供了丰富的功能,包括地图显示、图层管理、地理编码、空间分析以及社交网络分析等。通过...
从“基于OSGi的Web应用开发系列三(搭建项目框架).pdf”这个文件名来看,这篇文档很可能是系列教程的一部分,专注于介绍如何在OSGi环境中建立一个基于Spring DM和CXF的Web应用框架。文档可能会涵盖以下内容: 1. *...
Karaf是Apache软件基金会的一个项目,是一个基于OSGi的轻量级运行时容器,用于部署和管理服务。在Karaf容器中集成Servlet并发布REST接口是一项常见的任务,下面我们将详细讨论这个过程。 首先,我们需要理解OSGi与...
- **开发工具**:如Apache Maven的Bndtools插件,简化了OSGI bundle的构建过程。 - **调试与测试**:理解如何在OSGI环境中进行调试和单元测试是实战的关键。 - **最佳实践**:掌握如何有效地组织bundle的结构,...