问题标签 [aries]

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

java - Aries managed-service-factory 是否也管理属性?

我在 Servicemix 4.3.1 中使用 Apache Aries 0.2 并创建了一个 cm:managed-service-factory。使用 .cfg 文件创建服务可以正常工作(#ARIES-584除外),但 .cfg 文件中的属性不会注入到服务对象中。它们确实在 ConfigAdmin 中正确设置,只是我的 bean setter 方法永远不会被我的配置文件中的值调用。

我在想我应该使用 cm:managed-properties 或类似的东西嵌套在我的托管服务工厂中,但这需要一个单独的 pid,所以看起来不正确。

如果我不放入属性标签,则不会设置任何值。使用属性标签,只设置默认值,而不是实际的配置文件值。

我找不到任何关于 Aries CM 子项目使用的文档,除了blueprint-sample.xml,它不显示托管服务工厂内的托管属性。我真的一直在尝试使用 Servicemix,但在每个角落都缺少文档、损坏或丢失的功能,或者影响核心功能的错误。

springgemini文档都表明它们的托管服务工厂实现也应该用作托管属性。


foo.xml:


IFoo.java


Foo.java


我的.msf-1.cfg


我的.msf-2.cfg


系统输出


配置:proplist

0 投票
1 回答
5859 浏览

osgi - 企业 OSGi 框架:成熟度比较 Apache Aries 与 Eclipse Gemini

问:截至今天,两个 Enterprise OSGi 框架中哪个更成熟:Apache Aries 还是 Eclipse Gemini?

我对 Aries 和 Gemini Enterprise OSGi 功能做了一些基础研究。我也经历过类似的这个问题:Gemini and Apache Aries blueprint container

我的要求和发现如下。将非常感谢您的额外投入。

  1. 蓝图容器:Aries 和 Gemini 在实现蓝图规范方面似乎同样成熟。

  2. Web 开发(将使用 Spring Portlet MVC 针对 JSR 286 进行开发):
    尽管 Gemini Web 源于 Spring DM(因此我最初偏爱 Gemini 框架),但我相信 Aries 应该同样能够使用基于 Spring Portlet MVC 的 Web应用程序。

  3. JPA:这是我最关心的领域。虽然我最初更倾向于 Gemini(由于它源于 Spring DM 和活跃的 SpringSource 社区的支持),但我觉得 Gemini JPA 的成熟度与 Aries JPA 相比相当低。原因:

    • Gemini JPA 仅支持与作为 JPA 提供者的 EclipseLink 集成。我想使用休眠。Aries JPA 支持休眠。
    • 参考Gemini JPA 限制:特别是限制 #5:缺乏对 JTA 事务的支持。似乎Aries JPA 支持 JTA ......但我一直无法深入了解支持级别的细节。
  4. JNDI:我的新 Web 应用程序需要从托管在 JBoss 应用程序服务器内的服务层调用现有的会话 EJB。因此,JNDI 支持对于我在客户端层中启用 OSGi 的 Web 应用程序至关重要。
    Gemini Naming 似乎还没有发布,而 Aries在这方面已经有了一些能力。

0 投票
0 回答
209 浏览

java - Apache Aries Managed JPA 能否与 iPOJO 一起使用而不是 Blueprint?

如果是,有人举个例子吗?

0 投票
2 回答
1063 浏览

jpa - Apache Aries 托管 JPA 支持哪些 JPA 提供程序?

显然,OpenJPA。我也看到提到过 EclipseLink 和 Hibernate,但是在功能上有显着差异吗?

0 投票
8 回答
3307 浏览

database - 为什么在数据库管理恢复中 Aries 在撤消之前执行重做?

如果 Aries 算法已经知道在分析阶段之后要撤消哪些事务,为什么 Aries 算法会在撤消之前应用重做?

我知道(认为)它与 Lsn 编号和保持一致性有关,因为在磁盘上刷新的数据可能与在崩溃时撤消事务不同(由于脏),撤消事务页),但我找不到任何形式的“正式”回答这个问题(至少一个我能理解的)。

0 投票
3 回答
5585 浏览

java - OSGi 中的 OpenJPA 找不到 MySQL JDBC 连接器包

我目前在 Felix (v4.0.3) 上开发一个 OSGi 项目。我需要使用 JPA,所以我安装了 Apache Aries JPA 包。我还安装了 OpenJPA,我需要它来使用 MySQL 连接器包连接到 MySQL 数据库。不幸的是它不起作用,OpenJPA 说它找不到 MySQL JDBC 类,我无法弄清楚是什么坏了,也许我做错了什么。我将在下面解释我精确安装的内容以及 persistence.xml 文件和我得到的实际异常。

这是我安装的 Apache Aries 捆绑包的列表:

  1. org.apache.aries.jpa.api-0.3.jar
  2. org.apache.aries.jpa.container.context-0.3.jar
  3. org.apache.aries.jpa.container-0.3.jar
  4. org.apache.aries.util-0.4.jar

然后我安装了那些 Apache Aries JPA 包的依赖项。我从 Springsource 下载了它们:

  1. com.springsource.javax.transaction-1.1.0.jar
  2. com.springsource.org.apache.log4j-1.2.16.jar
  3. com.springsource.slf4j.api-1.6.1.jar
  4. com.springsource.slf4j.log4j-1.6.1.jar
  5. javax.persistence_2.0.4.v201112161009.jar(这个来自 EclipseLink,以防万一)

我还安装了 OpenJPA 及其所有依赖项。我在apache-openjpa-2.2.0下载文件夹的lib文件夹中找到了 bundle 2 到 5 (commons-*) 。我在这里下载了 Serp ,因为在 lib 文件夹中找到的 jar 不是 OSGi 包。最后我在 Springsource 中找到了最后两个包(#7 和 #8):

  1. openjpa-2.2.0.jar
  2. commons-collections-3.2.1.jar
  3. commons-dbcp-1.4.jar
  4. commons-lang-2.4.jar
  5. commons-pool-1.5.4.jar
  6. org.apache.servicemix.bundles.serp-1.13.1_4.jar
  7. com.springsource.javax.servlet-2.5.0.jar
  8. com.springsource.org.objectweb.asm-3.2.0.jar

一旦我最终安装了 OpenJPA,我仍然需要 MySQL JDBC 驱动程序包,我也从 Springsource 存储库中获得了它以及它的 commons-logging 依赖项:

  1. com.springsource.com.mysql.jdbc-5.1.6.jar
  2. com.springsource.org.apache.commons.logging-1.1.1.jar

现在,安装的捆绑包列表变得非常大。我说我安装了 OpenJPA,但这只是因为我不知道如何将任何其他提供程序与 Aries 一起使用。我最初想使用 EclipseLink,但显然 Apache Aries 没有将其检测为提供程序,并且根据此博客,您必须制作另一个包含您自己的激活器的捆绑包,以便 Aries 注意到 EclipseLink。我试过了,但没有用,所以我改用 OpenJPA。

所以现在我有两个问题:

  • 如何让 OpenJPA 注意到我的 MySQL Bundle?

或者:

  • 如何让 Apache Aries 注意到 EclipseLink ?

这是我使用的 persistence.xml 文件:

执行我的 DAO 类的以下构造函数时发生错误:

这是我在 OpenJPA 找不到 MySQL 时遇到的错误。当然值得一提的是 URL 和用户名/密码都可以工作:

我已经消除了异常(它一直在继续)直到这一点:

PS:由于垃圾邮件限制,我无法发布指向 Aries、OpenJPA 或 EclipseLink 的链接,抱歉:/

0 投票
1 回答
1435 浏览

dependency-injection - 无法在 Websphere 8.5 中部署包含通过 aries 蓝图定义的骆驼路由的 osgi 包

我创建了一个 .eba 文件(企业包存档),其中包含一个具有 apache 骆驼路由(Java DSL)的 osgi 包。骆驼上下文定义是通过一个蓝图 xml 文件完成的。当我尝试在 Websphere Application Server 8.5 中部署 .eba 文件时,出现以下异常:

org.apache.aries.application.modelling.ModellerException: CWSAL0126E: 建模捆绑包时发生异常 ib-base_0.0.1.SNAPSHOT: org.apache.aries.application.modelling.ModellerException: org.osgi.service.blueprint.container。 ComponentDefinitionException:不支持的节点命名空间:http ://camel.apache.org/schema/blueprint 。

我的蓝图xml文件如下:

我不太清楚为什么这在 Websphere 中失败了。在 Karaf 3.0.0-SNAPSHOT 中成功部署了相同的 .eba 文件。(此版本的 Karaf 使用 Aries Blueprint 版本 1.0.0)。

我猜在 Websphere 8.5 中使用了相同的版本或 Aries Blueprint 1.0.0 的分叉版本。

根据 OSGi 规范,自定义命名空间(如 camel:)的任何蓝图扩展处理程序都从 OSGi 服务注册表中的键 (osgi.service.blueprint.namespace) 中检索。value 元素告诉实际的命名空间 uri 。

例如:

我不太清楚为什么 IBM 不遵守这个规范。

另一个值得思考的有趣点是,当我尝试使用 Websphere Application Developer Tool 创建一个蓝图 .xml 文件时,它只显示了 4 个扩展,如下所示:

  1. IBM 蓝图扩展
  2. JPA 蓝图支持
  3. 蓝图事务支持
  4. 蓝图资源参考支持

我确保骆驼核心和骆驼蓝图包都部署在 websphere 的内部存储库中。

我尝试将 .eba 文件部署为资产。

不太确定,如果我错过了什么。如果有人能指出我正确的方向,我会很高兴。

此致,

斯里拉曼。

0 投票
3 回答
2698 浏览

java - OSGI JNDI 是否允许与来自非 OSGI 代码的 JNDI 调用共存?

OSGI Enterprise Release 5 规范的第 126 章提到了兼容性:

“支持 Java SE 和 Java EE 客户端使用的传统 JNDI 编程模型。”

以及使用不支持 OSGI 的代码:

“不知道 OSGi 的客户端和 JNDI 上下文提供者使用静态方法连接到 JRE JNDI 实现。InitialContext 类提供从提供者对上下文的访问,提供者使用静态 NamingManager 方法进行对象转换和查找 URL 上下文。这个传统模型不知道 OSGi,因此只有在对缺乏 OSGi 意识的后果进行管理的情况下才能可靠地使用。”

但我不清楚此文本是否仅适用于在 OSGI 包内执行的“遗留”代码,或者也适用于 OSGI 容器外部的代码,例如在 OSGI 容器嵌入应用程序的情况下。

在嵌入场景中,OSGI 容器外部和内部都可能存在执行 JNDI 调用的应用程序代码,并且当它们在同一个 JVM 中执行时,它们将共享 JNDI 实现。

问题:在嵌入式 OSGI 容器中运行的 OSGI JNDI 实现是否应该允许容器外的不支持 OSGI 的代码像往常一样执行其 JNDI 调用,或者是否需要移植到“OSGI-awareness”?

我自己用 Apache Karaf 2.3.0(它使用 Apache Aries JNDI 1.0.0)尝试这个似乎不起作用,因为 Apache Aries 要求 JNDI 客户端调用源自 OSGI 包。
部分堆栈跟踪:

问题:这是正确的行为,还是我可以参考的规范中的某个部分违反了此限制?

0 投票
2 回答
1149 浏览

database - 在 ARIES 恢复方法中重复历史有什么好处?

ARIES 算法中,为什么需要在 redo pass 中重复崩溃前的所有历史?我可以在分析过程中获取已提交的事务编号,然后重做已提交的事务日志记录吗?这种方法将减少需要重做和撤消的记录数。

0 投票
0 回答
68 浏览

algorithm - ARIES KVL,为什么我们总是插入到 1st_page

我正在学习你的论文 ARIES/KVL[1],从论文中,B+树结构看起来像:

从 Search 伪代码中,Fetch、Insert 和 Delete 永远不会在 progrss SMO 中看到,因为在 SMO 完成后重新启动搜索。有一次,我们进入插入过程,满足以下条件:

  1. x 锁存第一叶,
  2. 没有涉及 1st_leaf 的 SMO 正在进行中。
  3. 1st_leaf 的最高键 < 分隔键
  4. 2nd_leaf 的键 >= 分隔键
  5. 1st_leaf 的键 < 2nd_leaf 的键
  6. 要插入的密钥 < 分隔的密钥。

例如,给定上图,当我们在 c0 中插入一个键时,那么

  1. c0 被 x 锁存
  2. 没有涉及 c0 的 SMO 正在进行。
  3. c0 < k0 的最高键
  4. c1 >= k0 的键
  5. c0 的键 < c1 的键
  6. 待插入密钥 < k0。

以下代码摘自[1],我删除了问题中不相关的部分。

Q1:为什么我们可以在 2nd_leaf 中找到插入键值?我的猜测是,从释放 1st_leaf 的父级闩锁到尝试 s_latch 2nd_leaf期间,其他事务引起了许多更新,因此在 2nd_leaf 中找到了一个待插入的密钥。但是,这将导致分隔键被更改,我无法理解它是如何发生的。

  1. 插入可能会导致拆分第二页,但不需要更改第一页和第二页之间的分隔键,因为拆分总是向右。
  2. 删除可能会导致删除 2nd_page,但它仍然不需要更改分隔键。

Q2:即使我们在2nd_leaf中找到了一个Insert Key Value,为什么还要把这样的key插入到1st_leaf中?因为它显然违反了 b+tree 属性(1st_leaf 的键 < 2nd_leaf 的键)。除了#6,上述条件仍然成立,因为分隔键被改变了,所以我们可以在2nd_leaf中找到to-be-inserted-key。

参考

  1. Mohan, C. ARIES/KVL:一种键值锁定方法,用于对 B 树索引上操作的多操作事务进行并发控制,Proc。第 16 届超大型数据库国际会议,布里斯班,1990 年 8 月。