Connector für SAP Gateway - Appendix

Troubleshooting

Fehlermeldungen

Wenn während eines OData-Requests Fehler auftreten, versucht Intrexx die Fehlermeldungen aus der Antwort des Services zu ermitteln und im Browser anzuzeigen. Dies ist nicht immer in allen Fällen möglich. Für eine detailliertere Fehleranalyse bietet es sich deshalb an, das OData-Request-Tracing im Intrexx-Portal-Server zu aktivieren. Dies wird im Folgenden beschrieben.

Request-Tracing und Fehlerprotokollierung

Bei aktiviertem Request-Tracing werden sowohl die OData-Requests als auch Responses im Detail in die Intrexx-Portal-Logdatei geschrieben. Für Requests besteht ein Eintrag aus der HTTP-Aktion, der URL, den Query-Options, den Request-Headern und dem XML-Body. Bei Antworten werden die HTTP-Header und der Response-XML-Body ausgegeben. Aktiviert wird das Tracing wie folgt:

  1. Öffnen Sie die Datei log4.properties aus dem Portalverzeichnis internal/cfg mit einem Texteditor Ihrer Wahl.

  2. Navigieren Sie zum Abschnitt "logging for OData" und ändern Sie den Wert von INFO auf DEBUG:

    # logging for OData
    
    log4j.logger.de.uplanet.lucy.server.odata.consumer=DEBUG, File
    

    log4j.additivity.de.uplanet.lucy.server.odata.consumer=false

  3. Führen Sie einen Neustart des Portal-Dienstes durch.

Bei jeder OData-Aktion werden nun die Request-Details in der portal.log-Datei protokolliert. Beispiel für ein Request/Response Tracing Eintrag:

DEBUG 2012-07-02 11:45:26,173 - 
OData request: 
GET https://gw.esworkplace.sap.com/sap/opu/odata/IWBEP/RMTSAMPLEFLIGHT_2/FlightCollection(AirLineID='AA',FlightConnectionID='0017',FlightDate=datetime'2012-02-01T00:00:00')/FlightBookings?$orderby=BookingID+asc&$select=FlightDate,Reserved,CustomerID,Title,BookingDate,PassengerDateOfBirth,Smoker,FlightClass,CustomerType,TravelAgencyID,FlightConnectionID,LuggageWeight,AirLineID,PassengerName,BookingID,Cancelled&$top=20&$skip=0
Accept: application/xml
DataServiceVersion: 2.0
User-Agent: intrexx
Authorization: *****

DEBUG 2012-07-02 11:45:26,573 - de.uplanet.lucy.server.odata.consumer.jersey.LoggingBehavior[WebConnectorWorker-localhost:8102-1]
OData response: 
Status: 200
content-type: application/xml; charset=utf-8
etag: version 01
Date: Mon, 02 Jul 2012 09:45:26 GMT
set-cookie: MYSAPSSO2=AjQxM..; path=/; domain=.esworkplace.sap.com
content-length: 29275
Keep-Alive: timeout=15, max=92
dataserviceversion: 2.0
Connection: Keep-Alive
Server: SAP Gateway Application Server / ABAP 702

<feed xml:base="https://GW.ESWORKPLACE.SAP.COM:80/sap/opu/odata/IWBEP/RMTSAMPLEFLIGHT_2/" xmlns="https://www.w3.org/2005/Atom" xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><id>https://GW.ESWORKPLACE.SAP.COM:80/sap/opu/odata/IWBEP/RMTSAMPLEFLIGHT_2/BookingCollection</id>	<title type="text">BookingCollection</title>  <updated>2012-07-02T09:45:26Z</updated>	<author>		<name />	</author>	<link href="BookingCollection" rel="self" title="BookingCollection" />	<entry m:etag="W/"datetime'2011-11-13T00%3A00%3A00'"">	<id>https://GW.ESWORKPLACE.SAP.COM:80/sap/opu/odata/IWBEP/RMTSAMPLEFLIGHT_2/BookingCollection(AirLineID='AA',FlightConnectionID='0017',FlightDate=datetime'2012-02-01T00%3A00%3A00',BookingID='00000001')</id>	<title type="text">BookingCollection(AirLineID='AA',FlightConnectionID='0017',FlightDate=datetime'2012-02-01T00%3A00%3A00',BookingID='00000001')</title>	<updated>2012-07-02T09:45:26Z</updated>	<category scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" term="RMTSAMPLEFLIGHT_2.Booking" />	<link href="BookingCollection(AirLineID='AA',FlightConnectionID='0017',FlightDate=datetime'2012-02-01T00%3A00%3A00',BookingID='00000001')" rel="edit" title="Booking" />	<content type="application/xml">		<m:properties>		<d:AirLineID>AA</d:AirLineID>		<d:FlightConnectionID>0017</d:FlightConnectionID>		<d:FlightDate>2012-02-01T00:00:00</d:FlightDate>		<d:BookingID>00000001</d:BookingID>		<d:CustomerID>00001302</d:CustomerID>		<d:CustomerType>P</d:CustomerType>		<d:Smoker>false</d:Smoker>		<d:LuggageWeight>17.4000</d:LuggageWeight>		<d:FlightClass>C</d:FlightClass>		<d:BookingDate>2011-11-13T00:00:00</d:BookingDate>		<d:TravelAgencyID>00000114</d:TravelAgencyID>		<d:Cancelled>false</d:Cancelled>		<d:Reserved>false</d:Reserved>		<d:PassengerName>Dominik Simon</d:PassengerName>		<d:Title />		<d:PassengerDateOfBirth>2012-07-02T00:00:00</d:PassengerDateOfBirth>		</m:properties>	</content></entry>...

Nicht unterstützte OData Funktionen

s Während Intrexx Unterstützung für alle wesentlichen Funktionen der OData-Spezifikation Version 2.0 anbietet, kann es unter Umständen vorkommen, dass ein Service bestimmte Funktionen nicht unterstützt. In diesem Fall kommt es entweder zu einem Fehler oder eine Abfrage liefert nicht das erwartete Ergebnis. Da die OData-Spezifikation den implementierenden Diensten einen relativ großen Spielraum bietet, was die Unterstützung von Features betrifft, kann in einem solchen Fall nur die Intrexx-Applikation derart angepasst werden, dass nur vom Service unterstützte Funktionen verwendet werden. Beispiele für solche Fälle sind Filterdefinitionen, Seitennavigation (Pagination) oder Sortierung. Über die entsprechenden Expert-Settings lassen sich problematische OData-Features deaktivieren. Falls bestimmte Filterdefinitionen nicht unterstützt werden, muss der Filter in Intrexx entsprechend angepasst bzw. vereinfacht werden.

Anhang

SSL-Verbindungen

Für SSL-Verbindungen zwischen dem Intrexx-Portal-erver und einem OData-Service muss das Zertifikat der Certificate-Authority, die das Service-Zertifikat ausgestellt hat, dem Zertifikatsspeicher des Intrexx-Portal-Servers hinzugefügt worden sein. Eine Ausnahme bilden selbstsignierte Zertifikate, die nicht von einer bekannten Certificate-Authority ausgestellt wurden. Um SSL-Verbindungen zu Diensten mit selbstsignierten Zertifikaten zu ermöglichen, muss in diesem Fall im Intrexx-Portal-Server die Prüfung der "Certificate-Chain" deaktiviert werden. Dies ist auf Service-Ebene über eine System-Property möglich. Öffnen Sie dazu die portal.cfg-Datei im Portalverzeichnis internal/cfg mit einem Texteditor und fügen Sie dem Abschnitt <environment> einen neuen <systemProperty>-Eintrag hinzu:

<systemProperty name = "de.uplanet.lucy.server.odata.consumer.ssl.allowSelfSignedCerts.<SERVICE_GUID>;" value="true"/>

Der Platzhalter <SERVICE_GUID> ist mit der GUID des OData Services zu ersetzen. Die GUID können Sie der Service-Konfigurationsdatei im Portalverzeichnis internal/cfg/odata entnehmen. Nach dem Speichern der portal.cfg-Datei muss der Intrexx-Portal-Server-Dienst neu gestartet werden, damit die Änderungen wirksam werden.

OData-Spezifikation

Eine Beschreibung des OData-Protokolls sowie die OData-Spezifikation erhalten Sie hier.

OData-Tools

Folgende Tools haben sich bei der Anwendungserstellung und Problemanalyse als hilfreich erwiesen:

  • Firefox RESTClient

    Mit diesem Firefox-Plugin, das Sie hier herunterladen können, lassen sich OData-Requests innerhalb des Browser ausführen und analysieren. Dies bietet sich vor allem für eine Fehleranalyse an. Dazu kann aus dem Intrexx-portal.log bei aktiviertem Request-Tracing der OData-HTTP-Request kopiert, im REST-Client ausgeführt und im Fehlerfall angepasst werden, um nicht unterstützte Funktionen zu vermeiden.

  • Silverlight-OData-Explorer

    Ein weiteres Tool zur Ausführung und Analyse von OData-Abfragen im Browser (benötigt Microsoft-Silverlight-Plugin), das Sie hier herunterladen können.

  • SAP Gateway

    Weiterführende Information zu SAP Gateway, Testumgebungen, Dokumentationen und How-Tos erhalten Sie im SAP Community Network.

  • Microsoft Visual Studio 2010

    Mit der Entwicklungsumgebung Visual Studio 2010 von Microsoft lassen sich mit geringem Aufwand eigene OData-Services auf Basis bestehender Datenbanken generieren und über den Microsoft Internet Information Server bereitstellen. Hier können Sie sie herunterladen.

Weitere Informationen

Allgemeines

Systemvoraussetzungen

Daten konsumieren

Integration in Applikationen

Verwendung in Prozessen