Connector für SAP Gateway

Troubleshooting

Fehlermeldungen

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

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.

Anhang

SSL Verbindungen

Für SSL Verbindungen zwischen dem Intrexx Portal Server 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 Server die Prüfung der "Certificate Chain" deaktiviert werden. Dies ist auf Service Ebene über eine System Property möglich. Öffnen Sie dazu die Datei <INTREXX_HOME>/org/<PORTAL_NAME>/internal/cfg/portal.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 unter folgender URL:
http://www.odata.org/

OData Tools

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