Connector für SAP Gateway - Appendix

Connectoren SAP Gateway

1. Troubleshooting

1.1. 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.

1.2. 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 http://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="http://GW.ESWORKPLACE.SAP.COM:80/sap/opu/odata/IWBEP/RMTSAMPLEFLIGHT_2/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<id>http://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>http://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="http://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>
...

1.3. Nicht unterstützte OData Funktionen

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.

2. Anhang

2.1. 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.

2.2. OData-Spezifikation

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

2.3. OData-Tools

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

3. Weitere Informationen

Allgemeines
Systemvoraussetzungen
SAP Gateway-Daten konsumieren
SAP Gateway-Daten in Applikationen einbinden
Export / Import