Das [JavaProtocol] ist ein Protocol für die [ProtocolFactory]. Es ist als Bestandteil der [Design-Utils]. !!!Anwendung Das [JavaProtocol] wird eingesetzt, wenn URL-Zugriffe auf Classpath-Ressourcen erfolgen. Viele Komponenten sind heute so gebaut, dass die Übergabe von URLs erwartet wird. Beim [Testen] können so Ressourcen geladen werden, ohne über HTTP-Protocol zu gehen. Dies kann beim Entwickeln von [Tests|Testen] für [HtmlClient] nützlich sein, da man auf einer statischen, gespeicherten Seite arbeiten kann. !Vorteile zu File-URLs Als Ersatz für File-URLs gibt es einige Vorteile: * __Relativer Pfad:__ Der Pfad beginnt beim Classpath, zum Beispiel ist "/test.properties" auf allen Konfigurationen auffindbar. * __Systemunabhängigkeit:__ Es spielt keinen Unterschied, ob die Angabe auf Windows, Unix oder anderen Maschinen gemacht wird. * __Sicherheit:__ Wenn [Java] [Applications|Application] mit [Application Boundary Enforcement] laufen, wie dies im [Cloud Computing|http://de.wikipedia.org/wiki/Cloud-Computing] zum Beispiel bei [Google Application Engine Apps] der Fall ist, ist kein Zugriff auf das Dateisystem möglich (und auch nicht sinnvoll). __Anmerkung:__ Hier wird im Moment noch an der Kompatibilität gearbeitet. !Vorteil zu HTTP-URLs Als Ersatz für HTTP-URLs gibt es einige Vorteile: * __Geschwindigkeit:__ Es wird keine TCP/IP-Verbindung aufgebaut, der Inhalt wird direkt gestreamt. * __Sicherheit:__ Der Request verlässt nicht die Virtuelle Maschine. * __Einfachheit:__ Es braucht kein Server gestartet zu werden, die Dateien sind direkt aus dem Classpath zugreifbar. * __URL:__ Classpath-Ressourcen können direkt über einen URL übergeben werden und brauchen nicht kompliziert über Java-Code gestreamt werden. !Vorteil gegenüber HttpUnitProtocol In Fällen in denen es um die Bereitstellung von Streaming-Ressourcen geht und nicht um den Test von Web-Applications oder Servlets, kann [JavaProtocol] ein Ersatz für [HttpUnitProtocol] sein. !!!Beispiele !Entwicklung von [Tests|Testen] [HtmlClient] {{{ ProtocolFactory.register(new JavaProtocol()); URL url = new URL("java:/context.html"); Page page = client.begin(url, null, false); Element table = page.getElement("/HTML/BODY/TABLE[2]/TBODY/TR[2]/TD[2]/TABLE[3]/TBODY/TR[2]/TD/BLOCKQUOTE/TABLE/TBODY/TR[2]/TD/BLOCKQUOTE/TABLE/TBODY"); ... }}}