`
snoopy7713
  • 浏览: 1170030 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

基于Maven构建OSGI(三)

    博客分类:
  • OSGi
阅读更多

注册web应用请参考如下实例程序:

package testweb.internal; 

import javax.servlet.Servlet; 
import org.osgi.framework.BundleActivator; 
import org.osgi.framework.BundleContext; 
import org.osgi.framework.ServiceEvent; 
import org.osgi.framework.ServiceListener; 
import org.osgi.framework.ServiceReference; 
import org.osgi.service.http.HttpService; 

/** 
* Extension of the default OSGi bundle activator 
*/ 
public final class ExampleActivator implements BundleActivator, ServiceListener { 
               private BundleContext bundleContext; 
               private ServiceReference ref; 
               private Servlet servlet; 
               public void start(BundleContext context) throws Exception { 
                              bundleContext = context; 
                              servlet = new QueryWebServlet(bundleContext); 
                              // 在HttpService中注册Servlet 
                              registerServlet(); 
} 
               public void stop(BundleContext context) throws Exception { 
                              try { 
                                             unregisterServlet(); 
                              } catch (Throwable t) { 
                                             t.printStackTrace(); 
                              } 
                              servlet = null; 
                              bundleContext = null; 
                              ref = null; 
               } 
  
               public void serviceChanged(ServiceEvent event) { 
                              switch (event.getType()) { 
                              case ServiceEvent.REGISTERED: 
                                            registerServlet(); 
                                             break; 
                              case ServiceEvent.UNREGISTERING: 
                                             unregisterServlet(); 
                                             break; 
                              } 
               } 

               /* 
               * 注册Web应用 
          */ 
              private void registerServlet() { 
                              if (ref == null) { 
                                            ref = bundleContext 
                                                                           .getServiceReference(HttpService.class.getName()); 
                              } 

                             if (ref != null) { 
                                             try { 
                                                            HttpService http = (HttpService) bundleContext.getService(ref); 
                                                            if (null != http) { 
                                                                           // 注册动态资源Servlet 
                                                                           http.registerServlet("/osgi/servlet", servlet, null, null); 
                                                                           // 注册静态资源HTML 
                                                                          http.registerResources("/osgi/file", "webapp", null); 

                                                 } 
                                             } catch (Exception e) { 
                                                            e.printStackTrace(); 
                                             } 
                              } 
               } 
 
               /* 
               * 卸载Web应用 
          */ 
               private void unregisterServlet() { 
                              if (ref != null) { 
                                             try { 
                                                            HttpService http = (HttpService) bundleContext.getService(ref); 
                                                            if (null != http) { 
                                                                           http.unregister("/osgi/servlet"); 
                                                                           http.unregister("/osgi/file"); 
                                                            } 
                                             } catch (Exception e) { 
                                                           e.printStackTrace(); 
                                             } 
                              } 
               } 
} 

  

 

更详尽的内容请参考其他相关OSGI资料。

分享到:
评论

相关推荐

    构建基于Maven的OSGI

    首先,我们需要创建一个新的Maven项目,并选择OPS4J的Pax Construct作为构建OSGi应用程序的基础。具体步骤如下: 1. **在Eclipse中创建项目**: - 打开Eclipse,选择`File > New > Project`。 - 在弹出的窗口中...

    osgi+maven+springdm文档集

    "基于Maven构建OSGI.docx"可能阐述了如何结合Maven与OSGI,使得在Maven项目中管理OSGI模块变得更加简单和高效。 **3. Spring DM** Spring DM(Spring Dynamic Modules)是Spring框架的一个扩展,专门用于OSGI环境中...

    Intellij 13下OSGi的Maven例子

    在这个"IntelliJ 13下OSGi的Maven例子"中,我们将会探索如何在IntelliJ IDEA 13中设置和运行一个基于OSGi的Maven项目。首先,我们需要了解OSGi的核心概念,如Bundle(模块)、Service、生命周期管理等。Bundle是OSGi...

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

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

    构建工具:maven简介

    Maven是一个广泛使用的Java项目管理和构建自动化工具,它基于项目对象模型(POM)的概念,能够管理项目的生命周期,包括编译、测试、打包、发布等。Maven使得开发者可以更加专注于代码的编写,而不是繁琐的构建过程...

    osgi-bundle-hello-world:使用Maven的演示OSGI捆绑包

    标题中的“osgi-bundle-hello-world”是一个示例项目,展示了如何使用Maven构建一个OSGi(Open Services Gateway Initiative)捆绑包。OSGi是一种Java模块化系统,它允许开发者将应用程序分解为独立的、可重用的服务...

    基于VirgoServer进行Spring Osgi Web开发

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

    eclipse maven 打包bundle

    5. **运行Maven构建**: 在Eclipse中,可以通过右键点击项目 -> Run As -> Maven Build,然后在Goals输入框中填写`install`或`package`来执行打包操作。这将根据pom.xml中的配置生成bundle文件。 6. **部署和运行...

    OSGI 开发文档中文的

    5. **EnqiNX和OSGI的关系**:EnqiNX是一个基于OSGI的开源企业应用框架,它扩展了OSGI规范,提供了更高级的企业级功能,如安全管理、配置管理、事件管理和事务管理等。 6. **插件模块开发**:如何设计和实现OSGI插件...

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

    为了在OSGi环境中有效地开发,通常会使用一些工具,如Maven进行依赖管理和构建,Pax-construct和Pax-runner辅助构建OSGi应用,以及Eclipse作为IDE进行开发。Maven的使用可以简化项目结构、依赖管理和构建过程,但...

    Maven管理ServiceMix工程

    Maven构建生命周期** Maven的构建生命周期包括清理、编译、测试、打包、验证、集成测试、部署等多个阶段。对于ServiceMix项目,我们通常关心的是打包阶段,Maven可以将项目打包成kar或bundle格式,这些格式是...

    pax-web基本配置包

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

    乱凑的一个osgi的demo

    这些工具帮助开发者管理和构建OSGi项目,确保依赖关系的正确解决。 由于没有具体的文件列表,我们只能基于常见的OSGi项目结构来推测可能包含的内容: - **app01**:这可能是项目的根目录,里面可能包含着bundle的源...

    OSGi 入门+进阶+实战

    1. **构建OSGi应用**:使用Maven或Gradle的OSGi插件,可以方便地构建符合OSGi规范的模块化项目。 2. **Spring与OSGi集成**:Spring Dynamic Modules (SDM) 提供了将Spring应用与OSGi环境结合的工具,使Spring应用...

    Osgi的简单实现

    - 构建bundle:使用构建工具如Maven或Gradle,配置相应的Osgi插件来生成bundle JAR文件。 4. **Eclipse中的Osgi实现** 描述中提到的"简单用代码解释了过程"可能指的是通过Eclipse插件开发的过程。在Eclipse中,...

    osgi开发jar包

    5. **打包工具**:为了方便创建和管理OSGi bundle,有一些工具可以帮助开发者,如Apache Maven的maven-bundle-plugin或Gradle的osgi plugin。这些工具能够自动生成满足OSGi规范的MANIFEST.MF,并将依赖关系正确地...

    OSGi in Practice 完整版

    - **构建工具**:Maven和Ivy等构建工具可以帮助管理项目依赖。 - **Eclipse插件系统**:Eclipse的插件架构也是一种模块化方法。 - **JSR 277**:这是另一种试图解决模块化问题的Java规范提案。 #### 二、OSGi入门 ...

    Maven 的41种骨架功能介绍

    Maven作为一款强大的构建工具,在软件开发过程中扮演着极其重要的角色。它不仅能够帮助开发者自动化构建过程,还能通过其骨架(Archetype)功能来快速搭建项目的初始结构,极大地提高了开发效率。下面将详细介绍这41...

    eclipse离线安装maven

    Eclipse是一款广泛使用的Java集成开发环境(IDE),而Maven是一个强大的项目管理和构建工具,尤其在Java开发领域中被广泛应用。对于那些无法连接到互联网或者网络环境受限的开发者来说,离线安装Maven插件是必不可少...

Global site tag (gtag.js) - Google Analytics