Java 开发CalDav服务器

Java 开发CalDav服务器,java,icalendar,caldav,Java,Icalendar,Caldav,我的数据库中保存了一组事件(一个非常特殊的数据库,所以我不能使用一些流行的开源服务器,比如MySQL)。现在我想构建一个CalDav服务器(通过Java),以便用户可以将其日历客户端连接到该服务器以检索或修改事件。我是新手,所以有很多问题,希望你们能帮我解决 一般步骤是什么 我需要提供一个servlet吗?如果是,那么我必须返回什么请求?JSON、XML或.ics文件 当用户订阅我的日历时,这是否意味着他的客户机将在一段时间后拉入我的服务器(调用servlet) 更新:这是我第一次提出的问题,已

我的数据库中保存了一组事件(一个非常特殊的数据库,所以我不能使用一些流行的开源服务器,比如MySQL)。现在我想构建一个CalDav服务器(通过Java),以便用户可以将其日历客户端连接到该服务器以检索或修改事件。我是新手,所以有很多问题,希望你们能帮我解决

  • 一般步骤是什么

  • 我需要提供一个servlet吗?如果是,那么我必须返回什么请求?JSON、XML或.ics文件

  • 当用户订阅我的日历时,这是否意味着他的客户机将在一段时间后拉入我的服务器(调用servlet)

  • 更新:这是我第一次提出的问题,已经有一年了,但我得到了一些支持,所以我不得不提供一些信息:我最终使用了Milton库,它抽象了servlet,您只需编写函数来返回数据。该图书馆的作者很有帮助,信息量也很大。最终结果是:我们的caldav服务器工作正常

    我也接受埃弗特的回答。

    阅读RFC:

    不仅仅是一次,你至少要从头到底读4遍

    除此之外,您可能还应该阅读关于WebDAV、WebDAV ACL和iCalendar的RFC

    你在这里得到的任何答案都是对其中内容的重复,试图简化它是徒劳的,因为你确实需要对大部分规范有一个全面的理解

    具体回答您的问题:

  • 太模糊了,无法回答。一般步骤包括理解规范和编写服务器。鼓励提供细节
  • 您需要能够响应HTTP请求的东西。不管那是servlet还是其他什么,都不那么重要。CalDAV是HTTP的扩展。返回XML报告以获取元信息,iCalendar是实际日历数据的默认格式。对于许多http请求,iCalendar被包装在xml正文中。现在服务器也开始支持xCal和jCal。后两个选项是可选的,您必须具有iCalendar支持
  • 通常,他们会在客户端定义的时间间隔内进行轮询。有发布子机制,但目前还没有针对它们的标准,并且有各种各样的实现。已经开始讨论为此制定标准交通工具,但这可能需要一些时间才能完成。(年)
  • 让我试试;-)

    一般步骤是什么? 正如Evert提到的,您需要实现一个CalDAV服务器。根据您希望支持的功能,这是非常重要的,需要了解相关规范(iCalendar RFC 5545和CalDAV 4791、WebDAV RFC 4918)

    实现CalDAV服务器的一般步骤是什么?您需要HTTP入口点来:

    a) 提供帐户信息(在WebDAV中称为主体),这包括帐户日历所在的URL

    b) 提供日历列表(称为日历主页,a中的主体信息)指向此列表)

    c) 提供实际的日历,即这些日历中包含的事件。CalDAV日历是“iCalendar”资源的特殊WebDAV集合。iCalendar是事件的表示格式

    根据您希望支持的CalDAV功能,这可能要复杂得多(例如服务器端调度)。有针对更快同步(同步报告)或上载等的优化。您不需要所有这些就可以开始

    我需要提供一个servlet吗?如果是,那么我必须返回什么请求?JSON、XML或.ics文件? 正如Evert所说,如何实现HTTP端点是您的选择。Servlet是一种可行的选择。 主体信息、日历列表和指向日历中项目的URL以(WebDAV)XML(multistatus响应)的形式返回。 事件的实际内容需要以iCalendar(.ics)格式返回

    当用户订阅我的日历时,这是否意味着他的客户机将在一段时间后拉入我的服务器(调用servlet)。 对

    一些CalDAV实现还支持Push(服务器可以告诉客户端何时有新数据可用),但这还没有标准化,实现也有很大差异。
    如果您的服务器实现CTags和同步报告(RFC 6578),则可以快速进行轮询。

    此问题有三点。您的“答案”没有提供任何答案。我的答案提供了提供所有答案的官方文件的参考。实现了一个流行的CalDAV服务器后,如果不阅读文档,根本无法开始。我同意你的观点,但我不同意这篇文章回答了所问的3个问题,这可能不需要阅读整个文档就可以回答。这更多的是一个关于SO格式的元讨论,而不是你刚才所说的事实。这很公平。这个问题有点老了,但我还是会为未来的访客回答这些问题。嗨,你还在用milton.io吗?进展如何?