`
mqchange
  • 浏览: 32776 次
  • 来自: 北京
社区版块
存档分类
最新评论

基于Maven构建OSGI(二)

阅读更多

迁移自个人百度空间博客,翻译自Nexus和maven相关文档!

 

6、部署OSGI Bundle 到Maven 仓库

 

首先下载Nexus professional(收费),地址为:

http://nexus.sonatype.org/download-nexus.html

当前最新版本为1.9.2.2。

压缩文件为:

 



解压之后有两个文件夹,如下图:

 



进入 nexus-professional-webapp-1.9.2.2\bin\jsw 目录找到和自己相应系统的文件夹,如下图所示:

 



我的为 windows-x86-32 。然后执行 nexus.bat 。如下图:

 



 
 

在地址栏输入: http://localhost:8081/nexus/

 

如图:

 



 
 

点击Log In。admin用户的密码为admin123. d eployment 用户的密码为 deployment 123。

 

设置~/.m2/setting.xml文件的内容如下:

 

<settings>

  <mirrors>

    <mirror>

      <!--This sends everything else to /public -->

      <id>nexus</id>

      <mirrorOf>*</mirrorOf>

      <url>http://localhost:8081/nexus/content/groups/public</url>

    </mirror>

  </mirrors>

  <profiles>

    <profile>

      <id>nexus</id>

      <!--Enable snapshots for the built in central repo to direct -->

      <!--all requests to nexus via the mirror -->

      <repositories>

        <repository>

          <id>central</id>

          <url>http://central</url>

          <releases><enabled>true</enabled></releases>

          <snapshots><enabled>true</enabled></snapshots>

        </repository>

      </repositories>

     <pluginRepositories>

        <pluginRepository>

          <id>central</id>

          <url>http://central</url>

          <releases><enabled>true</enabled></releases>

          <snapshots><enabled>true</enabled></snapshots>

        </pluginRepository>

      </pluginRepositories>

    </profile>

  </profiles>

  <servers>

    <server>

      <id>nx-snapshots</id>

      <username>deployment</username>

      <password>deployment123</password>

    </server>

    <server>

      <id>nx-releases</id>

      <username>deployment</username>

      <password>deployment123</password>

    </server>

  </servers>

  <activeProfiles>

    <!--make the profile active all the time -->

    <activeProfile>nexus</activeProfile>

  </activeProfiles>

</settings>

 

 

设置父级pom.xml文件,在<project>节点下加入如下内容:

 

  <distributionManagement>

   <repository>

   <id> nx -releases </id>

   <name> Nexus Releases </name>

   <url>http://localhost:8081/nexus/content/repositories/releases </url>

    </repository>

    <snapshotRepository>

      <id> nx -snapshots </id>

      <name> Nexus Snapshots </name>

 <url> http://localhost:8081/nexus/content/repositories/snapshots </url>

    </snapshotRepository>

  </distributionManagement>

 

新建 Maven 构建命令, deploy – DremoteOBR 。然后会在 Snapshots 中看到如下图所示的内容:

 



 
 

完成此步骤之后,就可以在Maven中引用其他文件一样来依赖该jar文件。例如:

<dependency>

  <groupId> com.yihua.osgi.test- osgi </groupId>

  <artifactId>IQueryWor </artifactId>

  <version> 0.0.1-SNAPSHOT </version>

 </dependency>

 

 

 

注册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资料。

 

转载请注明文章出处!!!!!!

 

 

迁移自个人百度空间博客,翻译自Nexus和maven相关文档!

  • 大小: 2 KB
  • 大小: 2.5 KB
  • 大小: 18.1 KB
  • 大小: 33.5 KB
  • 大小: 79.6 KB
  • 大小: 40.4 KB
分享到:
评论

相关推荐

    构建基于Maven的OSGI

    首先,我们需要创建一个新的Maven项目,并选择OPS4J的Pax Construct作为构建OSGi应用程序的基础。具体步骤如下: 1. **在Eclipse中创建项目**: - 打开Eclipse,选择`File &gt; New &gt; 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中,可以通过右键点击项目 -&gt; Run As -&gt; Maven Build,然后在Goals输入框中填写`install`或`package`来执行打包操作。这将根据pom.xml中的配置生成bundle文件。 6. **部署和运行...

    OSGI 开发文档中文的

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

    pax-web基本配置包

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

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

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

    Maven管理ServiceMix工程

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

    乱凑的一个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中,...

    bnd:BndBndtools。 用于构建OSGi捆绑软件的工具,包括Eclipse,Maven和Gradle插件

    Bnd / Bndtools是OSGi的瑞士军刀。 它基于对类代码的分析为您创建清单标头,验证您的设置,管理项目依赖项,diff罐子等等。 有关Bnd的信息可在上找到,有关Bndtools的信息可在上找到。 资料库 git存储库包含所有...

    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入门 ...

Global site tag (gtag.js) - Google Analytics