# Auf WebDAV zugreifen (z.B. Jakarta Slide?)



## cocoon (7. Mai 2007)

Hallo zusammen,

ich möchte aus einem Java-Programm über WebDAV auf bestimmte Dateien zugreifen, diese ändern usw. Hat jemand damit Erfahrung, kennt eine API oder sogar Tutorials/Beispiele? 

Ich bin mit Google nur auf das Jakarta Slides-Projekt gestoßen, das eine WebDAV-API für Java bieten soll. Hat damit schon jemand gearbeitet? Ich kann mich durch die Masse an Dateien irgendwie nicht richtig an die relevanten Klassen durcharbeiten..

Konkret möchte ich auf meine Kalender-Dateien (iCalendar), die derzeit im GMX-MediaCenter liegen, zugreifen.


----------



## MasterT (8. Mai 2007)

Hm, ich suche auch im Moment nach einer Möglichkeit mit Java auf Webdav zuzugreifen.
Aber anscheinend kennt keiner ein Möglichkeit. Naja, muss man dann wohl mal selber schreiben


----------



## Ckuhn (9. Mai 2007)

hi, 

schreibt mal genau was Ihr machen wollt, denn ich schreibe zur Zeit meine Diploarbeit mit dem Thema "Integration einer Webdav Schnittstelle". Programmiersprache ist klar Java. Denke mal dass ich Euch bestimmt weiter helfen kann.;-) 

Viele Grüße

Christian


----------



## cocoon (11. Mai 2007)

Dabei rauskommen soll nachher sowas (Pseudocode):


```
String url = "http://www.mein-web-dav.de/meins";
String user = "ich";
String pass = "meins;

WebDAV w = new webDAV();

w.verbinde(url, user, pass);
file f = w.holeDatei("calendar.ics");

machIrgendwasAufDatei(f);

w.uploadDatei(f);
w.schliesse();
```

Das ganze soll eine Synchronisation zwischen lokalen und WebDAV-gespeicherten Kalenderdateien werden, d.h. in bestimmten Zeitintervallen soll eine Synchronisation vorgenommen werden. Außerdem soll der Kalender als Widget auf dem Desktop angezeigt werden.
Eine API für iCalendar-Dateien habe ich gefunden; jetzt benötige ich noch eine Möglichkeit, mir die *.ics-Dateien vom WebDAV zu holen und wieder draufzuspielen. Möglichst simple and stupid. ;-)


----------



## Ckuhn (11. Mai 2007)

Hallo, 

also so einfach ist dass nicht denn Du musst ja die komplette Funktionalität einbinden welche hinter dem webdav Protokoll steht, was bedeutet du musst einen XML Generator schreiben.
Nun hast du aber folgenden Möglichkeiten:

Zum einen eine Anwendung schreiben welche den Webdav Standart implementtiert. Das ist das was ich mache. Ist aber extrem komplex. Danach macht dein Webdav Servlet aber genau das was du willst

Weiterhin hast du wie du schon sagtest die Möglichkeit bestehende Webdav Implementierungen zu verwenden. Da gibt es zum einen mod_dav, welches ein Modul ist das Du in den Apache HTTP Server implementieren kannst. Dieses bietet Dir dann die Möglichkeit auf ein FileSystem auf dem Webserver zu zugreifen. Weiterhin hast du beim Apache Webserver die Möglichkeit das Project Catacomb zu verwenden. Ist fast dasselbe wie mod_dav nur ein bisschen anders. wesendlicher unterschied zu mod_dav ist dass das Modul nicht auf ein FileSystem aufsetzt sondern auf MySQL als Datenpool.

Dann hast du noch Slide ist eigentlich ein CMS. Aber hat auch Webdav Funktionalität. Vorteil hier ist dass Du Dich nicht um das Generieren von XML kümmern musst, denn das macht Slide intern. Du musst ledeiglich einen Adapter programmieren welcher zw. Client und Slide API sitzt und die Objekte slide liefert welches es benötigt. Kannst ja mal auf der seite von Slide nach dem „Construktion Kid“ suchen, da ist relativ einfach erklärt wie du webdav mit Hilfe von nem Servlet Adapter in Slide einbinden kannst. 

Aber am aller einfachsten ist Du machst das ganze mit TOMCAT, denn Tomcat hat ein Webdav Servlet standardmäßig implementiert. Da kannst Du Dir zumindest mal die dateien anzeigen lassen welche sich auf dem Tomcat befinden. Und du kannst die Dateien auch herunterladen. Das einzige was Du machen musst in dem Webdav Servlet (heißt in Tomcat so) die POST oder PUT Methode (bin mir nicht ganz sicher welche, irgendwas war da) implementieren denn die ist nicht implementiert. Und dann kannst Du über Tomcat Dateien anzeigen lassen, hochladen und runterladen. 

Und was die Upload Funktion angeht da kann ich noch nichts Genaues sagen denn da werd ich jetzt mich mit beschäftigen. Aber du kannst es ja mal versuchen. Hoffe ich konnte Dir helfen und wenn Du fragen hast, oder Dich entschieden hast wie Du vorgehen willst dann meld Dich doch einfach wieder. Dann kann ich Dir auch genau sagen was du machen kannst.
Aber ich würde Dir wenn du kein Locking kein Versionieren und keine Suche sowie Access Controll List brauchst zu Tomcat raten denn dass ist am einfachsten.

Viele Grüße

Christian


----------



## cocoon (12. Mai 2007)

Zunächst mal vielen Dank für Deine ausführliche Antwort.



Ckuhn hat gesagt.:


> also so einfach ist dass nicht denn Du musst ja die komplette Funktionalität einbinden welche hinter dem webdav Protokoll steht


Das ist mir klar, daher meiner Suche nach eine bereits entwickelten API. Schließlich möchte ich nicht das Rad neu erfinden und gerade im Java-Umfeld gibt es ja schon für zahlreiche Problemstellungen Lösungen.



> Nun hast du aber folgenden Möglichkeiten:


Ich hätte vielleicht dazu sagen sollen, dass das ganze eine Desktop-Anwendung werden soll. Tomcat, Apache, Servlets usw. erübrigen sich (zumindest möchte ich nicht für einen kleinen Desktop-Gadget, der ein paar Dateien holt und darstellt, nicht jedesmal noch Server usw. mitstarten).

Slide wäre eine Möglichkeit. Hier würde mich interessieren, ob schon jemand Erfahrung damit gemacht hat. Wie gesagt, ich habe es noch nicht geschafft, mich an die relevanten Klassen hervorzuarbeiten. Das Construction Kid gucke ich mir mal an.


----------

