在 Apache Felix OSGI 中安装和运行 Web 管理控制台
Posted
技术标签:
【中文标题】在 Apache Felix OSGI 中安装和运行 Web 管理控制台【英文标题】:Installing and running Web Management Console in Apache Felix OSGI 【发布时间】:2013-10-31 13:04:40 【问题描述】:我正在尝试在 Apache Felix 4.2.1 中安装和运行 Apache Felix Web 管理控制台 (4.2.0),但它不起作用。
我已经安装了 Felix Http Jetty 2.2.1 bundle、Felic Configuration Admin Service 1.8.0 bundle、Log Service 1.0.1 bundle、EventAdmin 1.3.2 bundle 和 Felix Web Management Console 4.2.0
当我尝试启动 Web 管理控制台时,它显示:
org.osgi.framework.BundleException:无法解析捆绑包“org.apache.felix.webconsole_4.2.0 [29]”。原因:缺少约束:Import-Package: org.apache.commons.fileupload;版本="[1.2.0,2.0.0)"
我使用的是 Java 1.6.0.26,Ubuntu 12.10!
jonathan@JONATHAN:/datos/jonathan/Programas/apache-felix-framework-4.2.1$ java -jar bin/felix.jar
2013-10-22 16:38:37.389:INFO:oejs.Server:jetty-7.x.y-SNAPSHOT
2013-10-22 16:38:37.412:INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler/,null
____________________________
Welcome to Apache Felix Gogo
g! 2013-10-22 16:38:37.434:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8888
lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|OSGi System Bundle (3.7.2.v20120110-1415)
1|Active | 1|Apache Felix Bundle Repository (1.6.6)
2|Active | 1|Apache Felix Gogo Command (0.12.0)
3|Active | 1|Apache Felix Gogo Runtime (0.10.0)
4|Active | 1|Apache Felix Gogo Shell (0.10.0)
23|Active | 1|Apache Felix Configuration Admin Service (1.8.0)
24|Active | 1|Apache Felix Log Service (1.0.1)
26|Active | 1|Apache Felix Http Jetty (2.2.1)
27|Active | 1|Apache Felix EventAdmin (1.3.2)
29|Installed | 1|Apache Felix Web Management Console (4.2.0)
g! start 29
org.osgi.framework.BundleException: The bundle "org.apache.felix.webconsole_4.2.0 [29]" >could not be resolved. Reason: Missing Constraint: Import-Package: org.apache.commons.fileupload; version="[1.2.0,2.0.0)"
g!
问候
【问题讨论】:
顺便说一句,我没有使用 Eclipse。 【参考方案1】:我有类似的问题,我通过清理 Felix 安装解决了它们,然后我从头开始启动 Felix,这意味着我在 Apache Felix Gogo 上有类似的东西:
____________________________
Welcome to Apache Felix Gogo
g! lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (4.6.0)
1|Active | 1|Apache Felix Bundle Repository (2.0.2)
2|Active | 1|Apache Felix Gogo Command (0.14.0)
3|Active | 1|Apache Felix Gogo Runtime (0.12.1)
4|Active | 1|Apache Felix Gogo Shell (0.10.0)
g!
所以,在控制台上,只需添加以下命令
list -v
它将为您提供可用软件包的列表,因此,只需查找 Webconsole 软件包名称并运行它(始终在 Gogo 控制台上):
g! deploy org.apache.felix.webconsole
这将下载所需的库,并在控制台上打印以下内容:
Target resource(s):
-------------------
Apache Felix Web Management Console (3.1.2)
Required resource(s):
---------------------
Apache Felix Configuration Admin Service (1.2.4)
Apache Felix Http Bundle (2.0.4)
Apache Felix Log Service (1.0.0)
Apache Felix HTTP Service Jetty (1.0.0)
Optional resource(s):
---------------------
OSGi R4 Compendium Bundle (4.0.0)
Apache Felix Declarative Services (1.6.0)
Apache Felix iPOJO (1.8.0)
Apache Felix iPOJO WebConsole Plugins (1.6.0)
Apache Felix Shell Service (1.4.2)
Deploying...
done.
g!
所以,现在,如果你运行 lb(list bundles 命令)
g! lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (4.6.0)
1|Active | 1|Apache Felix Bundle Repository (2.0.2)
2|Active | 1|Apache Felix Gogo Command (0.14.0)
3|Active | 1|Apache Felix Gogo Runtime (0.12.1)
4|Active | 1|Apache Felix Gogo Shell (0.10.0)
5|Installed | 1|Apache Felix Configuration Admin Service (1.2.4)
6|Installed | 1|Apache Felix Http Bundle (2.0.4)
7|Installed | 1|Apache Felix Log Service (1.0.0)
8|Installed | 1|OSGi R4 Compendium Bundle (4.0.0)
9|Installed | 1|Apache Felix Declarative Services (1.6.0)
10|Installed | 1|HTTP Service (1.0.0)
11|Installed | 1|Apache Felix iPOJO (1.8.0)
12|Installed | 1|Apache Felix Web Management Console (3.1.2)
13|Installed | 1|Apache Felix iPOJO WebConsole Plugins (1.6.0)
14|Installed | 1|Apache Felix Shell Service (1.4.2)
g!
所以,现在,只需查找捆绑包“HTTP Service”和“Apache Felix Web Management Console”并启动它们:
g! start 10
g! start 12
最后,只需走路径(默认端口为 8080):
http://localhost:28372/system/console/bundles
顺便说一句,您可以通过添加以下参数来更改 config.properties(在 Felix 中)上的端口:
org.osgi.service.http.port=28372
希望这对其他人有帮助...
【讨论】:
@JohnSaunders:您的一项编辑已在此处回滚。我不确定我是否可以标记,因为 this 与另一个用户有关 - 也许您可能会考虑处理/标记它?谢谢。 不管@John,Marco 已经在另一篇文章中对此事让步了。【参考方案2】:我终于明白了。
在一个空白的 Felix 安装中:
g! bundlelevel -i 1
g! mvnrepo = http://repo2.maven.org/maven2
g! start $mvnrepo/commons-io/commons-io/1.4/commons-io-1.4.jar
g! start $mvnrepo/commons-fileupload/commons-fileupload/1.2.1/commons-fileupload-1.2.1.jar
g! start http://maven.ow2.org/maven2/org/json/org.ow2.chameleon.commons.json/20090911-0002/org.ow2.chameleon.commons.json-20090911-0002.jar
g! bundlelevel -i 5
g! start $mvnrepo/org/apache/felix/org.apache.felix.webconsole/4.2.0/org.apache.felix.webconsole-4.2.0.jar
【讨论】:
以上是关于在 Apache Felix OSGI 中安装和运行 Web 管理控制台的主要内容,如果未能解决你的问题,请参考以下文章
OSGi 容器 - Equinox 与 Apache Karaf 中的 Apache Felix
OSGi 捆绑包未启动:缺少要求 osgi.wiring.package; > &(osgi.wiring.package=org.apache.felix.dm)
OSGi:Apache Felix 和 Apache Karaf 有啥区别?
org.osgi.framework.storage.clean=onFirstInit 在 Apache Felix OSGi 实现的上下文中是啥意思?