osgi中的Restlet bundle (bndtools)启动失败.激活器错误com/sun/net/httpser



我正在迁移到bndtools一些我创建并在标准Eclipse环境中工作的osgi插件。我添加了Felix Web ConsoleJetty HTTP Service,并将一些Equinox包替换为Felix等价包。

当我运行一个需要org.restlet.jar的特定包时,该包解析但不会激活。控制台输出为:

____________________________ 欢迎来到Apache Felix火星

g !2015-05-25 00:06:33.471:信息:oejs.Server: jetty - 7. - x.y -快照2015-05-25 00:06:33.545:信息:oejsh.ContextHandler:开始o.e.j.s.ServletContextHandler{零}/,2015-05-2500:06:33.620:信息:oejs.AbstractConnector:开始SelectChannelConnector@0.0.0.0:8080。启动bundle失败org.restlet-2.3.2。V20150501-1520,异常激活错误com/sun/net/httpserver/HttpHandler:org.restlet.engine.Engine: registerDefaultConnectors # 839

我尝试了基于其他问题的解决方案,即这个建议设置运行属性org.osgi.framework.system.packages.extra = com.sun.net.httpserver(大概在我的bndtools .bnd文件中),另一个建议使用框架侦听器激活Restlet应用程序,但这些对我不起作用,控制台输出是相同的。

我仍在学习中,我将非常感谢任何帮助我找到解决方案,或者bndtoolsEclipse可能提供的任何方法或功能提示,以帮助我追踪到它的原因。

顺便说一下,Felix Web Console正在工作,作为这个插件的必需包。

这是我的bndtools配置:

Bundle-Version: 0.0.0.${tstamp}
Service-Component:  
    *
-runfw: org.apache.felix.framework;version='[4,5)'
-runee: JavaSE-1.7
-runsystemcapabilities: ${native_capability}
-resolve.effective: active;skip:="osgi.service"

-buildpath:  
    osgi.core,
    osgi.cmpn,
    biz.aQute.bnd.annotation,
    org.apache.felix.log,
    com.fiscio.api;version=latest,
    osgi.enterprise,
    org.restlet,
    org.restlet.ext.json,
    org.json
-runbundles:  
    com.fiscio.api;version=latest,
    org.apache.felix.configadmin;version='[1.8.0,1.8.1)',
    org.apache.felix.gogo.command;version='[0.14.0,0.14.1)',
    org.apache.felix.gogo.runtime;version='[0.16.2,0.16.3)',
    org.apache.felix.gogo.shell;version='[0.10.0,0.10.1)',
    org.apache.felix.http.jetty;version='[2.2.2,2.2.3)',
    org.apache.felix.log;version='[1.0.1,1.0.2)',
    org.apache.felix.metatype;version='[1.0.10,1.0.11)',
    org.apache.felix.scr;version='[1.8.2,1.8.3)',
    org.apache.felix.webconsole;version='[4.2.2,4.2.3)',
    org.json;version='[1.0.0,1.0.1)',
    org.restlet;version='[2.3.2,2.3.3)',
    org.restlet.ext.json;version='[2.3.2,2.3.3)',
    osgi.cmpn;version='[5.0.0,5.0.1)',
    osgi.enterprise;version='[4.2.0,4.2.1)'
-runrequires:  
    osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)',
    osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)',
    osgi.identity;filter:='(osgi.identity=org.apache.felix.webconsole)',
    osgi.identity;filter:='(osgi.identity=org.apache.felix.configadmin)',
    osgi.identity;filter:='(osgi.identity=org.apache.felix.metatype)',
    osgi.identity;filter:='(osgi.identity=org.apache.felix.log)',
    osgi.identity;filter:='(&(osgi.identity=osgi.cmpn)(version>=4.2))',
    osgi.identity;filter:='(&(osgi.identity=org.apache.felix.scr)(version>=1.6.0))',
    osgi.identity;filter:='(osgi.identity=org.apache.felix.http.jetty)',
    osgi.identity;filter:='(osgi.identity=com.fiscio.api)',
    osgi.identity;filter:='(osgi.identity=org.json)',
    osgi.identity;filter:='(osgi.identity=org.restlet.ext.json)',
    osgi.identity;filter:='(osgi.identity=org.restlet)'
## Uncomment if you need to change the HTTP port
-runproperties: org.osgi.framework.system.packages.extra = com.sun.net.httpserver
Private-Package:  
    com.fiscio.rest,
    com.fiscio.rest.resources

事实证明,在stackoverflow.com上给出的其他答案都是正确的,除了那个设置-runproperties: org.osgi.framework.system.packages.extra = com.sun.net.httpserverbndtools启动配置中没有达到期望的结果。bndtools FAQ建议如下,这解决了我的问题:

注意,使用-runsystempackages指令相当于设置OSGi属性但是,最好使用-runsystempackages,因为这样可以运行Bndtools中的需求解析器将考虑解析过程中这些包的可用性。

相关内容

  • 没有找到相关文章

最新更新