---
title: "Manorivile-Gateway diegimas"
url: "https://gidas.rivile.lt/internetiniai_moduliai/api_rest/manorivile-gateway"
updated: "2024-10-23"
parent: "https://gidas.rivile.lt/internetiniai_moduliai/api_rest.md"
---

# Manorivile-Gateway diegimas

Manorivile-Gateway instaliuojamas kompiuteryje, kuris turi prieigą prie Rivile GAMA duomenų bazės. Aplikacija diegiama kaip Windows Service paketas.


[toc]

## Manorivile-Gateway diegimas

### Reikalavimai kompiuteriui
* Operacinės sistemos reikalavimai [https://www.java.com/en/download/help/sysreq.html](https://www.java.com/en/download/help/sysreq.html)
* Interneto prieiga prie adreso `gateway.manorivile.lt` porto `5671`.
* Prieiga prie jūsų sukonfigūruoto SQL duomenų bazės porto. Duomenų bazės portas [turi būti statinis](https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/connect/static-or-dynamic-port-config).

### Prieš pradedant

Prieš diegiant REST API v2 ryšio kanalą turite užsakyti REST API paslaugą ir gauti prisijungimo kodus, kurie bus reikalingi tolimesniems nustatymams. Sukuriant pirmąją jungtį reikalinga pateikti informaciją:

* Rivile GAMA programos valdytojo įmonės pavadinimas, įmonės kodas, e-mail

* Rivile GAMA įmonės identifikacijos nr (pvz: `01`)

* Rivile GAMA įmonės bazinės valiutos kodas (pvz: `EUR`)

* Rivile GAMA duomenų bazės vardas (pvz: `NAU_IMONE`)

* DB: MSSQL ar SYBASE (pvz: `MSSQL`)

* Rivile GAMA WEB adresas (pvz: `55245597`)

  ![image-20200220163645418](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/image-20200220163645418.png)

  ![image-20200220163852088](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/image-20200220163852088.png)

### Diegimo instrukcija

#### 1. Sudiegiamas komunikatorius (gateway)

**1.1. Parsisiunčiama naujausia versija iš Rivile SharePoint.** 

Norint parsisiųsti naujausią ManoRivile-Gateway versiją, priklausomai nuo operacinės sistemos spauskite ant nuorodos:

- [Jeigu operacinė sistema 32bit](https://manorivile.sharepoint.com/:u:/s/downloads-public/EXLdZWWPo_JNuPBK9ND3LywBBZaQo0IsAT1jMYaNIZLdtA?e=h0eYBQ&download=1)
- [Jeigu operacinė sistema 64bit](https://manorivile.sharepoint.com/:u:/s/downloads-public/Eckh0vTcVTxLtVT-GDZOxnUB-XSwXR4gExlOxTh1xyzYyg?e=rUGcEZ&download=1)

ManoRivile-Gateway instaliacinių failų [archyvas](https://manorivile.sharepoint.com/:f:/s/downloads-public/Ev-kceAfDPtGn2p2xGgDVQIBXhCudRoKR2uuQ3rqr7jF8A?e=LTuQhL).

**1.2. Išpakuojami failai į `C:/Manorivile-Gateway` katalogą** 

**1.3. Sukonfigūruojamas prisijungimas prie ryšio kanalo gateway.manorivile.lt**

išpakuotame kataloge pakoreguojamas failas `global.properties` su teksto redaktoriumi (pvz. Notepad). Įterpiami nustatymai gauti užsakant paslaugą, pvz.:

```properties
broker.username=*******
broker.password=**************************************
```

Nuo **1.2.0 Gateway** versijos taip pat parenkama tinkama parametro `response.returnStrings` reikšmė (žemesnėse versijose šis parametras visada lygus false ir jo keisti negalima). Jeigu parametro reikšmė - true, visi JSON formatu grąžinamo atsakymo laukai yra string tipo. 

Rekomenduojama šią reikšmę nustatyti į true, jeigu dirbama su JSON formato failais. Šis nustatymas padeda spręsti problemą, kai prekių, paslaugų, klientų grupių ir t.t. kodavimui naudojami skaičiai ir taškas.

```properties
response.returnStrings=true
```

**Pavyzdys.** Jeigu Rivile GAMA sistemoje yra du skirtingi prekių kodai – „301“ ir „301.“, parametro reikšmė `response.returnStrings` – false, JSON formatu gautame atsakyme prekių kodai bus automatiškai paversti į skaičių.

```json
{
    "N17": [
        {
            "Row_number": 1,
            "N17_KODAS_PS": 310,
			...
            "N17_PAV": "Arbata",
			...
        },
        {
            "Row_number": 2,
            "N17_KODAS_PS": 310,
			...
            "N17_PAV": "Arbata su vaisiais",
			...
        }
    ]
}

```

Tuo atveju, kai parametro `response.returnStrings`reikšmė nustatotma true:

```json
{
    "N17": [
        {
            "Row_number": "1",
            "N17_KODAS_PS": "310",
			...
            "N17_PAV": "Arbata",
			...
        },
        {
            "Row_number": "2",
            "N17_KODAS_PS": "310.",
			...
            "N17_PAV": "Arbata su vaisiais",
			...
        }
    ]
}
```



#### 2. Nustatomas prisijungimas prie DB

Išpakuotame kataloge kiekvienai DB sukuriamas atskiras `dbxxx.properties` failas su prisijungimo informacija, kur `dbxxx` - atitinkamos SQL duomenų bazės vardas (pavyzdiniai nustatymus galima rasti *gama_example.properties* faile).

> **Dėmesio:** Svarbu: failo pavadinimas turi būtinai sutapti su duomenų bazės vardu!

Priklausomai kokį DB serverio MS SQL ar SYBASE (SQL Anywhere) nustatymai detalizuoti žemiau:

##### 2.1. Prisijungimas prie MS SQL DB

Sukurtame faile `dbxxx.properties` su teksto redaktoriumi (pvz. Notepad) nustatome prisijungimus:

* Jeigu jungiamasi prie DB "Windows authentification". 

  ```properties
  db.url=jdbc:sqlserver://localhost:1433;databaseName=dbxxx;integratedSecurity=true;applicationName=ManoRivile
  ```

Svarbu atkreipti dėmesį, kad jungiantis šiuo metodu SQL Serveryje turi būti suteiktos teisės "ManoRivile-Gateway" servisui, kokiu vartotoju jis paleistas. Pagal nutylėjimą startuojamas kaip "Local system account", tuomet SQL'e turi būti suteiktos teisės "NT AUTHORITY\SYSTEM" vartotojui.

* Jeigu jungiamasi vartotoju ir slaptažodžiu

  ```properties
  db.url=jdbc:sqlserver://localhost:1433;databaseName=dbxxx;applicationName=ManoRivile
  db.username=sukurto_vartotojo_vardas
  db.password=sukurto_vartotojo_slaptažodis
  ```

* Jeigu reikalinga nurodyti SQL serverio instance, nutatymai atrodytų taip:

  ```properties
  db.url=jdbc:sqlserver://server1;instanceName=instance1;integratedSecurity=true;databaseName=dbxxx;applicationName=ManoRivile
  ```

<details markdown="1">
<summary>
<a>MS SQL Server TCP/IP nustatymai</a>    
</summary>

Įsitikinkite, kad MS SQL server yra sukonfigūruotas priimti užklausas per TCP/IP protokolą:

  1. Sql Server Configuration Manager reikia įjungti TCP/IP protokolą: 

  ![img](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/clip_image002.jpg)

  Ir nustatyti TCP portą 1433: 

  ![img](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/clip_image004.jpg)
</details>

<details markdown="1">
<summary>
<a>MS SQL Server vartotojo teisių nustatymai</a>    
</summary>
SQL serveryje turi būti įjungta SQL autentifikacija (esant poreikiui jungtis vartotoju vardu):

  ![img](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/clip_image002-1581337627719.jpg) 

  Sukurtas arba esamas vartotojas turi būti su **db owner** teisėmis prie norimos duomenų bazės: 

  ![img](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/clip_image004-1581337627719.jpg)

  ![img](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/clip_image006.jpg)

</details>

##### 2.2. Prisijungimas prie SYBASE (SQL Anywhere)

Sukurtame faile `dbxxx.properties` su teksto redaktoriumi (pvz. Notepad) nustatome prisijungimus:

```properties
db.type=sybase
db.host=localhost
db.port=2638
db.db=dbxxx
db.username=username
db.password=password
db.connectionInitSQL=
db.timestampFormat=YYYY-MM-DD HH:NN:SS.SSS //Nuo 1.2.3 versijos. Parametras nėra privalomas.
```

* Jeigu naudojama ne OEM SQL Anywhere versija, eilutę `db.connectionInitSQL=` reikia ištrinti.
* Parametras `db.timestampFormat=` leidžia pakeisti datos formatą.

#### 3. Paleidimas 

Komunikatorius paleidžiamas kaip Windows Servisas

Paleidžiamas `install.bat` failas administratoriaus teisėmis "run as administrator":

![image-20200210140256494](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/image-20200210140256494.png)

Tuomet susikuria ir startuojasi naujas Windows Servisas "**ManoRivile-Gateway**":

![image-20200210140505875](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/image-20200210140505875.png)

![image-20200210140539457](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/image-20200210140539457.png)

#### 4. Testavimas

Ar sistema veikia galite įsitikinti tiesiog kviesdami API užklausą per [Postman](https://www.postman.com/) ar kitą aplikaciją (reikalingas API raktas).
curl užklausos pavyzdys:

```bash
curl --location --request GET 'https://api.manorivile.lt/client/ping' \
--header 'ApiKey: **************************************'
```

rezultatas:

```json
{
    "message":"Sėkmingai prisijungta",
    "connectedSuccessfully":true
}
```

## Manorivile-Gateway atnaujinimas

#### 1. Išdiegiamas esamas komunikatorius

1.1. Paleidžiamas `remove.bat` failas administratoriaus teisėmis "run as administrator":

![clip_image007](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/clip_image007.jpg)

1.2. Iš katalogo **`C:/Manorivile-Gateway`** pašalinami visi failai išskyrus *.properties failus.

1.3. Katalogas **`C:/Manorivile-Gateway`** pervadinimas. Atnaujinus versiją šis failas galės bus ištrintas.



#### 2. Įdiegiamas naujas komunikatorius

**2.1. Parsisiunčiama naujausia versija iš Rivile saugyklos.** 

Norint parsisiųsti naujausią ManoRivile-Gateway versiją, priklausomai nuo operacinės sistemos spauskite ant nuorodos:

- [Jeigu operacinė sistema 32bit](https://manorivile.sharepoint.com/:u:/s/downloads-public/EXLdZWWPo_JNuPBK9ND3LywBBZaQo0IsAT1jMYaNIZLdtA?e=h0eYBQ&download=1)
- [Jeigu operacinė sistema 64bit](https://manorivile.sharepoint.com/:u:/s/downloads-public/Eckh0vTcVTxLtVT-GDZOxnUB-XSwXR4gExlOxTh1xyzYyg?e=rUGcEZ&download=1)

ManoRivile-Gateway instaliacinių failų [archyvas](https://manorivile.sharepoint.com/:f:/s/downloads-public/Ev-kceAfDPtGn2p2xGgDVQIBXhCudRoKR2uuQ3rqr7jF8A?e=LTuQhL).

**2.2. Išpakuojami failai į `C:/Manorivile-Gateway` katalogą**. 

**2.3. Iš senojo komunikatoriaus katalogo nukopijuojami visi \*.properties failai, išskyrus `queues.properties`**



#### 3. Paleidimas

Komunikatorius paleidžiamas kaip Windows Servisas.

Paleidžiamas `install.bat` failas administratoriaus teisėmis "run as administrator":

![image-20200210140256494](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/image-20200210140256494.png)

Tuomet susikuria ir startuojasi naujas Windows Servisas "**ManoRivile-Gateway**":

![image-20200210140505875](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/image-20200210140505875.png)

![image-20200210140539457](https://gidas.rivile.lt/user/pages/010.internetiniai_moduliai/10.api_rest/0050.manorivile-gateway/image-20200210140539457.png)

#### 4. Testavimas

Ar sistema veikia galite įsitikinti tiesiog kviesdami API užklausą per [Postman](https://www.postman.com/) ar kitą aplikaciją (reikalingas API raktas).
curl užklausos pavyzdys:

```bash
curl --location --request GET 'https://api.manorivile.lt/client/ping' \
--header 'ApiKey: **************************************'
```

rezultatas:

```json
{
    "message":"Sėkmingai prisijungta",
    "connectedSuccessfully":true
}
```

## Pasitaikančios klaidos ir sprendimai

Daugelį klaidų Manorivile-Gateway rašo į failą `log/manorivile-gateway.log`.

| Nr   | Klaida                                                       | Problema / galimas sprendimas                                |
| ---- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 1    | nėra klaidos, bet neveikia API                               | a) Galimai blogai užvadintas duomenų bazės nustatymų failas *dbxxx.properties* - *dbxxx* turi būtinai sutapti su duomenų bazės pavadinimu<br />b) Kai sudiegiate Manorivile-Gateway palaukite 5min, kol sistema sinchronizuosis<br />c) API raktas neteisingas ar negaliojantis |
| 2    | ERROR Error for database *dbxxx*: JZ006: Caught IOException: java.net.ConnectException: Connection refused: connect | Blogai sukonfigūruotas prisijungimas prie SQL serverio arba duomenų bazės - patikrinkite *dbxxx.properties* failo nustatymus |
| 3    | ERROR Failed to initialize pool: Cannot open database "*dbxxx*" requested by the login. The login failed | Blogai sukonfigūruotas vartotojo prisijungimas prie DB arba nesuteiktos reikalingos teisės nustatytam vartotojui - patikrinkite *dbxxx.properties* failo nustatymus arba suteikite vartotojui reikalingas teises SQL serveryje |
| 4    | ERROR ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile | a) Blogai nustatytas *global.properties* prisijungimo duomenys, sutikrinkite ir pataisykite prisijungimo duomenis pagal pateiktus iš Rivile.<br />b) Nei viena DB nesužregistruota MANORIVILE posistemėje. |
| 5    | WARN  Invalid length parameter passed to the RIGHT function. | Problema MS SQL duomenų bazėje, jeigu įjungtas procedūrų ir funkcijų replikavimas. Replikuojamose bazėse susikuria duomenų bazių trigeriai (Database triggers).<br/>Per Rivile API v2 kuriamos stored procedūros yra kriptuotos (WITH ENCRYPTION), todėl tiek jas kuriant tiek atnaujinant, trigerius reikia išjungti (disable). Pakeitimai turi būti daromi tik ant nereplikuojamų objektų.<br/>Atnaujinus procedūras trigerius reikia vėl įjungti.<br/>Problema MS SQL duomenų bazėje, jeigu įjungtas procedūrų ir funkcijų replikavimas.<br/>Per Rivile API v2 kuriamos stored procedūros, papildomos vidinės lentelės ir view‘ai, todėl tiek kuriant tiek atnaujinant, replikavimo trigerius reikia išjungti (disable):<br/>`disable TRIGGER [MSmerge_tr_alterschemaonly] ON DATABASE` <br/>`disable TRIGGER [MSmerge_tr_altertable] ON DATABASE` <br/>`disable TRIGGER [MSmerge_tr_altertrigger] ON DATABASE` <br/>`disable TRIGGER [MSmerge_tr_alterview] ON DATABASE`<br/>Atnaujinus procedūras trigerius reikia vėl įjungti: <br/>`enable TRIGGER [MSmerge_tr_alterschemaonly] ON DATABASE` <br/>`enable TRIGGER [MSmerge_tr_altertable] ON DATABASE` <br/>`enable TRIGGER [MSmerge_tr_altertrigger] ON DATABASE` <br/>`enable TRIGGER [MSmerge_tr_alterview] ON DATABASE` |
| 6    | WARN  CREATE PROCEDURE permission denied in database '*dbxxx*'. | Nustatytas SQL vartotojas neturi teisių kurti procedūras. Arba pakeiskite SQL vartotoją arba suteikite nustatytam vartotojui reikiams teises (db_owner) |
| 7    | ERROR The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "The server selected protocol version TLS10 is not accepted by client preferences \[TLS13, TLS12\]" | Jūsų naudojama MS SQL versija nepalaiko TLS 1.2 protokolo. Įdiekite [naujausius jūsų MS SQL versijai taikomus atnaujinimus](https://learn.microsoft.com/en-us/troubleshoot/sql/releases/download-and-install-latest-updates#latest-updates-available-for-currently-supported-versions-of-sql-server) (angl. Service Pack bei Cumulative Update). |
| 8    | Entry Point Not Found: The procedure entry point K32EnumProcessModules could not be located in the dynamic link library KERNEL32.dll. | Operacinė sistema, kurioje bandote paleisti Manorivile-Gateway, yra nesuderinama su Rivile API v2, pavyzdžiui, Windows Server 2003. Suderinamų operacinių sistemų versijos nurodytos [Java puslapyje](https://www.oracle.com/java/technologies/javase/products-doc-jdk8-jre8-certconfig.html). |
| 9    | SQL Anywhere Error -638: Right truncation of string data     | API paduodamuose duomenyse yra perduodamas laukas, kuris yra ilgesnis nei leistinas. a) sutavrkyti duomenų perdavimą b) SQL Anywhere serveryje nustatyti “string_rtruncation OFF” (http://dcx.sybase.com/1200/en/dbadmin/string-rtruncation-option.html) |
| 10   | Java.sql.SQLException: JZ0SJ: Metadata accessor information was not found on this database. Please install the required tables as mentioned in the jConnect documentation. | Išjungti Sybase duomenų bazės Jconnect driver'iai. Reikia įjungti. Tai galima atlikti naudojant užklausą: "ALTER DATABASE Upgrade JCONNECT ON". </br>Svarbu: tam, kad ši užklausa veiktų negali būti jokio prisijungimo (connection) prie duomenų bazės (naudojant SQL Anywhere central'ę galima atjungti visus vartotojus ir paleisti užklausą). </br>Instaliuojant Sybase naujai yra galimybė pažymėti "Install jConnect drivers". |
| 11   | No response received from client gateway                     | „No response received from client gateway“ indikuoja, kad arba kliento pusėje buvo išsijungęs gateway, arba duomenų bazė neatsakė. Reiktų pažiūrėti ką tuo metu rodo gateway loguose kliento serveryje. |
| 12   | INSERT failed because the following SET options have incorrect settings: 'ARITHABORT'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations. | Reikia pakelti MS SQL compatibility lygį iki 100.            |




## Veiksmų žurnalas (angl. log)

Sprendžiant Rivile APIv2 problemas kartais prireikia detalesnės informacijos. Problemų sprendimui skirtą veiksmų žurnalą galite įjungti Manorivile-Gateway kataloge faile `global.properties` pakeitę parametrą: 

```properties
debug.enabled=true
```

Po įjungimo API užklausos, jų rezultatai ir kiti pranešimai fiksuojami faile `manorivile-gateway.log`, kuris standartiškai išsaugomas Manorivile-Gateway `log` kataloge.

> **Įspėjimas:** Šis veiksmų žurnalo režimas yra skirtas tik problemų sprendimui! Jeigu siunčiama daug API užklausų, šio režimo metu `manorivile-gateway.log` failas gali pasidaryti labai didelis - kartais perpildyti diską. Į šį failą taip pat gali patekti daug konfidencialios informacijos. Dėl to primygtinai rekomenduojame po veiksmų nuskaitymo parametrą išjungti, o žurnalo failo kopiją iš Manorivile-gateway katalogo ištrinti.

Detalaus veiksmų žurnalo išjungimas:

```properties
debug.enabled=false
```
