2016-11-29 2 views
0

Konsequent zu WSO2 API Manager 2.0.0 : white screens after installing https certificate, Ich habe gerade eine frische neue WSO2 API Manager (Single Node) von der 2.0.0 Zip-Verteilung mit installiert MySQL-Datenbank versucht, Probleme im Zusammenhang mit der H2-Datenbank zu vermeiden.WSO2 API Manager 2.0.0: weißer Bildschirm auf der Anwendungsansicht Bildschirm als Systemdienst

Nachdem die Installation abgeschlossen ist, startet es ohne Warnung und ohne Fehler (nach ein paar Versuchen, alles in master-datasources.xml richtig zu bekommen).

Im Publisher kann ich mich als Admin anmelden, eine neue API erstellen, swagger json Vertrag importieren, API ohne Probleme abschließen.

Im Laden kann ich mich als Admin anmelden, die API, die ich gerade erstellt habe, erstellen Sie eine neue Anwendung über das rechte Dropdown-Menü, abonnieren Sie es.

ABER wenn ich versuche, eine Anwendung zu öffnen, um Schlüssel und Token zu generieren, bekomme ich nur einen weißen leeren Bildschirm. Nichts kann mich in den Protokollen helfen:

[29/Nov/2016:16:17:33 +0100] "GET /store/site/pages/application.jag?name=MyNewApp&tenant=carbon.super HTTP/1.1" 200 3 "https://10.22.106.101:9443/store/site/pages/applications.jag?tenant=carbon.super" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0" 

EDIT: Wenige Minuten nach bekomme ich die Seite crash (vielleicht nicht verwandt?) Ich habe diesen Druck wiederholt in wso2carbon.log:

WARN {sun.rmi.transport.tcp.TCPTransport$AcceptLoop} - RMI TCP Accept-11111: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,localport=11111] throws {sun.rmi.transport.tcp.TCPTransport$AcceptLoop} 
java.lang.OutOfMemoryError: unable to create new native thread 

Auch dies ist eine einfache Installation (unzip), die in die MySQL-Datenbank ohne Anpassung/Konfiguration eingesteckt wird.

EDIT 2: Also ich denke, ich habe die Ursache gefunden, aber nicht die Lösung. Dieses Problem tritt nicht auf, wenn ich über die direkte Befehlszeile zu starten, kommt es nur, wenn ich durch systemd Dienst starten:

sudo sytemctl start wso2am.service 

/etc/systemd/system/wso2am.service:

[Unit] 
Description=WSO2 API Manager 

[Service] 
User=linc 

ExecStart=/bin/bash -c ". /etc/profile.d/setenv.sh; /home/linc/wso2am-2.0.0/bin/wso2server.sh start" 
Type=forking 

[Install] 
WantedBy=multi-user.target 

So ist WSO2 nicht kompatibel mit Systemstart? oder fehlt mir ein Parameter?

+0

Nichts auf wso2carbon.log hilft?oder in der Browserkonsole? – Bee

+0

Genau. Was kann ich tun, um einige Logs irgendwo erscheinen zu lassen? Was versucht dieser "application.jag" aufzurufen? Kann ich es anders nennen? – Tristan

+1

Zum Debuggen können Sie einige Protokolle in 'repository/deployment/server/jaggeryapps/store/site/blocks/application/application-view/block.jag' einfügen und sehen, wo es fehlschlägt. Setzen Sie 'new Log(). Info (" Diese Zeile ist erreicht ");' an einigen Stellen und sehen Sie, wo es bricht. – Bee

Antwort

1

Ich habe this blog post gefolgt, um APIM als Linux-Dienst zu betreiben. Bitte guck dir das an. Es sollte ohne Probleme funktionieren. (Stellen Sie sicher, #!bin/sh an der Spitze der myService.sh hinzufügen)

+0

Ok danke, es sieht gut aus. Ich denke, die Verwendung von "Type = Forking" war nicht kompatibel mit der Art, wie WSO2 funktioniert und einige Subprozesse wurden beendet. – Tristan

+1

Sie müssen "sudo" vor jedem systemctl-Befehl verwenden und Sie müssen "sudo systemctl daemon-reload" nach jeder Änderung, die auf eine .service-Datei angewendet wird, verwenden – Tristan

0

Endlich habe ich WSO2 API-Manager als Systemd Dienst ausgeführt wird.

Das ist mein 'wso2apim.service' Datei


[Unit] 
Description=WSO2 API Manager 

[Service] 
Environment= JAVA_HOME=/usr/lib/jvm/java-8-oracle 
WorkingDirectory=/opt/wso2/wso2am-2.0.0 
User=wso2 
ExecStart=/bin/bash /opt/wso2/wso2am-2.0.0/bin/wso2server.sh 
ExecStop= /bin/bash -c '/opt/wso2/wso2am-2.0.0/bin/wso2server.sh stop' 
ExecReload=/bin/bash -c '/opt/wso2/wso2am-2.0.0/bin/wso2server.sh restart' 

[Install] 
WantedBy=multi-user.target 

Es ist einfach, aber schwierig

  1. Der Service-Typ ist einfach (nicht blechen oder entweder). (Standardwert)
  2. Der ExecStart muss die Option 'Start' nicht enthalten. Mit der Start-Option, versucht es, eine nohup, die nicht
  3. arbeitet aber hat der Anschlag die Stopp-Optionen umfassen

Hoffe, es

+0

Sind Sie sicher, dass Sie "RemainAfterExit = yes" nicht benötigen? Da die Shell beendet werden sollte, nachdem wso2server seinen Java-Subprozess gestartet hat, wird Ihr Service von systemd als beendet betrachtet. – Tristan

Verwandte Themen