In diesem Abschnitt werden folgende Themen behandelt:
Sicherheit
Für Datenquellen gibt es zwei verschiedene Zugriffsmodi:
-
Im Standardmodus für eingeschränkten Zugriff verarbeitet eine Datenquelle nur Anfragen, die von derselben Domain stammen, in der sich auch die Datenquelle befindet. Der eingeschränkte Modus verhindert Cross-Site Request Forgery (XSRF)-Angriffe und ist somit sicherer als der Modus mit uneingeschränktem Zugriff. Da die Datenquellenbibliothek nur eine Schnittstelle für die Rückgabe von Daten und nicht für die Änderung des Status oder der Daten auf Serverseite bietet, sind nur XSRF-Angriffe, bei denen versucht wird, Daten zu stehlen, möglich. Um Ihre Datenquelle vor Versuchen zu schützen, Daten zu stehlen, muss der eingeschränkte Modus in Verbindung mit einer cookiebasierten Authentifizierung verwendet werden. Wie Sie Nutzer authentifizieren, hängt von Ihrer Umgebung und Implementierung ab.
-
Im Modus mit uneingeschränktem Zugriff verarbeitet eine Datenquelle alle Anfragen unabhängig von ihrem Ursprung. Eine Datenquelle, die im uneingeschränkten Modus ausgeführt wird, kann durch cookiebasierte Authentifizierung geschützt werden. Beachten Sie jedoch, dass die Datenquelle anfällig für XSRF-Angriffe ist. Verwenden Sie den uneingeschränkten Modus, wenn Visualisierungen auf Webseiten außerhalb der Domain der Datenquelle auf die Datenquelle zugreifen müssen oder wenn die Daten öffentlich zugänglich sind und daher nicht geschützt werden müssen.
Für eine Visualisierungsanfrage kann das Antwortformat 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, kann auch im eingeschränkten Modus von anderen Domains darauf zugegriffen werden.
Wenn Sie den uneingeschränkten Modus angeben möchten, überschreiben Sie isRestrictedAccessMode()
so:
@Override protected boolean isRestrictedAccessMode() { return false; }
Der Einfachheit halber werden alle mit der Bibliothek bereitgestellten Beispiele im Modus mit uneingeschränktem Zugriff ausgeführt.
Fehler und Warnungen
Wenn es nicht möglich oder wünschenswert ist, eine gültige Datentabelle zurückzugeben, gibt die Bibliothek einen
DataSourceException
-Fehler aus. Dies ist beispielsweise der Fall, wenn der Nutzer nicht authentifiziert werden kann. Die Bibliothek löst diese Ausnahmen aus, wenn Fehler das Erstellen einer Datentabelle verhindern. In Situationen, die nur für Ihre Datenquelle gelten, können Sie Ausnahmen auslösen. Wenn ja, erstellen Sie 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 erforderlich. Verfügbare Grundtypen werden 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 sie dem Nutzer als Kurzinfo angezeigt. Daher ist es wichtig, keine technischen oder vertraulichen Informationen anzugeben.
Zur Fehlerbehandlung stehen die Hilfsfunktionen in datasource.DataSourceHelper
zur Verfügung. Rufen Sie in diesem Fall zwei Funktionen mit dem Namen setErrorServletResponse
auf, um eine DataSourceException
zu verwenden und einen Fehler in der Antwort des DatenServlets festzulegen. Eine dieser Funktionen verwendet eine Datenquellenanfrage, die andere auf HttpServlet request
und wird verwendet, wenn beim Erstellen einer DataSourceRequest
ein Fehler auftritt. Eine Beispielimplementierung finden Sie unter Funktionen und Ereignisfluss definieren.
Wenn keine Datentabelle zurückgegeben werden kann, gibt die Bibliothek einen Fehler zurück. Wenn eine Datentabelle zurückgegeben werden kann, aber ein Problem gemeldet werden kann, gibt die Bibliothek zusammen mit der Datentabelle eine Warnung zurück. Die Bibliothek gibt beispielsweise in den folgenden Situationen eine Warnung aus:
- Eine Abfragevisualisierung liefert einen
LIMIT
, der zu abgeschnittenen Daten führt. - Bei einer Visualisierungsabfrage wird ein ungültiges Formatierungsmuster in einer
FORMAT
-Klausel angefordert.
Erstellen Sie eine Instanz von base.Warning
und fügen Sie sie mit der Methode addWarning()
Ihrer Datentabelle hinzu, um eine eigene Warnung hinzuzufügen.
Protokollierung
Die Bibliothek nutzt die Abholzung von Jakarta Commons. Jakarta Commons-Logging kann mit den meisten gängigen Logging-Systemen verwendet werden, die Sie möglicherweise bereits haben. Möglicherweise müssen Sie einen Adapter schreiben, wenn Ihr Logging-System kein Standard ist. Weitere Informationen finden Sie auf der Startseite für das Logging von Jakarta Commons.
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.