问题标签 [osgi]
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.
tomcat - OSGi 插件不会在 tomcat 中启动
我有一个带有激活器的 OSGi 插件,我要求在我的 tomcat jsf 项目下启动它。
基于: http: //www.eclipse.org/equinox/documents/quickstart.php和其他一些文档,我已将此结构放在我的 WEB-INF 目录下以启动 osgi 的Equinox 实现。我已经能够直接访问插件,但不能通过从另一个插件引用它以编程方式访问它。这就是那个例子。
MyProject 配置/config.ini org.eclipse.osgi_3.3.0.jar org.eclipse.equinox.common_3.3.0.jar org.eclipse.update.configurator_3.2.100.jar plugins/com.fnet.tts.service_1.0.0.jar
我在 config.ini 中放置了以下两行
osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@start, org.eclipse.equinox.registry@3:start, com.fnet.tts.service@4:start osgi .bundles.defaultStartLevel=4
但是,当我尝试激活调用 tts.service 的包时出现此错误。
详细信息:com.fnet.runtime.KSException:无法在 com.runtime.impl.RuntimeServiceImpl$KSImpl .loadKnowledgebase(RuntimeServiceImpl.java:190) 处启动捆绑“com.fnet.tts.service.viewSchedule_2.0.0.jar” ..loadKnowledgebaseHandle(InterviewContext.java:83) 原因:org.osgi.framework.BundleException:无法解析捆绑包。原因:缺少约束:Require-Bundle: com.fnet.tts.service;bundle-version="1.0.0" at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(Bundl eHost.java:305) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(摘要 tBundle.java:265) 在 org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstract tBundle.java:257) 在 com.fnet.runtime.impl.RuntimeServiceImpl$KSImpl .loadKnowledgebase(RuntimeServiceImpl.java:
我已经看了好几个小时了,我正在寻找线索、提示或答案,以便我可以继续前进。
谢谢。
java - 将带有 Equinox Servle Bridge 的 OSGi 应用程序部署到 Tomcat 时如何配置 Log4J?
使用Equinox servlet 桥部署我的 OSGi Web 应用程序时,我得到以下信息:
我尝试了几种提供必要的“log4j.properties”文件的方法,包括:
- 将上下文参数“log4jConfigLocation”添加到 servlet 桥 web.xml
- 在 WEB-INF 文件夹中创建一个文件夹“classes”并将我的 log4j.properties 文件复制到那里(并将其复制到其他几个位置)
- 删除我的 log4j 包并将“extendedFrameworkExports”设置为 org.apache.log4j 所以(我猜)使用了 tomcat log4j ...这不起作用,因为我的依赖项需要一些作为 log4j 包的片段提供的 slf4j 类。 ..不再存在了...
当然,我还有一个片段包,它使用 log4j.properties 文件扩展了 log4j 包,但看起来这个 log4j 包没有被使用。
添加:我应该补充一点,我正在 Eclipse 中开发应用程序......并且配置 log4j / slf4j 的片段包在那里工作。
有没有人解决这个问题?有任何想法吗?
spring - Equinox 中的 Jasper - 无法解析 jstl 核心 uri
我目前正在研究带有 Spring 的 OSGi,并通过Pro Spring Dynamic Modules for OSGi中的几个示例进行工作。
我的示例网络应用程序有一个控制器,例如:
视图解析器配置为:
调用 url'http://localhost:8080/helloworld-web/spring/home'
应该会导致视图jsp/home.jsp
被渲染,并helloworld
包含一个 bean:
但是,我看到以下堆栈跟踪:
因为这是一个作为 OSGi 包部署的 WAR,所以它的WEB-INF/lib
目录是完全空的。
我的理解是,jasper 的 OSGi 版本会在单个 Web 应用程序之外寻找 taglib 描述符和 JAR?
有没有其他人看过这个?
java - 可以在沙盒中运行的 Mini-OSGi(如 AppEngine 或 WebStart)?
我真的很喜欢 OSGi 实现的模块化包的概念。
我还喜欢“托管部署”服务,例如 Google AppEngine(用于 Web 应用程序)或 Java WebStart(用于客户端软件)。
这两个想法似乎在概念上很好地相互补充。
然而,OSGi 标准包含一些特性,使得 Felix 或 Equinox 等实现无法在 AppEngine 或 Webstart 等沙盒虚拟机之上运行。在这些环境中,无法直接访问文件系统,例如,这排除了用于存储持久包状态和本机库的 OSGi 包缓存。
现在,我对使用本机库或拥有持久包状态没有太大兴趣。是否有一些框架实现了 OSGi 的核心包和服务概念(理想情况下以兼容的方式,以便 OSGi 包可以按原样部署到其中),但可以在没有包缓存的情况下工作(以及沙箱中不可用的其他工具) ?
我正在寻找适用于 AppEngine 或 WebStart 的有限版本的 Felix。
当然,如果 WebStart 引擎和 Google AppEngine 只是提供开箱即用的 OSGi 框架服务,那也很棒……
更新: AppEngine 的另一个非常有限的方面是您无法启动新线程。这可以防止(除其他外)异步捆绑生命周期管理。WebStart 显然不是问题。
java - 包装罐子的 OSGi 服务
我正在尝试创建一个包装另一个 jar 的 OSGi 服务。我将 jar 添加到项目、类路径和二进制构建中。我在 Activator 中注册了该服务,但是当消费包调用该服务时,我在包装 jar 上得到一个 java.lang.NoClassDefFoundError 。有谁知道我在这里做错了什么?
提前致谢。
java - 一个接口的多个实现者。OSGi 怎么样?
我对使用 OSGI 作为管理项目插件的一种方式很感兴趣。也就是说,我的接口可以有很多实现者,每个实现者都出现在自己/单独的 OSGI 包中,并带有导出的实现类......
osgi - 如何在不安装/激活的情况下发现 OSGi 包导出的类型?
基本上我想发现一个 jar 是否实现了任意数量的接口而不激活或启动包。是否可以像容器一样从 API 的 meta-inf 读取元数据,但无需激活捆绑包?
我想使用 OSGi 来支持将发布许多接口的插件,并且我想知道当用户上传而不激活捆绑包等时捆绑包实现了哪些接口。
java - Apache Felix:什么是扩展包?
Apache Felix 具有“扩展包”的概念。这似乎是一个有助于系统捆绑的捆绑。还为他们注册了一个特殊的 URL “felix://extensions/”。
我什么时候需要使用扩展而不是常规捆绑包?
是否有使用这种方法的捆绑包示例?
这是 Felix 独有的功能还是 OSGi 规范的一部分?
osgi - 动态插件管理/更新
我的意思是如果一个插件将[下载并]复制另一个插件到适当的文件夹或制作链接文件,它是否可以在不重新启动的情况下将其与平台动态集成?
因此,看起来可以构建一个永远在线的服务器,它会随着时间的推移而发展,而无需重新启动。这是必需的(不确定这个词,英语不是我的母语)功能吗?我的意思是企业需要它还是重新启动更容易也可以?我看到的另一个好处是旧版本的兼容性......