Lade...
 

Einrichten des WebService

Einrichten des WebService

ClassiX als WebService ohne Web-Server (HTTP-Server)

Damit ClassiX® als WebService angesprochen werden kann, müssen folgende Schritte vorgenommen werden:

  1. Der ClassiX® Client muss installiert werden
     
  2. In der classix.ini muss die DLL "cxivsa_EXT_" in die Liste der Dlls eintragen werden.
     
  3. Zur Einrichtung von HTTPS müssen über die Batch-Datei die folgenden Umgebungsvariablen gesetzt werden und die jeweiligen Dateien vorhanden sein.
    SET CX_HTTPS_KEY_FILE=%CX_ROOTDIR%\webservice\server.key
    SET CX_HTTPS_CERT_FILE=%CX_ROOTDIR%\webservice\server.crt
     
  4. Der Webservice sollte mit folgenden Befehlen über das "Web Service Cockpit" gestartet werden. Das Web Serive Cockpit zeigt alle ein- und ausgehenden Messages an.

    // Open web service window

    SendMsg(WEB_SERVICE_MANAGER)

    // Choose port 443 and start web services

    "TRUE PutValue(WebServiceWin, Port443Rdo) Widget(WebServiceWin, Port443Rdo) SendMsg(SELECT, DIRECT) Widget(WebServiceWin, StartBtn) SendMsg(SELECT, DIRECT)" SendMsg(TEST_WEB_SERVICE_MANAGER)

  5. Alternativ kann der WebService auch direkt gestartet werden. Dies wird am besten in der classix.cxp getan.
    GetManager(WEB_SERVICE) Call(Start)

    Der WebService muss dann unter Port 443 laufen. Dieser kann über

    443 GetManager(WEB_SERVICE) Put(port)
    gesetzt werden. Dieser Port ist aber im Manager WEB_SERVICE voreingestellt.

Als Test kann anschließend im Browser die folgende URL aufgerufen werden:

https://localhost/WEB_READ_EXECUTE?p=GetValue(ControlWin)

Als Ergebnis sollte im Browser folgende Fehlermeldung erscheinen :

{"status":"false", "statusMessage":"Cookie mit SessionID wurde nicht Übertragen"}

Auch der Zugriff von einem anderen ClassiX Client kann getestet werden.

DropAll
// Create HTTP Request COM Object
Var(g_winhttp)
CreateTransObject(CX_COM_OBJECT) -> g_winhttp
"WinHttp.WinHttpRequest.5.1" g_winhttp CallWeak(CreateFromProgID)
// Switch OFF error message about wrong certifacte keys
13056 4 g_winhttp Call(PutOption)
// Send a "POST" message with login data
"POST" "https://localhost/WEB_WRITE_LOGIN?sessionUserId=cx&password=cola" FALSE g_winhttp Call(Open)
// Receive data
g_winhttp Call(Send)
g_winhttp Call(GetResponseText)
// Show data
Attention

ClassiX als WebService mit Web-Server (HTTP-Server)

ClassiX® kann zudem über eine HTML-Oberfläche über einen Web-Browser angesprochen werden. In diesem Fall ist sowohl die Installation eines Web-Servers (HTTP-Server) und die Einrichtung eines ClassiX® Clients notwendig. Der Web-Server übernimmt hierbei zwei Aufgaben. Zum einen stellt er der HTML-Seiten bereit. Zum anderen werden von ihm die Anfragen (HTTP-Request) an den ClassiX® Client weitergeleitet.

Installation des Proxy-Servers (Evaluate)
  1. Die für die Installation notwendigen Installations- und Konfigurationsdateien sind im folgenden Verzeichnis in Perforce eingecheckt: Y:/ClassiX/Evaluate/WebService/ProxyServer/
  2. xampp-win32-1.8.3-1-VC11-installer.exe ausführen und möglicher Weise auftretende Fehlermeldungen und Warnungen ignorieren.
  3. Beim Dialog "Select Components" alles, was sich abwählen lässt, abwählen.
    proxy-select_components.png
  4. Installationsverzeichnis am besten bei C:\xampp belassen.
  5. Nach der Installation kann das XAMPP Control Panel gestartet werden.
  6. httpd.conf nach C:\xampp\apache\conf kopieren und die dortige Datei überschreiben.
  7. httpd-proxy.conf  und httpd-ssl.conf nach C:\xampp\apache\conf\extra kopieren und die dortigen Dateien überschreiben.
  8. Sollte das Installationsverzeichnis C:\xampp sein, dann weiter mit Schritt 10.
  9. In der httpd.conf Zeile 37 Verzeichnis anpassen zu INSTALLATIONSPFAD/apache
  10. In der httpd-ssl.conf Zeile 86 Verzeichnis anpassen. Die Wahl dieses Verzeichnisses ist beliebig. Von hier aus liest Apache die .html-Dateien, die es ausliefert.

    Verweist die Variable DocumentRoot auf ein Verzeichnis außerhalb des Proxy-Server Verzeichnis, wie das im folgenden Beispiel der Fall ist, so müssen spezielle Eigenschaften für dieses Verzeichnis definiert werden. (Die folgenden Zeilen müssen in httpd-ssl.conf hinein geschrieben werden. Zeile 86.)

    DocumentRoot "Y:/ClassiX/Evaluate/WebService/htdocs"
    
    <Directory "Y:/ClassiX/Evaluate/WebService/htdocs">
       Options Indexes FollowSymLinks Includes ExecCGI
       AllowOverride All
       Require all granted
    </Directory>

     

  11. In der httpd-ssl.conf Zeile 89+90 Verzeichnisse entsprechend anpassen.
  12. Für den Aufruf einer "/view/" url, d.h. den direkt Aufruf eines Fensters in ClassiX, muss im "htdocs" Verzeichnis ein ".htaccess" Eintrag wie folgt eingefügt werden :
  13. Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^view/(.*)$ /index.html#/view/$1 [R,QSA,NC,NE,L]
  14. Jetzt kann man über das XAMPP Control Panel(Startmenü) starten und den Apache-Server starten.
  15. Browser starten und https://localhost aufrufen.
Zugriff auf den ClassiX® WebService über den Proxy-Server

Der ClassiX® muss unter dem Port 444 laufen.

444 GetManager(WEB_SERVICE) Put(port)
FALSE GetManager(WEB_SERVICE) Put(useSSL)
GetManager(WEB_SERVICE) Call(Start)

Sind anschließend beide Server gestartet, dann kann über die URL https://127.0.0.1/send/MESSAGENAME eine Nachricht an das ClassiX®-System abgesetzt werden. Alle URLs, die nicht mit /send/ anfangen, werden als Dateien relativ zum in Schritt 9 konfigurierten Verzeichnis (default: C:\xampp\htdocs) interpretiert. Dort werden sämtliche Bilder/HTML-Dateien/Script-Dateien etc. abgelegt.

Zertifikat installieren

Da der Server ein eigenes Zertifikat nutzt, wenn er über HTTPS angesprochen wird, sollten die Browser eine Warnmeldung ausgeben, wenn versucht wird die Seite über https://localhost zu öffnen. Wie man das Problem behebt, steht hier beschrieben.

Anpassungsmöglichkeiten

Die Datei C:\xampp\apache\conf\extra\httpd-proxy.conf sollte folgende zwei Zeilen enthalten:

14   ProxyPass /send/ http://127.0.0.1:444/ keepalive=On retry=1 acquire=3000 timeout=600 connectiontimeout=10
15   ProxyPassReverse /send/ http://127.0.0.1:444/

Einrichten von Weiterleitung auf eine andere Maschine

Sollten Proxy-Server und die ClassiX-Instanz nicht auf der gleichen Maschine laufen, dann muss die IP-Adresse oben durch die entsprechende Adresse der Maschine ausgetauscht werden, auf welcher die ClassiX-Instanz läuft. Dabei kann es sich auch um den Hostnamen handeln.

Wechseln zwischen HTTPS und HTTP

Allgemeines Kommunikationsschema:

Browser <===[HTTPS]===> Proxy <===[HTTPS oder HTTP]===> ClassiX

Wenn in diesen Zeilen das Protokoll http durch https ersetzt wird, dann werden die Anfragen, die beim Proxy eingehen nicht in normalem HTTP (Klartext), sondern als HTTPS (verschlüsselt) an die ClassiX-Instanz weitergleitet.
Sollten Proxy und Classix-Instanz auf der gleichen Maschine laufen, ist die Nutzung von HTTP unkritisch, da die im Klartext übertragnen Anfragen (und evt. auch Passwörter) nicht abgefangen werden können. Sollten Proxy und Classix auf verschiedenen Maschinen laufen, die durch ein unsicheres Netzwerk verbunden sind, sollte HTTPS auch zwischen Proxy und ClassiX in betracht gezogen werden.

Die Verwendung von HTTPS zwischen Proxy und ClassiX hat zum einen einen Performance-Nachteil, zum anderen leidet die Stabilität der Web-Anwendung darunter. Bisher kommt es immer wieder vor, dass der Proxy von der ClassiX-Instanz Antworten erhält, die er für ungültig empfindet. Es ist daher ratsam, wenn möglich ClassiX und Proxy auf der gleichen Maschine zu starten und HTTP zwischen ClassiX und Proxy zu nutzen.

Sollte kein Proxy verwendet werden und ClassiX direkt angesprochen (durch einen Browser oder Webservice) angesprochen werden, dann ist die Nutzung von HTTPS unkritisch.

Entsprechend der Konfiguration des Proxys muss auch die ClassiX-Instanz so konfiguriert werden, dass beide das gleiche Protokoll benutzen. Standardmäßig ist für ClassiX HTTPS aktiv. Zum Deaktivieren von HTTPS muss folgender Code ausgeführt werden:

FALSE GetManager(WEB_SERVICE) Put(useSSL)

Die Verbindung zwischen Proxy und Browser sollte aus Sicherheitsgründen nie auf HTTP umgestellt werden, da so sämtliche Formulardaten (somit auch Benutzernamen und Passwörter) in Klartext übertragen und von Dritten mitgelesen werden können.

Ändern des Ports auf welchem die ClassiX-Instanz Anfragen entgegennimmt

Portverwendung in der Standartkonfiguration:

Browser ====>[Port443] Proxy ====>[Port444] ClassiX
             \--------- gleiche Maschine-----------/

In der oben vorgeschlagenen Konfiguration werden Anfragen vom Proxy-Server auf den Port 444 der ClassiX-Instanz weitergereicht. Sollte der Port auf der Zielmaschine bereits durch ein anderes Programm in Benutzung sein, dann kann der Webservice dort nicht gestartet werden und es muss ein anderer Port verwendet werden.

Dazu muss in der Konfigurationsdatei der Port auf einen freien Port geändert werden und in InstantView muss dieser ebenfalls angepasst werden (bevor der Service gestartet wird). Sollte kein Port angegeben werden, startet sich die ClassiX-Instanz standardmäßig auf Port 443. Dieser kann in der Konfigurationsdatei jedoch nicht verwendet werden, da der Proxy-Server bereits auf diesem Port läuft.

neuerPort GetManager(WEB_SERVICE) Put(port)

Ändern des Weiterleitungsverzeichnisses

In der Standartkonfiguration werden alle Anfragen, die mit der URL /send/*** aufgerufen werden an die ClassiX-Instanz mit der URL /*** weitergegeben. Alle anderen Aufrufe werden als Zugriffe auf Dateien relativ zum DocumentRoot (siehe Punkt 10 der Installation) des Proxys interpretiert. Diese Einstellung hat zur Folge, dass ein Verzeichnis, welches "send" heißt im Proxy nicht an den Browser ausgeliefert werden kann.

Wird in der Konfiguration die URL /send/ durch / ersetzt, dann werden alle Anfragen, die an den Proxy kommen an die ClassiX-Instanz weitergeleitet.

Verwandte Themen

InstantView Scriptsprache