首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地铁+码头+ OSGi =痛苦

地铁+码头+ OSGi =痛苦
EN

Stack Overflow用户
提问于 2009-12-10 03:10:49
回答 3查看 1.5K关注 0票数 0

我正在尝试用运行在Equinox上的OSGi包中的更好的Jetty服务器替换Sun服务器。

我已经尝试过了:

代码语言:javascript
复制
System.setProperty("com.sun.net.httpserver.HttpServerProvider","org.mortbay.jetty.j2se6.JettyHttpServerProvider");

但是,当调用endpoint.publish(url)并派生服务器时,它会报告org.mortbay.jetty.j2se6.JettyHttpServerProvider.的ClassNotFoundException

但是,包中有正确的jars,实际上在Activator中我可以实例化一个org.mortbay.jetty.j2se6.JettyHttpServerProvider.

我认为这是某种类路径问题--衍生的服务器可能在不同的类路径中?我尝试在JDK级别添加JAR,但这没有任何区别。

有没有人能说明一下,到底怎么才能让它工作起来呢?

附言:也许丑陋的System.setProperty调用有一天会从世界上消失。希望:)

EN

回答 3

Stack Overflow用户

发布于 2009-12-10 17:25:18

Equinox有一个Jetty6.x支持的OSGi标准HttpService的实现。这只是一个包含正确的包的问题,并且您可以相当容易地在Equinox中运行Jetty。但是,我发现a) Jetty对您来说是完全隐藏的,您所看到的只有HttpService接口,以及b) HttpService接口相当简单。您只能添加servlets+mappings和一些静态资源

票数 0
EN

Stack Overflow用户

发布于 2009-12-11 00:17:59

我似乎不能回复omerkudat,所以我不得不把回复放在这里…

如果包含osgi jar,Metro似乎不会使用Jetty。你似乎需要这个:

http://docs.codehaus.org/display/JETTY/J2se6HttpServerSPI

我手动编译了它,并如上所述设置了系统属性,但没有成功。

票数 0
EN

Stack Overflow用户

发布于 2009-12-11 06:19:53

问题是工厂不支持OSGi,并且加载工厂的类没有对Jetty实现的引用。问题不在于它是否在捆绑包中(您似乎已经将其组合在一个捆绑包中),而在于工厂方法是否在一些核心代码中,而这无法解析Jetty。

实例化HttpServer的调用不是Sun的一部分,而是Sun的内部类之一-因此,当在非Sun上运行时,此调用将失败。最好找出如何使用Metro来做一些事情,而不是使用这个工厂方法,以便将类组合在一起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1876126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档