Benutzerdefinierte Handler für JAX-RS-Anwendungen implementieren
Sie können Benutzerhandler entwickeln, um das Verhalten einer Handlerkette anzupassen und eindeutige Funktionen zum Handler hinzuzufügen. Wenn Sie angepasste Handler auf der Serverseite von JAX-RS-Anwendungen (Java™ API for RESTful Web Services) implementieren, können Sie die Anforderungs- und Antwortverarbeitung verbessern.
Informationen zu diesem Vorgang
Sie können serverseitige Benutzerhandler zur Anforderungshandlerkette, zur Antworthandlerkette und zur Fehlerhandlerkette hinzufügen. Wenn weitere Verarbeitungsschritte, z. B. die Protokollierung aller Clientanforderungen, erforderlich sind, ist das Hinzufügen von Benutzerhandlern eine Möglichkeit, die Protokollfunktion zu implementieren.
Im Allgemeinen empfängt ein Handler eine MessageContext-Instanz für den Zugriff auf die aktuellen Anforderungsinformationen und deren Bearbeitung. Außerdem empfängt er eine HandlerChain-Instanz für die Erweiterung der Kette. Soll die Steuerung von einem Handler an einen anderen in der Handlerkette übergeben werden, muss der Handler die Methode doChain() in der HandlerChain-Instanz aufrufen. Da ein Handler die Methode doChain() mehrmals aufrufen kann, besteht die Möglichkeit, dass Ihr Handler mehrere Male für dieselbe Anforderung aufgerufen wird. Alle Schnittstellen mit Bezug zum Handler befinden sich im Paket "org.apache.wink.server.handlers".
Handler verwenden die MessageContext-Schnittstelle, um auf die aktuellen Anforderungsinformationen zuzugreifen und sie zu bearbeiten. Mit dieser Schnittstelle können Handler den Status einer Nachricht aufrechterhalten, indem sie Attribute für den Nachrichtenkontext definieren. Sie können diese Schnittstelle auch nutzen, um Informationen an andere Handler in der Kette zu übergeben.
Die Anforderungshandlerkette muss eine Anforderung entsprechend der JAX-RS-Spezifikation verarbeiten. Dazu muss sie die Anforderung annehmen, die aufzurufende Ressourcenmethode suchen, die Anforderungsentität entserialisieren und schließlich die Ressourcenmethode aufrufen. Ein Anforderungshandler ist eine Klasse, die die Schnittstelle "org.apache.wink.server.handlers.RequestHandler" implementiert.
Die Antworthandlerkette muss das Objekt, das beim Aufrufen einer Ressourcenmethode oder einer Unterresourcenmethode gemäß JAX-RS-Spezifikation zurückgegeben wird, verarbeiten. Die Kette muss den Statuscode der Antwort bestimmen, den Medientyp der Antwort auswählen und die Antwortentität serialisieren. Ein Antworthandler ist eine Klasse, die die Schnittstelle org.apache.wink.server.handlers.ResponseHandler implementiert.
Eine Benutzerhandlerklasse muss die Schnittstelle "org.apache.wink.server.handlers.RequestHandler" oder "org.apache.wink.server.handlers.ResponseHandler" implementieren. Sie müssen eine Klasse erstellen, die die Schnittstelle "org.apache.wink.server.handlers.HandlersFactory" erweitert, damit der Anforderungs- oder Antworthandler zurückgegeben wird. Schließlich müssen Sie die Position der Eigenschaftendatei, die den Namen der Handler-Factory-Klasse enthält, als Initialisierungsparameter in der Datei "web.xml" angeben, um sicherzustellen, dass die Eigenschaftendatei vom Servlet oder Filter gelesen wird.
Vorgehensweise
Ergebnisse
Sie haben einen Benutzerhandler zur serverseitigen Handlerkette der JAX-RS-Anwendung hinzugefügt, damit diese angepassten Handler in jedem Anforderungs- oder Antwortprozess aufgerufen werden.