In diesem Abschnitt werden folgende Themen behandelt:
Sicherheit
Eine Datenquelle kann in einem von zwei Zugriffsmodi verwendet werden:
-
Im eingeschränkten Zugriffsmodus (Standardeinstellung) stellt eine Datenquelle nur Anfragen aus derselben Domain bereit, in der sich die Datenquelle befindet. Der eingeschränkte Modus verhindert XSRF-Angriffe (Cross-Site Request Forgery) und ist daher sicherer als der uneingeschränkte Zugriffsmodus. Da die Datenquellenbibliothek eine Schnittstelle bietet, mit der nur Daten zurückgegeben und der Status oder die Daten auf der Serverseite nicht geändert werden können, sind nur XSRF-Angriffe möglich, die versuchen, Daten zu stehlen. Damit Ihre Datenquelle vor Datendiebstahl geschützt wird, muss der eingeschränkte Modus in Verbindung mit der cookiebasierten Authentifizierung verwendet werden. Die Art der Nutzerauthentifizierung hängt von Ihrer Umgebung und Implementierung ab.
-
Im Modus für uneingeschränkten Zugriff werden von einer Datenquelle alle Anfragen unabhängig von ihrem Ursprung bereitgestellt. Eine Datenquelle, die im uneingeschränkten Modus ausgeführt wird, kann durch eine Cookie-basierte Authentifizierung geschützt werden. Die Datenquelle ist jedoch anfällig für XSRF-Angriffe. Verwenden Sie den uneingeschränkten Modus, wenn Visualisierungen auf Webseiten außerhalb der Domain der Datenquelle auf die Datenquelle zugreifen müssen oder wenn sich die Daten in der öffentlichen Domain befinden und nicht geschützt werden müssen.
In einer Visualisierungsanfrage kann ein Antwortformat von JSON, CSV oder HTML angegeben werden. Das Antwortformat bestimmt das Format, in dem eine Datenquelle eine Datentabelle zurückgibt. Da CSV- und HTML-Formate nicht anfällig für XSRF-Angriffe sind, können Sie von anderen Domains aus darauf zugreifen, auch im eingeschränkten Modus.
Wenn Sie den uneingeschränkten Modus festlegen möchten, überschreiben Sie isRestrictedAccessMode()
so:
@Override protected boolean isRestrictedAccessMode() { return false; }
Der Einfachheit halber werden alle mit der Bibliothek bereitgestellten Beispiele im Modus für uneingeschränkten Zugriff ausgeführt.
Fehler und Warnungen
Wenn es nicht möglich oder wünschenswert ist, eine gültige Datentabelle zurückzugeben, gibt die Bibliothek eine
DataSourceException
aus. Beispiel: Der Nutzer kann nicht authentifiziert werden. Die Bibliothek löst diese Ausnahmen aus, wenn sie aufgrund von Fehlern keine Datentabelle erstellen können. In Situationen, die nur für Ihre Datenquelle gelten, können Sie Ausnahmen festlegen. Erstellen Sie in diesem Fall eigene Fehlerausnahmetypen, indem Sie sie von der Klasse DataSourceException
übernehmen. Sie können die Klasse DataSourceException
auch direkt auslösen.
Die Klasse DataSourceException
befindet sich im Paket base
und verwendet die folgenden Parameter:
ReasonType
Dieser Parameter ist obligatorisch. Die verfügbaren Grundtypen sind in der AufzählungReasonType
definiert. Wenn keiner der verfügbaren Grundtypen geeignet ist, können SieOther
oderInternal
verwenden.
MessageToUser
Dieser Parameter definiert den Text der Fehlermeldung. In den meisten Fällen wird er als Kurzinfo angezeigt. Daher ist es wichtig, keine technischen oder vertraulichen Informationen anzugeben.
Sie können die Hilfsfunktionen in datasource.DataSourceHelper
verwenden, um Fehler zu verarbeiten. In diesem Fall rufen Sie zwei Funktionen mit demselben Namen von setErrorServletResponse
auf, um einen DataSourceException
zu übernehmen und für die Daten-Servlet-Antwort einen Fehler festzulegen. Eine dieser Funktionen verwendet eine Anfrage für eine Datenquelle, die andere eine HttpServlet request
und wird verwendet, wenn beim Erstellen einer DataSourceRequest
ein Fehler auftritt. Eine Beispielimplementierung finden Sie unter Funktionen und den Ablauf von Ereignissen definieren.
Wenn eine Datentabelle nicht zurückgegeben werden kann, gibt die Bibliothek einen Fehler zurück. Wenn eine Datentabelle möglich ist, aber ein Problem gemeldet wird, gibt die Bibliothek zusammen mit der Datentabelle eine Warnung zurück. Die Bibliothek erstellt beispielsweise eine Warnung in den folgenden Situationen:
- Wenn eine Abfragevisualisierung ein
LIMIT
liefert, das zu abgeschnittenen Daten führt. - Wenn eine Abfragevisualisierung ein ungültiges Formatierungsmuster in einer
FORMAT
-Klausel anfordert.
Wenn Sie eine eigene Warnung hinzufügen möchten, erstellen Sie eine Instanz von base.Warning
und fügen Sie sie der Datentabelle mit der Methode addWarning()
hinzu.
Logging
Die Bibliothek nutzt Jakarta Commons Logging. Jakarta-Commons-Logging kann mit den gängigsten Logging-Systemen verwendet werden, die Sie möglicherweise bereits haben. Sie müssen möglicherweise einen Adapter schreiben, wenn Ihr Logging-System nicht standardmäßig ist. Weitere Informationen finden Sie auf der Jakarta-Commons-Logging-Startseite.
Wenn eine Ausnahme ausgelöst wird, werden Informationen an das Log gesendet. Wie Sie auf das Log zugreifen, hängt vom verwendeten Logging-System ab.