2013-02-16 7 views
16

データベースには一連のイベントが保存されています(非常に特殊なデータベースなので、MySQLなどの一般的なオープンソースサーバは使用できません)。今は、ユーザーがカレンダークライアントに接続してイベントを取得または変更できるように、JavaでCalDavサーバーを構築したいと考えています。私はこれに新しいので、多くの質問を持って、あなたが私を助けてくれることを願っています。CalDavサーバの開発

  1. 一般的な手順は何ですか?

  2. サーブレットを提供する必要はありますか?はいの場合は、リクエストに返す必要がありますか? JSON、XML、または.icsファイルですか?

  3. ユーザが自分のカレンダーを購読すると、その時間内にクライアントが自分のサーバをプルする(サーブレットを呼び出す)ことになります。

アップデート:私はミルトンライブラリhttp://milton.io/を使用して終了、それは抽象化:これは私が最初に尋ねたが、私はかなりのupvotesを得たので、私はいくつかの情報を提供する義務ですので、1歳の質問ですサーブレットを使用するには、データを返す関数を記述するだけです。図書館の著者は非常に有益である。最終結果:私たちのcaldavサーバーが機能しました。

私はエバートの答えも受け入れます。

+0

こんにちは - まだmilton.ioを使用していますか?どうだった? – avijendr

答えて

4

RFCを読む: http://tools.ietf.org/html/rfc4791

は一度だけ、あなたは少なくとも下4倍にトップ、それを読みたいわけではありません。

さらに、WebDAV、WebDAV ACL、iCalendarのRFCも読んでいるはずです。

ここで得られる答えは、そこにあるものの繰り返しです。ほとんどの仕様を完全に理解する必要があるため、これを単純化しようとするのは無駄です。

は、特にご質問にお答えするには:

  1. が完全にあまりにも漠然と答えることです。一般的な手順では、仕様の理解とサーバーの作成が必要になります。具体的にお勧めします。
  2. HTTPリクエストに応答できるものが必要です。それがサーブレットなのか他のものなのかはそれほど重要ではありません。 CalDAVはHTTPの拡張です。メタ情報についてはXMLレポートが返され、iCalendarは実際のカレンダーデータのデフォルトの形式です。多くのHTTPリクエストでは、iCalendarはXMLボディにラップされます。最近のサーバーは、xCalとjCalもサポートし始めています。後者の2つはオプションです。にiCalendarをサポートする必要があります。
  3. 通常、クライアント定義の間隔でポーリングします。 pub-subメカニズムがありますが、現在はそれらの標準はなく、さまざまな実装があります。ディスカッションでは、このための標準的なトランスポートが用意されていますが、完了するまでに時間がかかることがあります。 (年)
+3

この質問には3点があります。あなたの「答え」はそれらの答えを提供しません。 – bjedrzejewski

+1

私の答えはすべての答えを提供する公式文書への言及を提供します。一般的なCalDAVサーバを実装しているので、ドキュメントを読まなくても始めることはできません。 – Evert

+1

私はあなたに同意しますが、私はこの記事が3つの質問に答えることに同意しません。これはあなたがちょうど言ったことの真実よりもSOの形式についてのより多くのメタ・ディスカッションです。 – bjedrzejewski

5

は、一般的な手順を教えてください。;-)私はそれを試してみましょうか

Evertが述べたように、CalDAVサーバーを実装する必要があります。サポートしたい機能に応じて、これは重要ではなく、関連する仕様(iCalendar RFC 5545およびCalDAV 4791、WebDAV RFC 4918)を理解する必要があります。

CalDAVサーバーを実装する一般的な手順は何ですか?呼ばれる(カレンダーのリストを提供)のWebDAVのプリンシパルと呼ばれるアカウント情報を()サーブ、これはライブアカウントのカレンダー

bはURLその下では、a)

:あなたはにHTTPエントリ・ポイントを必要としますa)からのプリンシパル情報は、これを指しています)

c)実際のカレンダー、つまりそれらに含まれるイベントを処理します。 CalDAVカレンダーは、iCalendarリソースの特別なWebDAVコレクションです。 iCalendarは、イベントが表現される形式です。

サポートしたいCalDAV機能によっては、サーバー側のスケジューリングなど、もっと複雑になる可能性があります。より速い同期(同期レポート)やアップロードなどのための最適化があります。開始するためにすべてを必要とするわけではありません。

サーブレットを提供する必要がありますか?はいの場合は、リクエストに返す必要がありますか? JSON、XML、または.icsファイルですか?

Evertによると、HTTPエンドポイントの実装方法はあなたの選択です。サーブレットは実行可能なオプションです。 カレンダー内のアイテムへのプリンシパル情報、カレンダーリストおよびURLは、(WebDAV)XML(マルチステータス応答)で返されます。 イベントの実際の内容はiCalendar(.ics)形式で返される必要があります。

ユーザーが自分のカレンダーを購読すると、その時間内にクライアントが自分のサーバーをプルする(サーブレットを呼び出す)ことになります。

はい。

一部のCalDAV実装では、プッシュ(新しいデータが利用可能になったときにサーバーがクライアントに通知できる)もサポートされていますが、まだ標準化されておらず、実装も大きく異なります。 サーバがCTagsと同期レポート(RFC 6578)を実装している場合、ポーリングを高速に保つことができます。

関連する問題