问题标签 [pax]

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 回答
487 浏览

docker - Docker 和 PaX 主机

在过去的几天里,我一直在试图让 docker 容器在 Gentoo Hardened 上正确运行。

我花了几天时间才发现的第一个问题是由我自己的偏执引起的:我放置 Docker 根目录的分区是用 nosuid 和 noexec 挂载的。结果,devicemapper 驱动程序对其进行了处理,因为它创建了许多循环设备来执行它的操作,但覆盖驱动程序没有,因为它从顶部继承了 noexec 标志,因此容器内的任何可执行文件都不会运行。我将把这些知识留给人们在这里发现......

然而,在解决这个问题后,我又遇到了另一个问题:PaX 标志。

PaX 强制要求创建包含代码的新内存页面的可执行文件使用特殊的 ELF 标头或扩展文件系统属性进行标记,最好两者都标记,因为 Gentoo 的推荐设置是使用扩展属性并忽略 ELF 标头。不符合要求的可执行文件在尝试的那一刻就会被杀死。

不幸的是,必须尝试的程序列表包括 nodejs、python 和几乎所有其他现代解释器,更不用说 mongodb。可能还有其他问题可执行文件,但这些是罪魁祸首,也是您经常希望在容器中看到的东西。

更不幸的是,即使 docker 映像应该能够包含由扩展属性标记的文件,但需要此类标志的通用软件的官方映像(尤其是 mongodb 和 nodejs)似乎都没有这些。

目前,我一直在通过在磁盘上找到实际文件并从容器外部设置它的 xattr 来解决这个问题。这显然是一个非常糟糕的主意。

解决这个问题的正确方法是什么?就此而言,是否有其他人似乎没有这个问题的特殊原因,正如大量谷歌搜索所表明的那样?是否有我错过的另一个内核选项(我经常这样做)或设置它们的特定推荐方法,以便它保持安全并实际工作?除了关闭 PaX,就是这样。

0 投票
1 回答
1168 浏览

mysql - karaf + pax-jdbc 连接池已达上限

我在 karaf 中的 pax-jdbc 的池连接有问题,我正在尝试通过 blueprint.xml 将 Mysql 数据源(DS)注入到我的项目中,为了测试它,我构建了一个 karaf 命令,将 DS 注入karaf 命令类并使用该连接执行查询。没关系,但问题是当我多次执行命令时,每次执行都会创建一个新的 DS 实例,并且池连接无法打开与 MySQL 的新连接,因为池已达到限制。

我已在此链接中将我的代码上传到 github:https ://github.com/christmo/karaf-pax-jdbc ,如果您在此项目中发现错误,可以提出拉取请求。

为了测试这个项目,你可以这样做:

如果你执行这个命令“mysql-connection”9次,它会冻结karaf的提示,如果你中断执行,你会得到这个异常:

java.sql.SQLException:无法获得连接,在 org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:146) 在 com.twim.OrmCommand.execute(OrmCommand.java:53) 在 org. apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:83) 在 org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:67) 在org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:87) 在 org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:480) 在 org. apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:406) 在 org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108) 在 org.apache.felix.gogo.runtime。 org.apache.felix.gogo.runtime.Closure 的 Closure.execute(Closure.java:182)。在 org.apache.karaf.shell.impl.console.ConsoleSessionImpl.run(ConsoleSessionImpl.java: 270) 在 java.lang.Thread.run(Thread.java:745) 引起:java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014) 在 java.util. .concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2048) 在 org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:583) 在 org.apache.commons.pool2.impl.GenericObjectPool .borrowObject(GenericObjectPool.java:442) 在 org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363) 在 org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:134) ... 还有 12 个

0 投票
1 回答
175 浏览

java - 如何 Pax url mvn Handler 从一开始的 Felix(嵌入式)开始?

如何在 felix 中安装 pax url 处理程序?

该项目由 maven 管理,启动 felix 如下:

在 pom 文件中,我包含了 pax-url-mvn:1.2.5 依赖项。

底线是通过 maven 协议启用捆绑安装。

谢谢你。

0 投票
1 回答
1101 浏览

java - 使用错误的 pax-jdbc 数据源在 Karaf 中捆绑

我们在 Karaf 4.0.3 中加载了不同的 OSGi 包,javax.sql.DataSource并由pax-jdbc-config. 例如,为不同的数据库配置了两个数据源:

我的问题是 bundle MODULE B应该使用datasourceB。它被配置为在所有源文件和blueprint.xml中使用datasourceB

我真的不明白,karaf 捆绑包使用不同的数据源有多容易。

并且当datasourceA配置文件被删除时,MODULE B正确使用datasourceB

这个问题是关于配置文件的错误顺序还是什么?

编辑:
我发现当我删除datasourceA配置文件并因此 Karaf 删除该 DataSource (不存在于service:list DataSource)时,MODULE B正确使用datasourceB

但我仍然不知道为什么会这样。我是否错过了阅读有关此的一些文档?是pax-jdbc-config问题还是卡拉夫问题?

0 投票
1 回答
141 浏览

java - PAX-CDI:CdiContainerFactory 和 BundleTracker

我使用 felix 和 pax-cdi 0.13 并焊接。我在 B 中有两个包 A。在包 AI 中有 BundleTracker 和 Customizer,在包 BI 中有 CDI bean。所以我想在捆绑跟踪器中使用 bean 管理器从捆绑 B 中获取 cdi bean。所以我在定制器中有方法:

要注册捆绑跟踪器,我使用以下代码:

上面的代码有效。但不总是。我有时间问题。我总是得到Cdi container factory is not null,但以下行

有时会抛出 NullPointerException。正如我想的那样,当 Bundle B 变为活动状态时,CDI 容器还没有准备好。如何解决这样的问题?

0 投票
1 回答
572 浏览

maven - 使用 Maven 构建 OSGI 应用程序

我正在尝试使用 Maven 构建独立的 OSGI 应用程序。有几个包含“bundles”的子模块和一个“distribution”模块,它生成一个包含我的包、框架的包和所需配置文件的目录(zip)。后者将所有子模块和 OSGI 实现声明为依赖项(Felix 和 Equinox 的不同配置文件)并使用程序集插件将它们放在一起。

我只能成功构建和运行 Felix 版本,但由于未解决的导入或不兼容的包版本,它不可靠并且在依赖版本的任何修改后中断。

所以这是我的问题

  1. Maven 是否适合 OSGI 开发?
  2. 如何确定哪些版本的包对应于某些版本的 OSGI 规范并且相互兼容?

例如,如果我的包依赖于 osgi.core:5.0 运行时需要哪些 jars org.apache.felix.framework: 5.6.1 或 4.6.0 org.apache.felix.configadmin: 1.8.12 或 1.6.0

  1. Equinox 的正确工件名称是什么?

网上有 org.eclipse.equinox:cm:3.6... 和 org.eclipse.equinox:org.eclipse.equinox.cm:3.6..。

  1. Pax项目的状态如何?文档不多,很多链接都坏了。
0 投票
1 回答
1409 浏览

postgresql - 通过 karaf 4 上的 pax-jdbc 配置文件创建 PostgreSQL 数据源

在我的 karaf 4.0.8 上,我安装了该功能pax-jdbc-postgresql。PostgreSQL 的 DataFactory 已安装:

我已经创建了文件etc/org.ops4j.datasource-psql-sandbox.cfg

之后,我看到karaf.log文件已处理的确认:

2017-02-10 14:54:17,468 | 信息 | 41-88b277ae0921) | 数据源注册 | 154 - org.ops4j.pax.jdbc.config - 0.9.0 | 检测到 DataSource psql-sandbox 的配置。使用过滤器跟踪 DSF (&(objectClass=org.osgi.service.jdbc.DataSourceFactory)(osgi.jdbc.driver.class=org.postgresql.Driver)(osgi.jdbc.driver.name=PostgreSQL))

DataSource但是,我在控制台的服务列表中看不到新内容。什么地方出了错?我在日志中没有看到异常......

0 投票
0 回答
716 浏览

apache-camel - 在 Karaf 4.1.0 或 ServiceMix 7.0.0 (Karaf 4.0.8) 中无法成功启动最简单的 Camel CDI 路由

我一直在尝试使用 Camel 和 CDI 构建和部署一条简单的路线,但没有成功。我专注于部署到 ServiceMix 7.0.0,但也在飞机 jane Karaf 4.1.0 上进行了尝试,并获得了完全相同的结果。

我基于 2.16.4 和 2.18.2 中的 Camel CDI 示例构建了一个非常简单的路由。我暂时排除了一些测试内容,只是想在我将其部署在 Karaf/ServiceMix 中时使其正常工作。

我的 RouteBuilder 是:

我的 POM 中也有必要和内容:

完整的 Java 和 POM 代码在问题的末尾。

请注意,由于依赖冲突,camel-cdi 功能将无法在 ServiceMix 7.0.0 上安装:

  • ServiceMix 7.0.0 正在使用 Camel 2.16.4
  • 2.16.4 中的 camel-cdi 正在寻找 DeltaSpike [1.5.0,2.0)
  • 2.16.4 中的 camel-cdi 正在寻找 pax-cdi 1.0.0.RC1
  • pax-cdi 安装 DeltaSpike 1.3.1
  • ...因此,如果所做的只是:

    /li>

较新版本的 Camel 也存在类似问题。

还要注意,即使包含更新的 DeltaSpike 库,pax-cdi 1.0.0.RC1 也会出现错误,这可能是由于蓝图代理的问题。

因此,这些说明安装了 pax-cdi 1.0.0.RC2 和最新的 DeltaSpike 1.7.2,以及 camel-cdi(ServiceMix 7.0.0 为 2.16.4,Karaf 4.1.0 为 2.18.2)。

在 ServiceMix 7.0.0 中安装和运行(Karaf 4.0.8、Camel 2.16.4)

启动 ServiceMix,连接到 Karaf 控制台并安装:

在简单的 jane Karaf 4.x 环境(Camel 2.18.2)中安装和运行

启动 Karaf,连接到 Karaf 控制台并安装:

在这两种情况下,软件包都已安装并列为运行,但骆驼上下文没有启动:

这是与camel-cdi 安装pax-cdi 1.0.0.RC1 相关的日志中的唯一一个错误,即使pax-cdi 1.0.0.RC2 已经存在,因此CDI 提供程序已经注册。在日志的末尾,很明显 CDI 绑定正在启动,但没有创建上下文,并且 Route 没有产生消息 - 没有任何迹象表明找到 RouteBuilder 或启动它时出现问题:

源代码

在我非常简单的项目中有两个文件,POM 和 Class。pom.xml 位于项目根文件夹中:

DemoRouteBuilder.java 位于 src/main/java/com/omniprise/demo/cdi/builder

我不明白为什么 DemoRouteBuilder 类没有被 CDI 基础设施调用,它应该找到所有 RouteBuilder 实例并触发它们。

0 投票
1 回答
852 浏览

osgi - PAX 考试 - 找不到类错误

我正在为我们的项目进行 PAX 集成测试,并且在类加载方面遇到了一些问题。

我在 PAX 中部署了几个包(使用 karaf 容器)。一旦 karaf 启动,我可以看到我的捆绑包和服务启动并处于活动状态。但是,在我的测试用例中,我提到了在我的测试执行期间将使用的类(不是服务或组件)。该类驻留在捆绑包中,捆绑包已启动并成功运行,但是我ClassnotFoundError在测试用例执行中访问该类时得到如下所示,

跟容器有关系吗?

0 投票
1 回答
42 浏览

java - 日志记录组件如何工作

我在 OSGI 框架上使用 HSQLDB。使用支持许多日志框架(java 日志、slf4j、jboss 日志等)的 pax-logging 是常见的解决方案。

我对 pax 日志没有问题,但是,我对 HSQLDB 日志消息有问题。HSQLDB 日志组件非常棘手 - 一些消息进入 pax 日志系统,一些消息进入控制台。

任何人都可以解释哪些消息必须去哪里以及为什么。