问题标签 [osgi-http-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
693 浏览

java - Servlet-API 包不提供 JavaServlet 功能 - felix.http.jetty 无法运行

我正在尝试让 org.apache.felix.http.jetty 捆绑包为我的 OSGi 环境提供 HTTP 服务。

我还部署了 servlet-api 包,它导出版本化包,但不提供 JavaServlet 功能(可能应该,基于参考合同上的OSGi 联盟页面)。

这是 servlet-api 包的清单的一部分

Provide-Capability根本没有指定标题。

所以,当我启动 OSGi 容器时,它会报错:

任何人都知道如何解决这个问题?

0 投票
1 回答
363 浏览

osgi - 规格:OSGi HTTP 白板和 ServletContextHelper

当多个包使用相同的 ServletContextHelper 时,我需要一些与 Http Whiteboard Specification 相关的 ServletContextHelper 行为的精确度

规范说:

Http Whiteboard 实现必须为每个 ServletContextHelper 服务创建一个单独的 ServletContext 实例。白板服务可以通过使用 osgi.http.whiteboard.context.select 属性与 Servlet 上下文助手相关联。如果未设置此属性,则使用默认的 Servlet 上下文助手。

如果我理解正确,所有使用相同 ServletContextHelper 引用的 Servlet 或过滤器都绑定到相同的“ServletContext”

然后 :

ServletContextHelper 的一些实现可以使用服务工厂来实现,例如从关联的包中提供资源,就像默认实现一样。因此,白板实现必须使用注册白板服务的包的包上下文来获取 Servlet 上下文帮助器。

所以如果一个bundle A用ServletContextHelper X注册了一个Servlet,而bundle B用同一个ServletContextHelper的引用注册了一个Filter,那么Servlet和Filter注册到同一个ServletContext,但是它们的init方法是用两个不同的实例来调用的ServletContext(为了以不同的方式实现 getClassLoader() 方法)?

此外,“默认” ServletContextHelper 的行为是什么?是否总是有一个“默认”的 ServletContextHelper 注册?它是在捆绑包之间共享还是捆绑包只有一个实例?

0 投票
0 回答
11 浏览

osgi - OSGi HTTP 白板静态欢迎文档

在 OSGi 标准模块(jar,而不是 wab)中,我公开了一些 Web 服务(使用 OSGi JAX-RS 白板)和使用的 index.html 静态文件@HttpWhiteboardResource(它本身与 OSGi HTTP 白板一起使用)。

除了一件愚蠢的事情之外,一切都运行良好:我无法从根目录提供我的 index.html 文件。(我想做 http://domain,而不是 http://domain/index.html)。

通常对此的解决方案是声明一个“欢迎页面”。唉, HTTP 白板的 OSGi 规范似乎不允许这样做。另一个(绝望的)解决方案是将 root 与 绑定@HttpWhiteboardResource.pattern,但它不起作用(似乎合乎逻辑,root 归白板所有)。

似乎pax web有一个非标准扩展的解决方法。但是,我使用的是Apache Felix http,并且在他们的代码或文档中找不到对欢迎页面的单一引用。而且我不想改变它,因为它需要在一个非常复杂的解决方案中进行大量测试。

那么有人知道用标准的 OSGi 东西还是 Felix 特定的东西来解决我的问题的方法吗?谢谢!