- 浏览: 1684347 次
- 性别:
-
文章分类
- 全部博客 (2929)
- 非技术 (18)
- Eclipse (11)
- JAVA (31)
- 正则表达式 (0)
- J2EE (4)
- DOS命令 (2)
- WEB前端 (52)
- JavaScript (69)
- 数据库 (8)
- 设计模式 (0)
- JFreechart (1)
- 操作系统 (1)
- 互联网 (10)
- EasyMock (1)
- jQuery (5)
- Struts2 (12)
- Spring (24)
- 浏览器 (16)
- OGNL (1)
- WebService (12)
- OSGi (14)
- 软件 (10)
- Tomcat (2)
- Ext (3)
- SiteMesh (2)
- 开源软件 (2)
- Hibernate (2)
- Quartz (6)
- iBatis (2)
最新评论
【51CTO精选译文】本文是《你好,OSGi 》系列的最 后一篇,讲述在Eclipse外部如何执行OSGi容器。在Eclipse IDE内部执行Equinox OSGi容器对于开发非常便利。不过,当你的应用程序准备好部署,如果你想要在Eclipse外部执行你的OSGi容器,可以按照下面的步骤从命令行运行 你的Equinox OSGi容器。
51CTO编辑推荐: OSGi入门与实践全攻略
从Equinox下载完整的eclipse-equinox-<buildno>.zip 二 进制文件框架。本文中的示例代码在版本3.3下进行测试。
解压缩下载的文件,保存到你的计算机上。本示例将使用目录 C:/software。
在你的计算机上建立一个目录,命名为 C:/equinox (或对于你的操作系统等同的目录)。
从 C:/software 将下面的JAR文件复制到 C:/equinox:
1. org.eclipse.osgi_<version>.jar
2. javax.servlet v2_4.jar
3. org.apache.commons.logging v1_0_4.jar
4. org.eclipse.equinox.http.jetty.jar
5. org.eclipse.equinox.http.registry.jar
6. org.eclipse.equinox.http.servlet.jar
7. org.mortbay.jetty v5_1_11.jar
8. org.eclipse.equinox.common_<version>.jar
9. org.eclipse.equinox.registry_<version>.jar
10. org.eclipse.osgi.services_<version>.jar
现在,打开命令控制台,将目录更改到 C:/equinox,然后执行下面的目录:
java -jar org.eclipse.osgi_<version>.jar -console
Equinox OSGi容器将启动,并且你将会看到OSGi>提示符。
安装、验证和执行插件
需要指出的是,虽然你已经将所有的插件 JAR 文件复制到了 C:/equinox 目录,但所有这些插件还没有安装到OSGi容器。你必须一个一个地进行安置。可以通过下面的命令语句在OSGi容器中安装插件:
1. install file:<pathtoplug-injar>
例如,如果你想要安装javax_servlet v2_4插件,那么你应该执行下面的这行命令:
1. install file:javax.servlet_2.4<version>.jar
现在,使用install命令安装所有必须的插件。
在你的全部插件都安装完毕后,你可以通过执行ss命令来它们进行验证。OSGi容器将显示一个包含三个列的表格列出所有的已安装插件:第一列显示插 件的ID,第二列显示插件的状态,第三列显示套件的名称。
请注意,所有套件都处于INSTALLED状态,除了INSTALLED套件,它处于ACTIVE状态。因此,你下一步需要做的是启动所有插件。可 以通过下面的命令启动插件:
1.start <pluginid>
在本例中,javax.servlet v2_4套件的ID是1,所以你可以这样来启动它:
- start1
所有插件都启动之后,你可以通过调用ss命令来对他们进行验证。在你的OSGi控制台上显示的内容应类似于图 2 所示。
最后,你可以通过在浏览器中输入 http://localhost/helloworld.html
来测试你的OSGi
Web应用程序是否正确配置。你应该可以看到消息“Hello from helloworld.html”。
将OSGi容器嵌入到servlet容器
在这个小节,我们将来看看OSGi Web应用程序的另一种部署方式,它将Equinox OSGi容器嵌入到一个Web应用程序中,然后在servlet容器(如Apache Tomcat)中部署该Web应用程序。Equinox框架提供bridge.war,一个模板,具有Equinox OSGi容器的Web应用程序将这个模板嵌入到容器中。
bridge.war应用程序包含org.eclipse.equinox.servletbridge.BridgeServlet。这个 servlet负责对你的OSGi容器进行初始化。每当接收到一个客户请求,它将查看是否存在一个OSGi插件可以处理该请求;如果存在,它将控制转发至 该插件。下面的步骤向你演示了如何使用bridge.war中的com.javaworld.sample.osgi.web.programmatic 和com.javaworld.sample.osgi.web.declarative插件。
如果你还没有安装Apache Tomcat,请下载Apache Tomcat 5.5并将其解压到操作系统文件夹 C:/software(或相应的同等文件夹)。
下载bridge.war , 然后将其安装到你的Apache Tomcat服务器。一旦安装完成,启动bridge.war Web应用程序。
通过在浏览器中访问http://localhost:8080/bridge/sp_test
来
测试Bridge Web应用程序。你应看到一条消息:“Servlet delegate registered -
org.eclipse.equinox.http.servlet.HttpServiceServlet”。
现在,返回到你的Eclipse IDE。在包资源浏览器试图中,右键单击并选择 Export > Deployable plug-ins and fragments,然后单击下一步按钮。在Deployable Plug-ins and fragments对话框中,输入如图 3所示的值。
单击“完成”,Eclipse 将com.javaworld.sample.osgi.web.declarative.jar 和
com.javaworld.sample.osgi.web.programmatic.jar导出到
C:/software/apache-tomcat-5.5.25/webapps/bridge/WEB-INF/eclipse/plugins
文件夹(或你所用操作系统的同等文件夹)。请注意,Bridge Web应用程序将
C:/software/apache-tomcat-5.5.25/webapps/bridge/WEB-INF/
文件夹中的内容复制到Tomcat 工作目录并从那里执行。当你网址:http://localhost:8080/bridge/sp_deploy
时,Bridge Web 应用程序将这些新的 JAR 文件复制到
C:/software/apache-tomcat-5.5.25/work/Catalina/localhost/bridge/eclipse
/plugins。
现在,重启你的Tomcat服务器。一旦Tomcat重启完成,你将可以看到Tomcat控制台中的 osgi> 提示符。
输入ss来显示所有已安装到bridge.war中的OSGi套件。确认 com.javaworld.sample.osgi.web.declarative和 com.javaworld.sample.osgi.web.programmatic已安装到 OSGi容器;如果没有安装,可通过执行 install file:<jarfilename> 命令进行安装。
在 OSGi命令提示符下,执行 start <bundleid> 命令,启动 com.javaworld.sample.osgi.web.declarative.jar 和 com.javaworld.sample.osgi.web.programmatic.jar 插件。
现在,你应该能够在浏览器中输入 http://localhost:8080/bridge/helloworld.html
来访问 helloworld.html 了。
探索该应用程序
这个Bridge应用程序提供了以下URL,利用它们,你可以从网络浏览器来控制你的OSGi容器。(对于该示例,这些地址应加在 http://localhost:8080/bridge/
后面;该URL可能会有所变化,要看你的Tomcat安装情况。)
1. sp_deploy:复制平台内容到工作或临时目录
2. sp_undeploy:工作目录删除 Eclipse 的副本
3. sp_redeploy:对平台进行重置(比如:终止、取消部署、部署以及启动)
4. sp_start:启动一个已部署平台
5. sp_stop:终止平台
6. sp_test:提供一个正常的检测,并且当基于 OSGi 的servlet 已准备好接收请求时终止
继续研究探索这个应用程序吧,别忘了给自己一个鼓励:你已经开发出了你的第一个OSGi Web应用程序!
总结
虽然OSGi的来源在于提供嵌入式和客户端解决方案,但很多人认为,它的强项将在于服务器端的开发。服务器端Equinox是一个开始,利用它,可 以更加简便地将OSGi的可插入、基于组件的开发模式应用到Web应用程序。(另一个是SpringSource应用程序平台, 但不在本文讲解的范围之内。)通过这篇文章中的示例,你已经向OSGi Web应用程序开发迈出了第一步。你已经在Eclipse中设置了OSGi Web应用程序开发环境;学习了注册OSGi套件的两种方式:程序方式和声明方式;以及,详细了解了如何使用这两种不同的方式对基于OSGi的Web应用 程序进行部署:将Jetty servlet容器插件嵌入到 Equinox,并将Equinox嵌入到Tomcat。
在这个系列文章中,你学习如何开始创建基于OSGi的应用程序,学习了OSGi开发模式以及创建了一个简单的包含两个套件的客户-服务器 (client-server)应用程序。你还学习了Spring动态模型如何简化了OSGi容器中Spring应用程序的开发,以及服务器端 Equinox如何提供了一个可访问的框架以在服务器环境中开发和部署OSGi应用程序。
所有这些实践练习为你打开了OSGi开发之门,希望这个系列的文章能够帮助你更好地理解OSGi和Java的模块化,以及将它应用到你的未来 Java开发项目中。
发表评论
-
OSGi是什么:Java语言的动态模块系统
2010-05-31 14:19 649之前51CTO曾发过一篇文章叫做《OSGi为什么重要:向模块化 ... -
OSGi Bundle之Hello World
2010-05-31 14:20 703本文是《你 好,OSGi 》系列的第二部分。之前曾介绍过O ... -
OSGi依赖性管理:Bundle访问域
2010-05-31 16:12 695本文是《你 好,OSGi 》系列的第三部分。之前介绍过OS ... -
OSGi服务:非常适合SOA的架构
2010-05-31 16:35 769本文是《你 好,OSGi 》系列的第四部分。下面讲述OSG ... -
OSGi和Spring入门:什么是Spring动态模型(Spring DM)?
2010-05-31 17:46 1042【51CTO精选译文】本文 ... -
OSGi与Spring:设置Spring DM开发环境
2010-06-01 09:46 639【51CTO精选译文】本文 ... -
使用Spring DM创建Hello World,以及OSGi服务
2010-06-01 13:24 777【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
使用OSGi构建面向服务的联络管理应用程序
2010-06-01 14:44 734【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
OSGi与Spring DM:使用Spring DataSource
2010-06-07 12:53 654【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
初探OSGi Web应用开发利器Equinox:环境设置
2010-06-07 12:55 823【51CTO精选译文】在之前的《你好,OSGi》系列 中, ... -
打造一个Hello World OSGi Web应用程序
2010-06-07 12:59 571【51CTO精选译文】在《你好,OSGi 》的之前一篇文章 ... -
打造一个基于OSGi的Web Application
2010-06-12 09:51 1206动机和目标 OSGi技术 ... -
OSGi中获取Service的几种方式
2010-06-12 10:01 758在OSGi中,Service是动态管理的,OSGi容器提供 ...
相关推荐
55links友情链接网址跟踪器,放在桌面,每次直接打开就可以访问55links友情链接交易平台,方便快捷。
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
moore_01_0909
FIBR English learning
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
OIF_IEEE802.3_liaison_19OCt09
做网络安全FTP内容的实验必备
nagarajan_01_1107
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
mellitz_3cd_01_0318
PyQt6实战派 配套代码
陕西省省级非物质文化遗产经纬度数据统计表 统计内容包含以下字段: 1. 项目名称 2. 遗产类别 3. 入选批次 4. 所属地区 5. 申报地区/单位 6. 地理经度 7. 地理纬度 该统计表系统记录了陕西省省级非物质文化遗产的地理空间信息,为文化遗产的数字化保护与研究工作提供了重要的数据支撑。
ran_3ck_02a_0918
毕业设计_基于springboot+vue开发的汽车租赁管理系统【源码+sql+可运行】【50308】.zip 全部代码均可运行,亲测可用,尽我所能,为你服务; 1.代码压缩包内容 代码:springboo后端代码+vue前端页面代码; 脚本:数据库SQL脚本 效果图:运行结果请看资源详情效果图 2.环境准备: - JDK1.8+ - maven3.6+ - nodejs14+ - mysql5.6+ - redis 3.技术栈 - 后台:springboot+mybatisPlus+Shiro - 前台:vue+iview+Vuex+Axios - 开发工具: idea、navicate 4.功能列表 - 系统设置:用户管理、角色管理、资源管理、系统日志 - 业务管理:汽车管理、客户管理、租赁订单 3.运行步骤: 步骤一:修改数据库连接信息(ip、port修改) 步骤二:找到启动类xxxApplication启动 4.若不会,可私信博主!!!
# Runcorder - 跑步训练管理系统 Runcorder 是一款专为跑步爱好者、马拉松运动员及高校体育生设计的本地化跑步训练管理工具,基于 Python 开发,结合 Tkinter 图形界面与强大的数据处理能力,为用户提供从训练记录到数据分析的全方位支持。无论是初学者还是专业跑者,Runcorder 都能帮助你科学规划训练、精准追踪进度,并通过可视化图表直观呈现训练成果,让你的跑步训练更智能、更高效! - **多用户管理**:支持创建、加载和删除用户档案,每个用户的数据独立存储,确保隐私与安全。 - **科学训练记录**:全维度记录跑步数据,包括日期、里程、配速、自评和晨跑标记,支持智能输入校验,避免数据错误。 - **多维数据分析**:通过动态可视化图表展示跑步里程趋势、平均配速曲线,支持自定义 Y 轴范围,帮助用户深入理解训练效果。 - **高阶功能**:提供 4 种科学训练模式(有氧/无氧/混合),支持历史记录修改与删除,数据以 JSON 格式持久化存储,跨平台兼容。
paatzsch_01_0708
AnythingLLM是一个全栈应用程序,您可以使用流行的开源大语言模型,再结合向量数据库解决方案构建个人本地AI大模型知识库
mellitz_3ck_02_0519
petrilla_01_0708
ran_3ck_01_0918