首页 > 代码库 > osgi实战学习之路:5.生命周期及利用命令、装饰者模式实现基于socket交互Bundle命令demo
osgi实战学习之路:5.生命周期及利用命令、装饰者模式实现基于socket交互Bundle命令demo
生命周期中关键3个类:
BundleActivator
入口点,类似main方法
BundleContext
Bundle上下文对象,在运行期间,为应用程序提供操作osgi框架的方法
Bundle
代表一个已安装的Bundle
接口说明:
BundleActivator:
public interface BundleActivator { public void start(BundleContext context) throws Exception; public void stop(BundleContext context) throws Exception; }
BundleContext:public interface BundleContext { ... String getProperty(String key); Bundle getBundle(); Bundle installBundle(String location, InputStream input) throws BundleException; Bundle installBundle(String location) throws BundleException; Bundle getBundle(long id); Bundle[] getBundles(); void addBundleListener(BundleListener listener); void removeBundleListener(BundleListener listener); void addFrameworkListener(FrameworkListener listener); void removeFrameworkListener(FrameworkListener listener); ... }
Bundle:... BundleContext getBundleContext(); long getBundleId(); Dictionary getHeaders(); Dictionary getHeaders(String locale); String getLocation(); int getState(); String getSymbolicName(); Version getVersion(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update(InputStream input) throws BundleException; void update() throws BundleException; void uninstall() throws BundleException;
Bundle状态图:
源代码下载
demo:
准备:
部署Bundle在karaf_home下新建config、logs文件夹
将my-shell下的server.properties复制到karaf_home/config下
加入log4j日志配置,参考
bundle:install -s mvn:com.demo.shell/my-shell/1.0.0-SNAPSHOT打开window命令行输入:
telnet localhost 7080
输入help,可以查看所有命令帮助
输入install命令,部署外部Bundle:
install http://localhost:9090/testweb/bundle/user-model-0.0.1-SNAPSHOT.jar在karaf中输入list,可以查看已经部署的bundle id
在window命令行输入命令,启动bundle
在karaf中输入list,查看已部署的Bundle处于Active状态start bundle_id
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。