`

用maven构建基于osgi的web应用

阅读更多

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

    在本篇文章中,我们将详细介绍如何使用Maven构建一个OSGi项目,包括项目的创建、容器的启动、Bundle的导入与创建等方面。 #### 开发环境 - Eclipse 3.6 或更高版本 - Maven - OSGi框架(例如Equinox或Felix) - ...

    基于OSGi的Web应用开发系列(全).pdf

    **基于OSGi的Web应用开发**是现代软件开发中的一种技术实践,它允许开发者构建模块化、可扩展和可维护的Web应用。OSGi(Open Service Gateway Initiative)是一种开放的标准,提供了一种服务导向的、模块化的Java...

    基于VirgoServer进行Spring Osgi Web开发

    在本文中,我们将深入探讨如何基于VirgoServer进行Spring Osgi Web开发,这是一个涉及OSGi容器、Spring框架和Web应用程序的集成技术。首先,我们需要确保拥有正确的开发环境和工具,包括Spring Tool Suite (STS),...

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

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

    Intellij 13下OSGi的Maven例子

    OSGi(Open Service Gateway Initiative)则是一种模块化运行时环境,它允许Java应用程序以模块化的方式进行构建,解决了Java类加载器的复杂性问题,提供了动态服务发现和依赖管理的能力。 在这个"IntelliJ 13下...

    构建工具:maven简介

    常见的工程类型包括普通的Java应用、Android应用、OSGi bundle、Clojure项目、Web应用打包(WAR)等。通过不同的archetype选项,开发者能够快速搭建起相应的项目结构。 在构建过程中,Maven会根据项目POM文件中定义...

    osgi 构建模块化云应用之中文版

    在本书中,作者介绍了OSGi的基本概念和高级语义,并且通过实例演示了如何使用Maven、Bndtools等工具来构建OSGi应用。Bndtools是一个强大的构建工具,它带有BND插件,可以帮助开发者打包、测试和调试OSGi Bundles。...

    pax-web基本配置包

    在本文中,我们将深入探讨Pax Web的基本配置,以及如何基于Maven构建OSGI项目,并利用pax-runner插件进行二次开发。 **1. Pax Web介绍** Pax Web的核心特性包括: - 支持多种Servlet容器,如Jetty、Tomcat和...

    Maven 的41种骨架功能介绍

    该骨架用于创建一个基于Hibernate、Spring和JSF的Web应用程序原型。它包含了Web开发所需的主要技术栈,适用于希望快速启动一个企业级Web应用的开发者。 #### 2. internal-&gt;appfuse-basic-spring 此骨架用于创建基于...

    OSGI相关资料

    1. **基于OSGi和Spring开发Web应用.doc** - 这个文档很可能是关于如何在OSGI环境中集成和使用Spring框架来构建Web应用的教程。Spring框架是Java领域广泛使用的依赖注入框架,它与OSGI结合可以提供动态服务发现和更细...

    OSGI-Jetty示例,Java源码,很得劲

    本示例将探讨如何在OSGI环境中集成和运行Jetty,以构建可扩展、灵活的Java Web应用。 首先,理解OSGI的关键在于其模块化系统,每个模块称为一个bundle,它们有自己的类加载器,可以独立加载和运行。这种设计使得...

    osgi学习笔记(二)

    标签提到的“工具”意味着开发OSGi应用通常需要相应的IDE插件,如Eclipse PDE(Plug-in Development Environment)或Apache Felix的maven插件,它们帮助开发者管理和构建OSGi bundle。 8. **实战应用** OSGi广泛...

    spring-osgi.jar及其依赖包

    1. **创建bundle项目**:使用如BndTools这样的工具,或者直接使用Maven或Gradle的OSGi插件,来设置bundle的MANIFEST.MF文件,定义bundle的导出和导入包。 2. **定义服务和组件**:使用DS或Spring的XML配置,声明...

    maven-ipojo-plugin-1.11.1.zip

    Maven iPOJO插件则允许开发者在Maven构建流程中处理iPOJO组件,进行编译、验证和打包。 描述中的 "angulargwt.zip,gwt angularjs集成gwtangularjs集成gwt" 暗示了这个压缩包包含了一个项目,该项目旨在集成Google ...

    OSGi崁入Servlet的配置步驟

    使用Maven或Gradle等构建工具,创建一个新的OSGi Bundle项目。确保在pom.xml或build.gradle文件中包含适当的OSGi依赖,例如Apache Felix或Equinox的Servlet API。 4. **编写Servlet类** 创建一个继承自`javax....

    Java应用架构设计 模块化模式与OSGi,同时也包含了ArcGISAPIforJavascript开发教程的开发教程

    ArcGIS是由Esri公司提供的一个全面的GIS平台,其JavaScript API允许开发人员在Web浏览器中构建交互式的地图应用。这个API提供了丰富的功能,包括地图显示、图层管理、地理编码、空间分析以及社交网络分析等。通过...

    spring dm cxf

    从“基于OSGi的Web应用开发系列三(搭建项目框架).pdf”这个文件名来看,这篇文档很可能是系列教程的一部分,专注于介绍如何在OSGi环境中建立一个基于Spring DM和CXF的Web应用框架。文档可能会涵盖以下内容: 1. *...

    osgi集成servlet在karaf容器发布

    Karaf是Apache软件基金会的一个项目,是一个基于OSGi的轻量级运行时容器,用于部署和管理服务。在Karaf容器中集成Servlet并发布REST接口是一项常见的任务,下面我们将详细讨论这个过程。 首先,我们需要理解OSGi与...

    OSGI实战.zip

    - **开发工具**:如Apache Maven的Bndtools插件,简化了OSGI bundle的构建过程。 - **调试与测试**:理解如何在OSGI环境中进行调试和单元测试是实战的关键。 - **最佳实践**:掌握如何有效地组织bundle的结构,...

Global site tag (gtag.js) - Google Analytics