香锅之equonix部署

本文详细介绍了如何使用Equinox进行应用部署,包括必要的jar文件选取及运行方式,并提供了config.ini配置示例,以实现自动启动指定的bundle,还特别解释了如何通过设置org.osgi.framework.bootdelegation解决classloader引发的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

眼见这个系列快完成了,我高兴坏了,最后一个话题是部署。

先说运行方式:

1、从eclipse的plugins目录中找到org.eclipse.osgi_3.5.0.v20090520.jar,或者去equonix网站下载一个;

2、java -jar org.eclipse.osgi_3.5.0.v20090520.jar -console

 

搞定。

运行后,会在当前目录生成configuration目录,里面有log。并且会记录各个bundle的状态,以后再启动的时候会恢复状态。所以,如果你在调试,每次要把这个目录清空;

 

另外,如果有一些bundle初始就需要启动,可以将它们加在config.ini中,这样就不用每次都手工install, start了,我的config.ini如下:

 

osgi.noShutdown=true
osgi.bundles=reference\:file\:ee/log4j.osgi-1.2.15-SNAPSHOT.jar@start,reference\:file\:ee/com.springsource.slf4j.org.apache.commons.logging-1.5.6.jar@start,reference\:file\:ee/com.springsource.slf4j.log4j-1.5.6.jar@start,reference\:file\:ee/com.springsource.slf4j.api-1.5.6.jar@start,reference\:file\:ee/com.springsource.org.aopalliance-1.0.0.jar@start,reference\:file\:ee/spring-aop-2.5.6.jar@start,reference\:file\:ee/spring-beans-2.5.6.jar@start,reference\:file\:ee/spring-context-2.5.6.jar@start,reference\:file\:ee/spring-core-2.5.6.jar@start,reference\:file\:ee/spring-osgi-core-1.2.0-rc1.jar@start,reference\:file\:ee/spring-osgi-extender-1.2.0-rc1.jar@start,reference\:file\:ee/spring-osgi-io-1.2.0-rc1.jar@start,reference\:file\:interface.jar@start,reference\:file\:main.jar@start


osgi.bundles.defaultStartLevel=4
log4j.configuration=file\:r:/log4j.properties
org.osgi.framework.bootdelegation=org.xml.*,org.w3c.*,javax.*

 

需要解释的只有:org.osgi.framework.bootdelegation。

“在这里设定的包会从system loader里面获得。”

上面这句话还是太抽象,我用一个错误说明吧,当我用ibatis的时候,创建的bundle在IDE环境中运行正常,一旦在真实环境中运行,竟然出现classnotfound, org.xml.sax什么的,而这些早就包含在jre的rt.jar中了。难不成要将40多兆的rt.jar加载?

我一开始也这么想,查了一些资料以后,发现引起这个问题是因为,不同的classloader,rt.jar在system classloader里面呢,是找不到。

 

再看那句话“在这里设定的包会从system loader里面获得。”,就好理解了,这告诉equinox:你要是找这些class啊,就请去system classloader吧

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值