27

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

问题是

正如我的导师所说,我在我的项目中使用 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 斗争。

我会非常感谢你。等待您的善意回应。

4

3 回答 3

46

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 分钟介绍)。

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

于 2013-06-10T07:15:24.387 回答
23

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 中的令牌以选择适当的脚本。

他们有一个非常好的备忘单,解释了请求解析和渲染是如何工作的

它比这更复杂一些,因为一切都组织在资源和组件中。您想查看他们的网站以获取更多信息

于 2013-06-10T14:11:59.170 回答
1

我也有同样的疑问。我能找到的最佳回复是在官方 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

于 2016-03-22T15:47:41.680 回答