我的数据库(一个非常特殊的数据库,所以我不能使用一些流行的开源服务器,比如说MySQL)中保存了一组事件。现在,我想构建一个CalDav服务器(使用Java语言),这样用户就可以将他的日历客户机连接到服务器上,以检索或修改事件。我是个新手,所以有很多问题,希望你们能帮我。
自从我第一次问这个问题已经有一年了,但我得到了相当多的支持,所以我不得不提供一些信息:我最终使用了弥尔顿库http://milton.io/,它抽象了servlet,你只需要编写函数来返回数据。这个库的作者非常乐于助人,内容也很丰富。最终结果:我们的caldav服务器工作正常。
我也接受Evert的回答。
发布于 2013-03-12 22:36:42
阅读RFC:https://www.rfc-editor.org/rfc/rfc4791
不只是一次,你至少要从上到下读4次。
更重要的是,您可能还应该阅读WebDAV、WebDAV ACL和iCalendar的RFC。
你在这里得到的任何答案都是重复里面的内容,试图简化它是徒劳的,因为你真的需要对大部分规范有一个完整的理解。
具体回答你的问题:
发布于 2014-02-27 09:33:24
让我试一试;-)
一般的步骤是什么?
正如Evert所提到的,你需要实现一个CalDAV服务器。根据您想要支持的特性,这不是一件容易的事情,需要了解相关的规范(iCalendar RFC5545和CalDAV 4791,WebDAV RFC4918)。
实施CalDAV服务器的一般步骤是什么?您需要HTTP入口点来:
a)提供帐户信息(在WebDAV中称为委托人),这包括帐户的日历在哪个网址下
b)将日历列表(称为日历主页,来自a的主要信息)指向此列表)
c)服务于实际的日历,也就是那些日历中包含的事件。CalDAV日历是'iCalendar‘资源的特殊WebDAV集合。iCalendar是表示事件的格式。
根据你想支持的CalDAV特性,这可能会更加复杂(例如,服务器端调度)。有优化的更快的同步(同步报告),或上传,等等。你不需要所有这些都开始。
我需要提供servlet吗?如果是,那么对于请求,我必须返回什么?是JSON、XML还是.ics文件?
正如Evert所说,如何实现HTTP端点是您的选择。Servlet是一种可行的选择。主体信息、日历列表和日历中项目的URL在(WebDAV) XML (多状态响应)中返回。事件的实际内容需要以iCalendar (.ics)格式返回。
当用户订阅我的日历时,这是否意味着他的客户端将在一段时间后拉出我的服务器(调用servlet)。
是。
一些CalDAV实现也支持推送(服务器可以告诉客户端何时有新数据可用),但这还没有标准化,实现也有很大不同。如果您的服务器实现了CTags和同步报告(RFC6578),那么轮询可以保持很快。
https://stackoverflow.com/questions/14910553
复制相似问题