【问题标题】:What is the purpose behind building of Apache Sling, Felix, Jackrabbit projects构建 Apache Sling、Felix、Jackrabbit 项目的目的是什么
【发布时间】:2013-06-05 18:39:24
【问题描述】:

我在这里问一个非常基本的问题。

问题是

正如我的导师所说,我在我的项目中使用 Apache Sling、Apache Jackrabbit、Apache Felix。我试图理解为什么这些软件是由 Apache 开发的。我在互联网上尝试了很多,但我没有找到任何博客或 wordpress 博客,或任何有用的 youtube 视频来解释所有这些项目。你能解释一下这些项目吗?

Why these projects developed?

What they do ?

and more questions like this

以前我对 Apache Hadoop 也有过同样的疑问,但是我在网上找到的所有材料都足以让我对这个项目有所了解。这次我在和 Sling、Felix、Jackrabbit 斗争。

我会非常感谢你。等待您的友好回复。

【问题讨论】:

  • 你有没有把这三个系统组合在一起?
  • 这些项目目前主要由 Adob​​e 维护,用于其 CMS 产品 Adob​​e Experience Manager (AEM)。 Jackrabbit 是 JCR 的参考实现,它在 Adob​​e 之外得到了一些采用(参见 Modeshape)。 Felix 是一个 OSGi 容器,也是一个开放标准。 Sling 是为 AEM 的前身明确创建的 JCR Web 框架,在 AEM 之外的采用率几乎为零。如果你不使用 AEM,我不知道你为什么会选择这个堆栈。有更好的选择。

标签: open-source apache-felix sling jackrabbit


【解决方案1】:

Apache Jackrabbit、Apache Sling 和 Apache Felix 的组合允许您构建 Web 应用程序。

Apache JackrabbitJCR API 的参考实现。 JCR API 用于管理内容存储库;例如,管理 Web 内容。内容存储库是文件系统和数据库的混合体。

JCR API 专门用于处理 Web 内容。为什么使用 JCR API,为什么不使用关系数据库 API? URL 是分层的,就像在文件系统中一样。关系数据库不容易支持分层访问。为什么不使用文件系统 API?因为 JCR 支持事务、版本控制以及文件系统 API 不支持的许多其他特性。

Apache Sling 是一个基于 JCR API 的 Web 框架,并利用了 JCR API (15 Minute introduction) 提供的功能。

Apache Felix 是一个 OSGi 容器。它允许在 Web 服务器运行时无缝启动、停止和替换 Web 应用程序的组件(某种意义上的 jar 文件)。这意味着它允许您更改应用程序而无需重新启动服务器。

【讨论】:

  • 我对 JackRabbit 和 Felix 有了一些感觉。但是给 Sling 的声明完全被我反弹了。你能再给我解释一下 Sling 吗?
  • 对不起,我个人对 Sling 不太了解。我只知道您也可以在网站上找到。
  • 对了,官方名称是Jackrabbit(小写r)。很抱歉挑剔:-)
  • 感谢您让我正确 :) 。但是,是的,我真的想说一件事。至少他们应该做一些很好的教程,这样可以帮助新生从非常基础的开始学习这些项目。
  • @devsda:对于 Apache Sling,请查看他们很酷的“15 分钟内发现 Sling”教程:sling.apache.org/documentation/getting-started/…
【解决方案2】:

Sling 用非常简单的术语可以描述为JCR 的REST API。您可以使用 http 请求来管理存储库中的内容。

此外,Sling 提供了一种机制来以不同的方式呈现该内容以供 Web 使用。您可以在 Felix 容器中使用脚本(例如 JSP)和 Java 代码(servlet、pojos 等)来处理请求并传递请求。

当对特定节点发出请求时,Sling 会查找名为 sling:resourceType 的属性,这是渲染脚本的查找键。然后使用节点作为输入执行相应的脚本。

您可以为渲染器编写不同类型的渲染器,然后使用它以不同的方式显示您的内容。

例如,您可以编写两个脚本 full.json.jsp 和 short.json.jsp,然后使用它们以两种不同的方式渲染同一个节点:

/content/app/node.full.json 

/content/app/node.short.json.

Sling 基本上匹配请求 URL 中的标记以选择适当的脚本。

他们有一个非常好的cheat sheet,它解释了请求解析和渲染的工作原理

它比这更复杂一些,因为一切都组织在资源和组件中。您想查看their site 了解更多信息

【讨论】:

【解决方案3】:

我也有同样的疑问。我能找到的最佳回复是在官方 Sling 页面 (https://sling.apache.org/)


(什么是)Apache Sling,用一百个字:

Apache Sling 是一个 Web 框架,它使用 Java 内容存储库(例如 Apache Jackrabbit)来存储和管理内容。

Sling 应用程序使用基于简单名称约定选择的脚本或 Java servlet,以 RESTful 方式处理 HTTP 请求。

嵌入式 Apache Felix OSGi 框架和控制台提供动态运行时环境,代码和内容包可以在运行时加载、卸载和重新配置。


所以,恢复它:

  • Sling 是一个 Web 框架 --> 使用 jackrabbit --> 基于/受 JCR API 支持。
  • 您可以将 Apache Felix 视为带有管理器的容器。

请注意,Sling 最初是 Day Software 的一个内部项目。这就是为什么一些包/库被命名为 com.day 的原因,但最终它们是相同的两个名称。

另外,如果你想清楚 Jackrabbit 和 JCR API,你可以访问 Jackrabbit 的官方页面http://jackrabbit.apache.org/jcr/jackrabbit-architecture.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 2012-06-08
    • 2012-06-09
    • 1970-01-01
    • 2013-10-16
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多