转载自:http://blog.sina.com.cn/s/blog_438308750100e4bv.html
一、准备工作
准备工作分为两个部分:准备一个OSGi Application 和 准备Tomcat-OSGi运行环境
1. 准备一个OSGi Application
Tomcat-OSGi已经准备了一个应用程序:jpetstore-osgi-demo,它是将spring sample - jpetstore加以修改而成的OSGi应用程序。
jpetstore-osgi-demo的最新版本是基于spring-framework-2.5.6和spring-osgi-1.2.0的,点击这里下载Projects
2. 准备Tomcat-OSGi运行环境
1.> 下载Tomcat的最新版本 apache-tomcat-6.0.18
2.> Tomcat-OSGi:Tomcat-OSGi-all-in-one.rar
解压缩Tomcat-OSGi-all-in-one.rar
将2个jar包拷贝至Tomcat-home/lib 目录下
将2个xml文件拷贝至tomcat-home/conf目录下
将war包拷贝至Tomcat-home/webapps 目录下
server.xml只是在host节点添加2个属性,如下:
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false" className="org.extwind.tomcat.catalina.core.ExtenseStandardHost" hostConfigClass="org.extwind.tomcat.catalina.startup.ExtenseHostConfig">
tomcat-users.xml 定义了控制台权限,如下
<tomcat-users>
<role rolename="manager"/>
<role rolename="tomcat"/>
<role rolename="admin"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>
二、将OSGi 应用程序导出为bundle
将下载的projects.rar解压缩,并在eclipse中作为plug-in导入它们,org.extwind.osgi.demo.jpetstoreosgi.launcher需要作为一个普通project导入,这些projects包含了源代码,方便你进行调试。
Tomcat-OSGi已经准备好了这些bundle,点击这里下载bundles
通过eclipse的导出功能,将他们导出为bundle jar包,需要注意的是,org.apache.jasper, jetty,javax.servlet.*和org.eclipse.osgi是不需要导出的。(在org.extwind.osgi.demo.jpetstoreosgi.launcher中有一个导出脚本Exporter.xml,可以运行它进行导出)
三、在Tomcat-OSGi中部署bundle
在tomcat-home/webapps中新建一个目录JPetStoreOSGi,在JPetStoreOSGi目录中新建一个空文件osgi.ini,并将导出的bundles拷贝到该目录下。
执行spring-framework-2.5.6/samples/jpetstore/db/hsqldb/server.bat 启动数据库
现在,准备工作已经完成了,在浏览器中输入 http://localhost:8080/console 进入OSGi控制台,你会发现所有bundle都已经安装好了,将所有的bundle都启动了,(建议先启动org.springframework.osgi.web.extender)。
现在是时候来看看JPetStoreOSGi部署到Tomcat-OSGi中后的效果了,在浏览器中访问下面这个地址
http://localhost:8080/JPetStoreOSGi/shop/index.do
目前osgi.ini中支持properties属性 osgi.console,启动osgi控制台。
在Tomcat-OSGi alpha2版本中,支持Equinox-JspServlet的注册,并兼容其URI pattern,也就是说,在eclipse的开发环境中开发出来的应用程序可以直接部署到Tomcat-OSGi中,而无需任何代码级别的修改。
有一点点区别就是,在Tomcat-OSGi中已经export了javax.servlet(2.4),javax.servlet.jsp(2.1)和org.apache.jasper,因此在Tomcat-OSGi中这些bundle是不需要加入的。
勿在app中使用org.apache.jasper,会导致其他应用程序的jsp出现错误。
相关推荐
3. **配置与部署**:在Tomcat中使用OSGi,需要配置Tomcat服务器,设置相应的OSGi容器,然后部署OSGi bundles。这些bundle可以包含Servlets、Filters、Listeners等Web组件。 4. **优点**:Tomcat-Osgi带来的好处包括...
在提供的压缩包文件名称“Tomcat-OSGi-QuickStart”中,"QuickStart"通常表示这是一个快速入门或示例项目,帮助用户快速理解和实践如何在Tomcat中配置和使用OSGi。这个压缩包可能包含了预配置的Tomcat服务器,示例...
文件“tomcat_osgi.doc”可能包含详细的步骤指南,涵盖了配置Tomcat以支持OSGi、安装必要的库、配置OSGi框架(如Equinox或Felix)、以及如何打包和部署OSGi bundle到Tomcat等内容。文档可能还会讲解如何解决常见的...
标题中的“tomcat嵌入OSGI容器”是指在Apache Tomcat服务器中集成OSGI(Open Service Gateway Initiative)框架,使得Tomcat能够支持模块化的应用程序部署和管理。OSGI是一种Java平台上的服务导向架构,它允许动态地...
【最新virgo-tomcat-server】是一个专为Apache Tomcat设计的服务器扩展,它提供了更为丰富和高级的服务管理功能,增强了Tomcat在企业级应用部署中的能力。Virgo服务器是SpringSource公司(现已被VMware收购)开发的...
标题"tomcat 集成 osgi服务,示例源码"表明这个主题是关于如何在Apache Tomcat服务器中整合OSGi(Open Services Gateway Initiative)服务的实践教程。OSGi是一种模块化系统,它允许Java应用程序以组件的形式进行构建...
在Web容器中部署OSGi应用,特别是像Tomcat这样的流行Servlet容器,可以提高应用的灵活性、可维护性和可扩展性。本文将详细介绍如何使用桥接技术(如Apache Felix的WebConsole或Pax Web)在Tomcat中部署OSGi程序。 ...
在Web容器中部署OSGi,特别是像Tomcat这样的应用服务器,可以实现更灵活的应用部署和管理。 首先,我们需要理解如何在Tomcat中集成OSGi。Tomcat本身并不直接支持OSGi,但可以通过一些开源项目如Pax Web或Apache ...
2. spring-osgi-extender:实现了Spring DM的功能,使Spring应用能在OSGi环境中运行。 3. spring-osgi-io:提供I/O服务,如网络、文件系统访问等,适应OSGi的隔离环境。 4. 依赖库:包括了对Apache Felix或Equinox等...
2. **安装战争**:在Java Web开发中,“战争”(WAR)文件通常指的是Web应用程序归档文件,它包含了一个完整的Web应用,可以部署到如Tomcat、Jetty这样的Servlet容器中。在OSGi环境中,War文件可以通过Karaf的命令行...
- **OSGi在Web服务中的角色**:通过将Web服务打包成OSGi包,可以在单一JVM中同时部署和服务多个版本的Web服务,解决了服务提供商同时支持多版本的需求。 #### 二、技术栈介绍 - **Eclipse Equinox**:Equinox是...
3. `strut2-osgi-admin-bundle`:这可能是Struts2的OSGi管理工具包,用于在OSGi环境中监控和管理Struts2的应用,可能包括配置管理、日志查看等功能。 在`webapp`这个bundle中,我们可能会找到以下组件: - `struts...
6. **开发和部署**: 使用这些jar文件,开发者可以按照博客"OSGi环境下建立Web工程的Hello World"中的步骤,创建并部署OSGI兼容的Web应用。这通常涉及编写bundle的MANIFEST.MF文件来声明导出和导入的包,以及如何配置...
在压缩包“OSGI-Web”中,我们可以期待找到与Web相关的OSGi实现,这可能包括如何在OSGi环境中开发和部署Web应用。这可能涵盖使用Jetty或Tomcat等Servlet容器作为OSGi服务器的配置,以及如何创建和注册Servlet或...
这是通过像Equinox的Servlet Bridge这样的技术实现的,它充当了一个桥梁,让OSGi Bundle可以在传统的Web容器中运行。但是,这种方法并不理想,因为它通常较为复杂,而且Web项目本身并没有模块化为OSGi Bundle,因此...
3. **Struts2 OSGI插件**:使用Struts2的OSGI插件,如`struts2-osgi-plugin`,它允许Struts2框架与OSGI环境通信,发现并加载bundle中的Action和结果配置。 4. **配置Struts2**:在OSGI bundle中,你需要提供一个或...
在传统的Java Web应用中,Servlet是处理HTTP请求的核心组件,它们通常在Web容器(如Tomcat)中运行。而在OSGi环境中,每个Servlet被封装为一个独立的模块(Bundle),这些模块可以动态地安装、启动、更新和卸载,而...
实现类`ShowMsgInfo`的发布通过在工程目录下的`OSGI-INF/components.xml`文件中进行配置,这一步骤是将其实现类注册为OSGi服务的关键。 创建WEB应用bundle时,需注意创建必要的目录结构如`WEB-INF/lib`和`WEB-INF/...