`

OSGi应用发布到tomcat

阅读更多

 equinox中的内置的jetty服务器已经很优秀了,但应用可以需要用到已经成熟的技术,需要集成到如tomcat, weblogic等等容器中。(下面以tomcat容器为例, 其他已经包括了OSGi框架的容器可能会更麻烦一点) 

下面按照自己的操作需要注意的关键步骤,记录一下如何把OSGi应用部署到tomcat容器中。

 

1 环境准备(或rap1.5):

servletbridge相关插件[s1]

  • org.eclipse.equinox.http.servletbridge_1.0.300.v20120522-2049.jar
  • org.eclipse.equinox.servletbridge.extensionbundle_1.2.100.v20120522-2049
  • org.eclipse.equinox.servletbridge_1.2.200.v20120522-2049(需打包成servletbridge.jar

warproduct相关插件[s2](0.2.2.201212132117)

  • /org.eclipse.libra.warproducts.core
  • /org.eclipse.libra.warproducts.ui

2 打包部署到tomcat

1) 集成到tomcat容器中,得去掉就javax.servlet Plugin的依赖。需要修改:插件中对于javax.servlet插件的引用,修改为package的方式添加依赖。



 

2) 在已经可以运行的product的基础上 [s3],新建warproduct导出为war [r1]。(后面的就不用讲了,和部署其他war是一样的)

  • 下载demo.zip,然后导入eclipse
  • 打开/sample.server/server-web.product文件,运行"Launch an Eclipse application"
  • 新建warproduct,选择"Use a launch configuration"-"server-web.product"(warproduct插件的安装参考[r1]的链接)
  • 需要添加servletbridge.jar的library
  • 导出成war,然后放置到tomcat/webapp目录下即可。(web.xml & launch.ini会同时导出)


 

3 到底发生了什么

 1、这其中最牛叉的就是servletbridge.jar,其中就三个Java类:

· org/eclipse/equinox/servletbridge/BridgeServlet.java

    接收和转发请求(给真正的Servlet),和插件org.eclipse.equinox.http.servletbridge配合把真正的Servlet(org.eclipse.equinox.http.servlet.HttpServiceServlet)注册到容器(如tomcat)。

    同时管理Framework。
· org/eclipse/equinox/servletbridge/CloseableURLClassLoader.java

    (。。。HARD。。。)
· org/eclipse/equinox/servletbridge/FrameworkLauncher.java

    对插件的部署,启动,extensionbundle的创建/更新

 

2、当然,能让我们的导出工作如此轻松,warproduct居功至伟啊!warproduct是一个精简版的PDE-product的实现,在PDE-product的基础上实现自定义校验和添加了library的功能,以及实现自己的导出功能。(使用Ant导出的文章http://www.ibm.com/developerworks/cn/web/wa-rcprap/index.html

现在的版本都是使用warproduct,找了老久才找到一个老版本的[rold1]),封装了如下的功能:

  • 去掉对jetty的依赖
  • 同时添加servletbridge相关插件和jar的校验
  • 过滤javax.servlet插件依赖错误的提示。
  public static final String SERVLET_BRIDGE_ID 
    = "org.eclipse.equinox.servletbridge"; //$NON-NLS-1$

  public static final String[] BANNED_BUNDLES = new String[] { 
    "javax.servlet", //$NON-NLS-1$
    "org.eclipse.update.configurator",  //$NON-NLS-1$
    "org.eclipse.equinox.http.jetty",  //$NON-NLS-1$
    "org.mortbay.jetty.server",  //$NON-NLS-1$
    "org.mortbay.jetty.util"  //$NON-NLS-1$
  };

  public static final String[] REQUIRED_BUNDLES = new String[] { 
    "org.eclipse.equinox.servletbridge.extensionbundle", //$NON-NLS-1$
    "org.eclipse.equinox.http.registry", //$NON-NLS-1$
    "org.eclipse.equinox.registry", //$NON-NLS-1$
    "org.eclipse.equinox.http.servlet", //$NON-NLS-1$
    "org.eclipse.equinox.http.servletbridge" //$NON-NLS-1$
  };

  + org.eclipse.equinox.http.servletbridge [s1] + tomcat 的功能相当于org.eclipse.equinox.http.jetty

 

源码Source

s1: equinox source

http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/

s2: warproducts demo

https://github.com/hstaudacher/org.eclipse.rap.build.examples/tree/master/warproducts

s3: example

http://winse.iteye.com/blog/1601916 

 

参考:

r1: RAP/Equinox WAR products

http://wiki.eclipse.org/RAP/Equinox_WAR_products

http://download.eclipsesource.com/~hstaudacher/warproducts/3.7

http://eclipse.org/rap/developers-guide/devguide.php?topic=advanced/deployment.html&version=1.5

 

http://eclipsesource.com/blogs/2011/02/02/equinoxrap-war-products-has-moved-hello-eclipse-libra/

http://eclipsesource.com/blogs/2011/02/07/how-to-build-a-server-side-equinoxrap-application/

http://eclipsesource.com/blogs/2009/08/15/building-your-equinox-based-appserver-part-1/

 

rold1: webappbuilder

http://eclipsesource.com/blogs/2007/12/07/rap-deployment-part-2-deploying-your-application-as-a-war-file/

http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.rap.help/help/html/advanced/deployment.html

写道
the script/webappBuilder.xml of the org.eclipse.rap.demo.feature.

 

r2:  Equinox in a Servlet Container

http://www.eclipse.org/equinox/server/

http://www.eclipse.org/equinox/server/http_in_container.php

 

  • 大小: 27.9 KB
  • 大小: 34.7 KB
分享到:
评论

相关推荐

    osgi 在web容器中部署

    在Web容器中部署OSGi应用,特别是像Tomcat这样的流行Servlet容器,可以提高应用的灵活性、可维护性和可扩展性。本文将详细介绍如何使用桥接技术(如Apache Felix的WebConsole或Pax Web)在Tomcat中部署OSGi程序。 ...

    tomcat-osgi压缩包

    标题中的“tomcat-osgi”指的是将开源的Java应用服务器Apache Tomcat与OSGi(Open Service Gateway Initiative)框架集成的版本。OSGi是一种模块化系统,主要用于Java应用程序,它允许开发者将应用程序分解为一系列...

    基于OSGi和Spring开发Web应用

    SpringSource应用平台,则是在Spring、OSGi和Apache Tomcat的基础上构建的新型应用服务器。它放弃了传统的Java EE服务器标准,转而采用一套全新的基于OSGi内核的部署和打包系统,从而更加自然地整合了Spring编程模型...

    RAP 打成war并发布到tomcat(操作步骤)

    【RAP 打成war并发布到tomcat】 在IT领域,RAP(RWT Application Platform)是一种基于Web的应用程序开发框架,允许开发者构建富客户端应用程序,这些应用能够在多种浏览器上运行,类似于Eclipse RCP(Rich Client ...

    spring osgi相关资源

    这个文件包含了Spring DM Server,它是SpringSource公司提供的一个OSGi运行时环境,用于运行和管理Spring OSGi应用。服务器提供了以下功能: 1. 支持多种OSGi标准:包括R4.2和R4.3规范。 2. 集成了管理工具:允许...

    osgi集成servlet在karaf容器发布

    总结来说,将Servlet集成到OSGi的Karaf容器中发布REST接口涉及到创建OSGi Bundle、注册Servlet服务、配置Jetty、部署Bundle、设置URL映射等多个环节。这样的模块化方式使得开发、测试和维护更加灵活高效,同时也为...

    osgi在web容器中部署的例子

    4. 部署Web应用:如果`bridge.war`是一个Web应用,需要将其部署到Tomcat,这样它就能与OSGi容器内的bundle交互。 5. 配置依赖关系:确保所有的bundle都正确声明了它们的依赖,并且在容器中可用。OSGi容器会自动解决...

    OSGi+SpringMVC+Spring+Hibernate企业应用框架

    五、将4个bundle发布到Virgo环境中并启动Virgo服务器 六、使用http://localhost:8080/venusource/访问,本架构只是搭建好osgi+springMVC+spring+hibernate的开发环境,所以测试案例只提供了从后台能插入到数据库和...

    基于OSGi和Spring开发Web应用.doc

    SpringSource应用平台是构建在Spring、OSGi和Apache Tomcat之上的应用服务器,这个新的应用服务器摒弃了原有的Java EE服务器标准,自然而然地将Spring编程模型展现其中,随之而来的还有一套基于OSGi内核构建的全新...

    最新virgo-tomcat-server

    用户可以通过解压这个文件,然后按照官方文档的指引在本地环境中安装和配置Virgo服务器,以便在Apache Tomcat上运行OSGi应用。 使用Virgo服务器,开发者可以享受到以下优势: 1. **模块化开发**:OSGi的模块系统...

    未来10年:OSGi、Spring_DM

    这部分内容重点介绍了如何利用Eclipse Platform Development Environment (PDE)来进行OSGi应用的开发,包括准备OSGi目标平台、开发OSGi应用、运行OSGi应用以及维护OSGi元数据等方面。 #### 面向B/S应用的OSGi实战 ...

    基于VirgoServer进行Spring Osgi Web开发

    4. **Virgo Tomcat Server**: 是一个基于OSGi的服务器,支持Spring DM(Dynamic Module),是Spring OSGi应用的理想运行平台。 **二、环境配置** 1. **Eclipse Maven配置**: 需要在Eclipse中设置Maven的安装路径和...

    WEB容器托管OSGi容器(轻量级集成方式)

    标题中的“WEB容器托管OSGi容器(轻量级集成方式)”是指在Web应用程序服务器(如Tomcat、Jetty等)中嵌入OSGi(Open Service Gateway Initiative)框架,实现服务组件的轻量化管理和部署。OSGi是一种动态模块化系统...

    OSGi原理与实践

    2. **Web应用**:OSGi可以用于构建可热部署的Web服务器,如Jetty或Tomcat,使得Web应用的组件化和维护更加方便。 **OSGi与常见框架集成** 1. **Spring框架**:Spring支持OSGi,可以使用OSGi Bundle作为Spring的...

    java ee Tomcat 安装 环境变量设置 测试 发布

    通过以上步骤,您已经成功地完成了Tomcat的安装、配置和测试工作,并学会了如何使用Eclipse发布Java项目到Tomcat服务器上。这对于Java Web开发人员来说是非常重要的技能之一,能够帮助开发者高效地进行项目开发和...

    OSGi入门笔记

    一个OSGi应用由多个bundle组成,每个bundle负责特定的功能。 2. **协作机制**:J2EE应用之间的协作主要通过接口和API实现,而OSGi允许bundle之间通过共享Java包、发布或引用服务进行交互。这意味着OSGi提供了更灵活...

Global site tag (gtag.js) - Google Analytics