Windows macht es möglich, Laufwerke auf Netzwerkservern mit lokalen Festplattennamen zu mounten, so dass auf diese von Nutzern wie auf eine lokale Festplatte zugegriffen werden kann. Dies ist ein sehr leistungsstarkes Feature von Windows, von denen viele Anwendungen Nutzen ziehen können.
Das Problem ist jedoch, dass Windows nicht sehr konsistent ist, wenn es darum geht, wie es mit solchen Laufwerken umgeht, auf die von einem Windows-Dienst aus zugegriffen wird. Wenn der Dienst manuell gestartet wird, werden die Laufwerke verfügbar sein, aber wenn das System neu gestartet wird, wird der Dienst auf die Laufwerke nicht mehr zugreifen können.
Der Java Service Wrapper bietet eine einfache Art und Weise an, um den Dienst mitzuteilen, wie er selbst Netzwerklaufwerke mounten kann, wenn diese nicht verfügbar wären. Das heißt, auf sie kann jederzeit zuverlässig zugegriffen werden.
Lösung |
Die Lösung ist, dem Dienst die Fähigkeit zu geben, seine eigenen Laufwerke mounten zu können. Der Java Service Wrapper liefert eine Reihe von Eigenschaften, die es ermöglichen, sowohl Netzwerklaufwerke als auch Drucker zu mounten. Auf diese Weise sind Java-Anwendungen imstande, zuverlässig solche Freigaben zu nutzen, unabhängig davon, wann der Dienst gestartet wurde. In Windows können Netzwerkfreigaben Laufwerksbuchstaben zugeordnet werden, so dass auf sie wie auf lokale Festplatten zugegriffen werden kann. Viele Anwendungen machen von dieser Fähigkeit Gebrauch, um nahtlos auf Dateien zuzugreifen, die im Netzwerk gemeinsam genutzt werden. Jedoch, wenn solch eine Anwendung in einen Dienst umgewandelt wird, wird der Zugriff auf Laufwerkfreigaben nicht mehr zuverlässig sein, weil das Mounten möglicherweise nur während der Sitzung des Nutzers getan werden kann. Sie sind in ein paar Fällen verfügbar, aber nicht in anderen. Abhängig davon, wann der Dienst gestartet wurde, und wer zu diesem Zeitpunkt an der Maschine eingeloggt war. |
Technische Übersicht |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Es ist möglich, ein Windows-Dienst als ein besonderes Konto auszuführen, jedoch werden die zugeordneten Laufwerke, die mit dem Konto erstellt wurden, nicht verfügbar sein, wenn das System erstmals hochstartet, und werden so nicht mit dem Dienst verfügbar sein. Wenn ein Nutzer sich mit dem gleichen Konto anmeldet, dann werden die Laufwerke installiert, aber sie werden nicht gegenüber dem Dienst verfügbar sein, solange bis das System komplett neu gestartet wurde. Üblicherweise bedeutete dies, dass es notwendig ist, die UNC (Uniform Naming Convention) zu nutzen, um auf Dateien im Netzwerk zugreifen zu können.
Diese UNC-Syntax funktioniert mit einigen Anwendungen, aber sie ist nicht so praktisch oder portabel für freigegebene Laufwerke:
?
Please check the English version for a more recent version of this text.
Viele Anwendungen, die ursprünglich nicht dafür entwickelt wurden, um als ein Windows-Dienst zu laufen, oder auf Netzwerklaufwerke zuzugreifen, stürzen ab, wenn diese einen UNC-Pfad in der Konfigurationsdatei antreffen. Der Java Service Wrapper erlaubt Diensten, auf gemeinsam benutzte Ressourcen einfach zuzugreifen; einfach durch Verbindung zu Remote-Servern und -Druckern. Es liefert eine Reihe von "share" Konfigurationseigenschaften die der Wrapper-Konfigurationsbeispiel hinzugefügt werden können, um den Wrapper mitzuteilen, ein oder mehrere Netzwerklaufwerke oder Drucker-Mappings einzurichten, bevor die Java-Anwendung gestartet wird.
|
Verweis: wrapper.share.<n>.* Eigenschaften |
|