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 [ServletUnitProtocol] sein.
!!!Beispiele
!Entwicklung von Tests für HtmlClient
Das [JavaProtocol] kann beim Entwickeln von [Tests|Testen] für den [HtmlClient] nützlich sein. Die Tests können gegen statische HTML-Ressourcen entwickelt werden und die Navigations- und MockProzedur zunächst vermieden.
{{{
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");
...
}}}