我在这里问一个非常基本的问题。
问题
我正在我的项目中使用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一起挣扎。
我将非常感谢你。等待你的回应。
答案 0 :(得分:29)
Apache Jackrabbit,Apache Sling和Apache Felix的组合允许您构建Web应用程序。
Apache Jackrabbit是JCR 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最初是Day Software的内部项目。这就是为什么有些bundle / library被命名为com.day的原因,但最后它们是两个名字。
另外,如果您想了解Jackrabbit和JCR API,可以访问Jackrabbit的官方页面http://jackrabbit.apache.org/jcr/jackrabbit-architecture.html