- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不幸的是,称为 Karaf 的 OSGi 容器实现的文档很差。概念被擦掉,术语之间的关系没有建立。
我在阅读了 Karaf 开发人员撰写的文本后得出的结论(我猜?):
features.xml
中让开发人员知道从哪里获取依赖项/先决条件/要求,但不会自动添加到 Karaf。 maven-resources-plugin
的
copy-resources
目标使得
${var}
的插值s 发生。
<?xml version="1.0" encoding="UTF-8"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.0.0 http://karaf.apache.org/xmlns/features/v1.0.0"
name="special-server-features">
<!-- Special Server -->
<feature name="special-server" version="1.0.0" install="auto" resolver="(obr)">
<details>
A feature is just a group of bundles that should all be installed together.
When an OSGi container adds a bundle, it goes through a resolution process
to make sure that the bundle’s dependencies are met (and that it does not
conflict with other installed bundles). However, that resolution process
does not include any ability to obtain any dependencies; it just checks to
see if they are available and delays or prevents the bundle from starting
if a required dependency is missing.
Requirements can tell the feature resolver to
automatically install the bundles to satisfy the requirements.
Dependencies vs. prerequisites:
</details>
<!-- Required feature repositories (containing all bundles) -->
<repository>mvn:org.apache.camel.karaf/apache-camel/${camel.version}/xml/features</repository>
<repository>mvn:org.apache.cxf.karaf/apache-cxf/${camel.version}/xml/features</repository>
<bundle version="${camel.version}" prerequisite="true">camel-core</bundle>
<bundle version="${camel.version}" prerequisite="true">cxf</bundle>
<bundle version="${camel.version}" prerequisite="true">camel-blueprint</bundle>
<bundle version="${camel.version}" prerequisite="true">camel-jackson</bundle>
<bundle version="${camel.version}" prerequisite="true">camel-cxf</bundle>
<bundle version="${camel.version}" prerequisite="true">camel-http</bundle>
<bundle version="${camel.version}" prerequisite="true">camel-jaxb</bundle>
<bundle version="${camel.version}" prerequisite="true">camel-jsch</bundle>
<bundle version="${camel.version}" prerequisite="true">camel-log</bundle>
<bundle version="${camel.version}" prerequisite="true">camel-stream</bundle>
</feature>
</features>
最佳答案
Apache Karaf 文档基本上扩展了 OSGi 规范的术语,这意味着假设您对 OSGi 有一定的了解。
说到这里,您提到的不同术语在 OSGi 或 Karaf 中都可以清楚地定位。
术语“Bundle”、“Dependency”和“Requirement”属于OSGi Core 规范。而“功能”和“先决条件”是 Apache Karaf 的特定术语。
现在到你的 list :
问:当 OSGi 容器中没有其他包(我称之为依赖项)时,“先决条件”不允许我的“特殊服务器”包启动。
答:首先,请注意“先决条件”不适用于捆绑依赖项,仅适用于功能依赖项(顺便说一句。您的 XSD 已过时,请查看 current XSD ),是的,它只是依赖性。为此,documentation很明确:
If you will add prerequisite attribute to dependant feature tag then it will force installation and also activation of bundles in dependant feature before installation of actual feature.
<bundle dependency="true">...
,那么这意味着如果系统中已经存在该捆绑包(如果指定了可接受的版本),则不会再次安装它。
features.xml
:
v1.3.0
<features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://karaf.apache.org/xmlns/features/v1.3.0
http://karaf.apache.org/xmlns/features/v1.3.0"
name="special-server-features">
<feature name="special-server" version="1.0.0" install="auto" resolver="(obr)">
<feature>camel-blueprint</feature>
...
</feature>
<bundle>
依赖是完全错误的。您指定了功能,而不是捆绑包。 prerequisite
<bundle>
的属性标记并且从来没有(请遵守 XSD)<repository>
只能在顶层声明,不能在功能内部声明(也违反 XSD)<?xml version="1.0" encoding="UTF-8"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.4.0 http://karaf.apache.org/xmlns/features/v1.4.0"
name="special-server-features">
<!-- Required feature repositories -->
<!-- We don't need to define this since Apache Camel already does it
<repository>mvn:org.apache.cxf.karaf/apache-cxf/3.3.1/xml/features</repository>
-->
<repository>mvn:org.apache.camel.karaf/apache-camel/3.0.0.M2/xml/features</repository>
<!-- Special Server -->
<feature name="special-server" version="1.0.0" install="auto">
<!--
Require Java 8 at least.
-->
<requirement>osgi.ee;filter:="(&(osgi.ee=JavaSE)(version>=1.8))"</requirement>
<!--
Every <feature> declares a dependency to another feature declaration
(either available in this <features> repository or an external one.
The dependency is bascially made up by referencing the "name" of
another <feature> declaration.
dependency="true"
the feature will not be installed if already available
prerequisite="true"
the feature will be installed before ours and all bundles will
be started
-->
<feature dependency="true" prerequisite="true">cxf</feature>
<feature prerequisite="true">camel-core</feature>
<feature prerequisite="true">camel-cxf</feature>
<!--
These features will just be installed as part of installing the
current feature.
-->
<feature>camel-blueprint</feature>
<feature>camel-jackson</feature>
<feature>camel-http4</feature>
<feature>camel-jaxb</feature>
<feature>camel-jsch</feature>
<feature>camel-stream</feature>
<!--
Every <bundle> declares a dependency to a standard OSGi Bundle using
a URL including a protocol to uniquely identify the artifact.
For Apache Karaf the most common protocol is to rely on Maven:
https://ops4j1.jira.com/wiki/spaces/paxurl/pages/3833866/Mvn+Protocol
Here, you also need to know that Apache Karaf also provides an
internal Maven repository which is asked first and contains all
Bundles that are already installed. This Maven repository usually
exists at the Karaf installation sub-directory "system".
-->
<!--
This bundle needs to be available, but we certainly don't want to
"wrap" it again if it is already there.
See also: https://ops4j1.jira.com/wiki/spaces/paxurl/pages/3833898/Wrap+Protocol
-->
<bundle dependency="true">wrap:mvn:org.minidns/minidns-core/0.3.3</bundle>
<!--
Now this is our own bundle which requires all of the above to do
it's work properly.
-->
<bundle>mvn:com.mycorp.servers/special-server/1.0.0</bundle>
</feature>
</features>
关于apache-karaf - Apache Karaf 中的功能、捆绑、依赖、先决条件和要求之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55412177/
我在 gobject 上阅读了一个维基百科页面,上面写着, Depending only on GLib and libc, GObject is a cornerstone of GNOME and
如何注册一个依赖属性,其值是使用另一个依赖属性的值计算的? 由于 .NET 属性包装器在运行时被 WPF 绕过,因此不应在 getter 和 setter 中包含逻辑。解决方案通常是使用 Proper
我一直在尝试将 ActionbarSherlock maven 依赖项添加到我的项目中 com.actionbarsherlock library 4.2.0 在我的 po
http://tutorials.jenkov.com/ood/understanding-dependencies.html#whatis说(强调我的): Whenever a class A us
我对所有这些魔法有点不清楚。 据我了解,依赖属性是从 DependencyObject 继承的,因此存储值: 如果分配了值(在本地字典中),则在实例本身中 或者如果未指定值,则从指向父元素的链接中获取
我刚刚更新了在 ASP.NET Framework 4.5.2 版上运行的 MVC Web 应用程序。我正在使用 Twilio 发送 SMS 消息: var twilio = new TwilioRe
我刚刚发现了一件令人生畏的事情。 spring 依赖坐标有两个版本。 项目依赖于 spring mvc 和 spring flow。有两组并行的依赖项。 Spring MVC 具有以下方案的依赖项
我正在尝试包含 的 maven 依赖项 org.jacorb jacorb 2.3.1 依赖已解决,但它导致另一个依赖 picocontainer 出现问题: [ERROR
我正在尝试在 Haskell 项目中包含特定版本的库。该库是住宿加早餐型的(用于 martix 操作),但我需要特定的 0.4.3 版本,该版本修复了乘法实现的错误。 所以,我的 stack.yaml
有谁知道如何制作依赖的 UIPickerView.例如,当我选择组件一的第 2 行时,组件二的标题会发生变化吗? 我在互联网上查找过,没有真正的答案,我尝试过使用 if 和 switch 语句,但它们
我正在编写一个用于验收测试的项目,由于各种原因,这依赖于另一个打包为 WAR 的项目。我已成功使用 maven-dependency-plugin 解压 WAR,但无法让我的项目包含解压的 WEB-I
或多或少我在 session 上大量构建我的网站(特别是重定向用户等),我很好奇这是否是一种危险的做法。禁用浏览器 cookie 保存的用户的大致比例是多少?我愿意接受任何建议:) 谢谢 最佳答案 s
开始玩 Scala futures,我被依赖的 futures 困住了。 让我们举个例子。我搜索地点并获得 Future[Seq[Place]]。对于这些地点中的每一个,我搜索最近的地铁站(该服务返回
或多或少我在 session 上大量构建我的网站(特别是重定向用户等),我很好奇这是否是一种危险的做法。禁用浏览器 cookie 保存的用户的大致比例是多少?我愿意接受任何建议:) 谢谢 最佳答案 s
我有一个二进制文件,需要一些 *.so 文件才能执行。现在,当我尝试在一些旧机器上执行它时,它会显示 /lib/libc.so.6: version `GLIBC_2.4' not found 如何将
我尝试使用 Dygraph 来表示图表,我在 https://github.com/danvk/dygraphs 中找到了代码,但是它有太多的依赖文件,我觉得很烦人。是否有一个文件可以容纳所有必需的
我正在处理一个 javascript 文件,该文件 a) 声明一个具有函数的对象,并且 b) 使用它期望在外部声明的散列调用该对象的 init 函数。我的 Jasmine 规范提示它找不到哈希,因为它
最近我一直在学习 Angular 并且进展顺利,但是关于依赖注入(inject)的一些事情我仍然不清楚。 是否有任何理由在我的 app.js 文件中声明我的应用程序的其他部分(服务、 Controll
考虑一个名为 foo 的表,它有 id (PRIMARY & AUTO_INCREMENT) 列。我正在向该表中插入一行,挑战从此时开始。 $db->query("INSERT INTO `foo`
我正在使用级联下拉 jquery 插件。 (https://github.com/dnasir/jquery-cascading-dropdown) 我有两个下拉菜单。 “客户端”和“站点”。 根据您
我是一名优秀的程序员,十分优秀!