构建Apache Sling,Felix,Jackrabbit项目的目的是什么?

时间:2013-06-10 06:49:09

标签: apache open-source jackrabbit apache-felix sling

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

问题

我正在我的项目中使用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一起挣扎。

我将非常感谢你。等待你的回应。

3 个答案:

答案 0 :(得分:29)

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

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

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文件)。这意味着它允许您更改应用程序而无需重新启动服务器。

答案 1 :(得分:17)

非常简单的术语

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 

OR

/content/app/node.short.json.

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

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

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

答案 2 :(得分:1)

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

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

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

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

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

所以,恢复它:

  • Sling是一个Web框架 - >使用长耳兔 - >基于/支持JCR API。
  • 你可以看到Apache Felix就像一个容器及其经理。

请注意,Sling最初是Day Software的内部项目。这就是为什么有些bundle / library被命名为com.day的原因,但最后它们是两个名字。

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