Zprovoznění vývojového prostředí CzechIdM

V tomto článku si ukážeme, jak jednoduché je zprovoznění vývojového prostředí CzechIdM. Stačí k tomu pouze základní vývojářské nástroje pro programování v Javě a zdrojové soubory CzechIdM. Tímto návodem se řídí i noví zaměstnanci BCV solutions s.r.o.

Potřebné programy a zdroje

Uvádím seznam programů, které jsou běžně dostupné zdarma na webu. Pro zprovoznění vývojového prostředí je třeba stáhnou a nainstalovat všechny v uvedené verzi. Jak si můžete všimnout, CzechIdM je zatím vyvíjeno na Javě 1.5. Posledním bodem jsou samotné zdrojové projekty CzechIdM. Ty v tuto chvíli nejsou k dispozici veřejnosti.

  • Stažení a instalace Javy 1.5.0_22 32-bit
  • Stažení a instalace jboss-5.1.0.GA
  • Stažení a instalace jboss-seam-2.2.2.Final
  • Stažení a nastavení Eclipse Juno (for Java EE Developers, stáhnout 64bit, protože 32bit při spuštění vrací chybovou hlášku 13)
  • Stažení CzechIdM repozitáře (jako verzovací systém je používán Git)

veronika-clanek-2

Nastavení nainstalovaných programů

Dále je uveden postup nastavení jednotlivých instalovaných částí. Postupně správně nastavíme JBoss, Eclipse a rozchodíme databázi MySQL. Návod je přizpůsoben nastavování na operačním systému Linux.

Nastavení JBoss

  • Nastavení správné Javy do JBoss:
    • Vstupte do složky, kde máte umístěný JBoss (konkrétně do jeho složky bin): ~/jboss-5.1.0.GA/bin
    • Ve složce bin je soubor run.conf – ten otevřeme např. pomocí Vim, odkomentujeme řádek začínající „JAVA_HOME=“ a přidáme do něj umístění nainstalované Javy 1.5 (např. „JAVA_HOME=“/home/person/Programy/jdk1.5.0_22_32bit““)

Nastavení Eclipse:

  • Nejprve nastavíme Javu takto:
    • Window -> Preferences -> Java -> Installed JREs -> Tlačítko Add… -> Standard VM – Next -> V dalším okně vyplníme JRE home adresou instalace naší Javy 1.5, pak ještě položku JRE name vyplníme přesně takto „jdk1.5.0_22-32bit“ a potvrdíme tlačítkem Finish
    • Dále ve Window -> Preferences -> Java -> Compiler nastavíme „Compiler compliance level“ na 1.5
  • Instalace JBoss Tools:
    • Help -> Eclipse Marketplace -> Vyhledat „JBoss“ a nainstalovat „JBoss Tools“ pro verzi Eclipse, kterou máte nainstalovanou (např. Juno)
  • Nastavení JBoss Tools:
    • Window -> Preferences -> JBoss Tools -> JBoss Runtime -> Tlačítko ADD a najít cestu k instalaci jboss-seam-2.2.2, poté zaškrtnout možnost hned vedle „Every start“ a potvrdit OK
  • Vytvoření JBoss serveru:
    • Window -> Show View -> Servers – tím se v dolní části Eclipse objeví nová záložka Servers
    • V záložce Servers klikneme pravým tlačítkem a dáme New -> Server -> JBoss Community -> JBoss AS 5.1 – Next -> Do položky „Home Directory“ najít instalaci JBoss v našem počítači a položku „JRE“ nastavit na JDK1.5.0_22-32bit a dát Next -> Nechat vše a další Next -> Finish
  • Import projektů CzechIdM:
    • Budeme importovat postupně tyto projekty:
      • czechIDM/Realization/BCV_IdM
      • czechIDM/Realization/BCV_IdM-ear
      • czechIDM/Realization/BCV_IdM-ejb
      • czechIDM/Realization/BCV_IdM-test
      • czechIDM/Realization/Utils/IdmUploader
    • Všechny stejným způsobem a to takto:
      • File -> Import -> General – Existing Projects into Workspace – Next -> Select root directory a Finish
  • Nastavení importovaných projektů (je třeba udělat to pro každý projekt zvlášť):
    • Project Properties -> Java Build Path a záložka Libraries – tam nastavit JRE System Library na jdk1.5.0_22-32bit
    • Project Properties -> Targeted Runtimes a zaškrtnout tam jboss
  • Projekt BCV_IDM-ejb navíc ještě:
    • Project Properties -> Java Build Path a záložka Order and Export a dát tam položku „JRE System Library [jdk1.5.0_22-32bit]“ nahoru (tlačítkem UP)

pozn.: $ „přikaz“ znamená, že se „příkaz“ zadává do konzole

Vytvoření MySQL databáze:

Důležitá část běžícího CzechIdM je databáze. Obsahuje jak definice všech workflow a jejich instance, tak i různé auditní logy, které monitorují provoz.
veronika-clanek-1

  • Vytvoření databáze (serveru):
    • Instalace databáze z repozitáře Linux:
      • Konkrétně balíčky MySQL databáze a MySQL-server
    • Inicializační příkazy do teminálu:
      • vypnout selinux, pokud běží
      • $ systemctl start mysqld.service (jednorázové spuštění služby)
      • $ chkconfig –levels 235 mysqld on (tím se nastaví pravidlo pro spuštění při startu systému)
      • $ /usr/bin/mysql_secure_installation
  • Konfigurace databáze:
    • Najděte konfigurační soubor MySQL. Měl by být buď v /etc/my.cnf nebo /etc/mysql/my.cnf. Případně jeho umístění zjistíte příkazem $ mysql –help | grep „Default options“ -A 1
    • Otevřete ho pro editaci (pokud neexistuje, zkopírujte ho z /usr/share/mysql/my_small.cnf a přejmenujte na my.cnf)
    • Do jednotlivých bloku (client, mysqld, mysq) doplnit následující:
      [client] 
      default-character-set = utf8 
      
      [mysqld]
      character_set_server = utf8
      character_set_client = utf8
      innodb_flush_log_at_trx_commit=0
      
      [mysql]
      default-character-set = utf8
    • Aby se změny projevily, restartujte mysql
      • $ systemctl stop mysqld.service
      • $ systemctl start mysqld.service
  • Příkazy pro vytvoření uživatele a databáze pro idm:
    • $ mysql -u root -p
    • > use mysql;
    • > create database bcv_idm_repository;
    • > create user ‚idmadmin’@’localhost‘ identified by ‚idmadmin‘;
    • > create user ‚idmadmin’@’127.0.0.1‘ identified by ‚idmadmin‘;
    • > grant all on bcv_idm_repository.* to ‚idmadmin’@’localhost‘;
    • > grant all on bcv_idm_repository.* to ‚idmadmin’@’127.0.0.1‘;
    • je potřeba doplnit do etc/hosts do řádky začínající na 127.0.0.1 položky název a nazev.localdomain (kde název znamená název počítače)
  • Naplnění databáze daty:
    • před plněním databáze je třeba spustit server, který jsme vytvořili dříve v Eclipse (vytvoří v databázi potřebné tabulky)
      • v Eclipse v záložce Servers kliknout pravým na námi vytvořený server a vybereme > Add and Remove
      • z dostupných přidáme BCV_IdM-ear a tři soubory ze složky BCV_IdM-ear/resources (pokud nejsou tyto soubory dostupné může pomoci restartovaní Eclipse po importu projektu)
      • na všech přidaných je třeba spustit > Full Publish
      • následně spustíme na serveru postupně >Clean, >Publish a >Start
      • pokud se za běhu serveru vyskytne chyba „libXext.so.6: cannot open shared object file: No such file or directory“ pak je třeba doinstalovat balícek libXp ( $ yum install libXp.so.6 )
    • $ mysql -u root bcv_idm_repository < czechidm/Realization/SQLScripts/initial_import.sql (pokud je na rootovi nastaveno heslo, tak ještě option -p s heslem) (před CzechIdM musí být cesta k vašemu staženému CzechIdM)
    • Alternativní možnost importu:
      • $ mysql -u root -p
      • > use bcv_idm_repository
      • > .\(cesta k initial_import.sql)
  • Nahrání workflow pomocí uploaderu do databáze:
    • V Eclipse otevřít (rozkliknout) projekt IdmUploader? -> src -> package eu.bcvsolutions.wfuploader
    • a otevřít v něm „conf.properties“ a změnit řádky „wf-path“ a „rule-path“ a „email-template-path“ – je potřeba nastavit tam správnou cestu od začátku až po /Realization/BCV_IdM…
    • Po upravení té cesty uložíme ten config (pomocí Ctrl + S)
    • Spustíme IdmUploader
  • Přihlásit se na CzechIdM:
    • Do internetového prohlížeče zadat adresu: localhost:8080/idm a přihlásit se pomocí login:admin heslo:admin a pak zadat localhost:8080/idm/wfs_redeploy.seam

Požadavky a konfigurace Seam Frameworku

  • TestNG
    • Instalace v záložce Help -> Eclipse Marketplace.. -> vyhledat „testng“ a nainstalovat
    • Je potřeba mít nainstalovanou správnou verzi pluginu k použivané knihovně testng
    • Další info na  http://testng.org/doc/eclipse.html
  • Project v Seam Frameworku (není nutný)
    •  http://docs.jboss.com/seam/latest/reference/en-US/html/gettingstartedwithjbosstools.html
    • Na formuláři „New Seam Project“ v části „Configuration“ bude asi potřeba kliknout na tlačítko „Modify“ a na následujícím formu zaškrtnout „Seam“ a „JSF“.
    • Po vytvoření nového projektu (ejb) zkontrolovat, že je v ejbModule/META-INF/persistance.xml nastavena property „hibernate.dialect“ na hodnotu „org.hibernate.dialect.MySQL5Dialect“
  • EclEmma(není nutný)
    • Nástroj pro Code coverage
    • Přidat plugin pomocí Help > Install New Software… > Add z  http://update.eclemma.org
    • Přibude další tlačítko pro spuštění projektu (spouští se stejně jako TestNG test – vybere se tam running konfigurace s TestNG)

Při nahrávání workflow z projektu Idm do databáze nelze nahrát některé workflow

Po spuštění IdmUploaderu vyhazuje chyby jako:

Incorrect string value: '\xC4\x8Det o...' for column 'source_code' at row 1

Je potřeba upravit kódování daného sloupce v dané tabulce v databázi:

ALTER TABLE `bcv_idm_repository`.`workflows_definitions` CHANGE COLUMN `source_code` `source_code` LONGTEXT CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL  ;

Závěr

V článku jsme si ukázali, co obnáší zprovoznit vývojové prostředí CzechIdM. Je třeba pár volně dostupných programů a trochu trpělivosti. Po úspěšném dokončení postupu v tomto článku dostane programátor základní verzi identity manageru, kterou může dále rozšiřovat podle potřeby. To může být například připojením systémů a modelováním různých procesů, jako je příchod nového zaměstanance, které jsou popsány v dalších článcích tohoto blogu. Máte-li otázky týkající se tohoto tématu, neváhejte se ozvat na email veronika.crkvova@bcvsolutions.eu.