ABRA API Tutoriál - Spuštění Web API
Pokud jste provedli potřebná nastavení, můžete pokračovat spuštěním Web API serveru. V produkčním prostředí se standardně spouští jako služba, ale my si ho pro účely našeho příkladu spustíme jako aplikaci.
Podrobnosti o instalaci Web API jako služby viz podrobný help, kap. Spuštění Web API serveru.
Spusťte si konzoli PowerShell (ve Windows stiskněte kombinaci kláves Win-X a z kontextového menu zvolte možnost "Windows PowerShell", případně "Windows PowerShell (jako správce)").
V konzoli spusťte Web API ze složky, ve které je skript APIServer.ps1 umístěn (ve výchozím nastavení se bude nacházet ve stejné složce jako AbraGen.exe):
C:\AbraGen\APIServer.ps1 -Action app
Pro suštění powershellového skriptu bude možná třeba ve Windows nastavit Execution Policies. Spusťte PowerShell a zadejte příkaz:
Get-ExecutionPolicy
Pokud Powershel vrátí hodnotu Restricted, pak skript nebude možné spustit. Spusťte tedy PowerShell znovu jako správce a zadejte příkaz:
Set-ExecutionPolicy -ExecutionPolicy
V režimu RemoteSigned již skript bude možné spustit.
V okně konzole se zobrazí informace o spuštění frameworku Javalin. Všimněte si informace o portu, na kterém server naslouchá. Mělo by se jednat o stejný port, který jste nastavili v předchozím kroku (v konfiguračním serveru APIServer.yaml).
Je spuštěn framework Javalin, http server (Web API server) naslouchá na portu 8082.
Okno konzole nezavírejte, Web API server byste tím ukončili.
Pokud se vám Web API server nepodařilo spustit (v okně příkazového řádku se zobrazily nějaké chyby), projděte si možné důvody uvedené v sekci TEST. Příčinu je možné zjišťovat též pomocí standardního logování systému ABRA Gen, viz též sekce TEST.
Dále viz podrobný help. Kap.: Web API.
1. Povedlo se spuštění Web API serveru? Tj. rozběhl se framework Javalin a v okně PowerShell konzole vidíte informaci o portu, na kterém Web API server naslouchá? Vidíte ve Správci úloh spuštěnou "OpenJDK Platform binary"?
Můžete pokračovat dál. Viz kap. ABRA API Tutoriál - Autentizace a kontrolní dotaz.
Pokud jste provedli správně nastavení dle kap. ABRA API Tutoriál - Nastavení a příprava rozhraní Web API, pak zkontrolujte následující:
-
Zda není v konfiguraci nastavený port (případně výchozí port 80) využíván jinou aplikací. Informace o obsazeném portu se zobrazí ve formě chyby (výjimky) v okně příkazové řádky při spouštění skriptu:
Web API server se nepodařilo spustit, protože port 80 využívá jiná aplikace.
V takovém případě může být řešením buď danou aplikaci (která port využívá) dočasně vypnout nebo změnit nastavení Web API na jiný port. Jak jsme zmínili v kap. ABRA API Tutoriál - Nastavení a příprava rozhraní Web API, defaultně je v šabloně nastavený port 80. Můžete si změnit port na nějaký dosud nevyužívaný, např. 8082. Tj. v souboru APIServer.yaml uvedete:
# server configuration server: # address and port to listen to ... port: 8082 ...
Dále viz podrobný help. Kap.: Nastavení Web API.
Pro výpis obsazených portů můžete využít např. příkaz netstat spouštěný z příkazové řádky.
-
Další příčinou může být firewall. V tom případě je třeba daný port ve firewallu povolit, tj. spustit konfigurační program "Firewall v programu Windows Defender s pokročilým nastavením" a přidat nové pravidlo.
Příklad nastavení pravidel firewallu ve Windows 10
Obdobný problém může způsobovat antivirový program.
-
Web API, které je součástí systému ABRA Gen od verze 21.3, není podmíněno provozem v síťovém režimu. Nicméně pokud aplikaci ABRA Gen v síťovém režimu provozujete, je zapotřebí před spuštěním Web API spustit aplikační server.
Pokud je v souboru Nexus.cfg parametr Local nastavený na hodnotu 0 a aplikační server není spuštěn, spuštění Web API se nezdaří:
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: ApiLib library initialization failed (check if application server is running) at apiserver.Main.main(Main.java:78) Caused by: java.lang.RuntimeException: ApiLib library initialization failed (check if application server is running) at apiserver.Main.main(Main.java:54)
-
Ve výchozím nastavení je spouštění PowerShell skriptů zakázané, což odpovídá výchozí politice "Restricted" v lokálním režimu (na Windows stanicích). Pokud se vám po spuštění souboru APIServer.ps1 zobrazí chybové hlášení podobné níže uvedenému, je zapotřebí politiku změnit a skript spustit znovu.
C:\AbraGen\APIServer.ps1 C:\AbraGen\APIServer.ps1 : File C:\AbraGen\APIServer.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
set-executionpolicy remotesigned Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y
C:\AbraGen\APIServer.ps1
Pokud se stále nedaří Web API spustit, zapněte si logování, které by vám mohlo pomoci v odhalení příčiny potíží. Pro účel samotného zprovoznění rozhraní Web API postačuje ponechat výchozí úroveň logování 1 (není nutné v konfiguračním souboru měnit hodnotu parametru level).