Odottavan aika on pitkä

Oletko koskaan yrittänyt saada Oracle Service Bus 10gR3, Oracle WebLogic Server 9.2.2 tai 10gR3 käynnistymään nopeasti Linux:lla (Oracle Enterprise Linux, Red Hat Linux minkään muulla distrolla)? Kestää hieman, eikö? No siihen on luonnollisestikin syy ja se on tämä (Bug ID: 6202721)tämä-ei-ole-bugi bugi normaalissa JVM toteutuksessa.

Käytännössä satunnaisluvun hankkiminen järjestelmältä tapahtuu käyttäen /dev/random tai /dev/urandom laiteita. Windowsilla nämä laitteet ohjautuvat käytännössä CryptoAPI:lle ja se toimii ihan hyvin. Linuxilla taasen /dev/random tuottaa siemenen satunnaisille luvuilleen käyttämällä entropy pool toimintoa joka on Oikein Ja Hienosti Tehty[tm]. Mutta jos satut toimimaan palvelimella, erityisesti palvelimella joka ei ole vielä käynnistänyt palveluitaan vielä – kuten nyt vaikkapa sovelluspalvelin – et tuota riittävästi entropiaa täyttääksesi altaitasi melkoiseen aikaan. Tämä taas johtuu siitä että entropia luodaan I/O operaatioilla, kuten levy- ja verkkoliikenteellä (jota siis et vielä tuota). Näin ollen erittäin satunnainen satunnaisuus jota /dev/random luo enemmänkin hankaloittaa kuin auttaa, koska kaiken käynnistys on ikävää ja hidasta.

Eli tämä on kohta jossa ystävämme /dev/urandom astuu kuvioon omalla ei-estävällä toiminnallaan ja vähemmän satunnaisella satunnaisuudellaan (mutta silti ihan kohtuullisella satunnaisuudella suurimpaan osaan käyttötarkoituksia). Paitsi että se tämä-ei-ole-bugi ohittaa /dev/urandomin. Luonnollisesti tähän on useita kiertomenetelmiä löydettävissä, mutta henkilökohtaisesti preferoin securerandom.source arvon muuttamista $JAVA_HOME/jre/lib/security/java.security-tiedostosta tällaiseksi: securerandom.source=file:/dev/./urandom. Nyt kaikki käynnistyy höyhenenkevyesti, juuri niinkuin kuuluukin.

Understanding Oracle SOA Suite lukuhetki

Satuinpas törmäämään uuteen (beta) dokumentaatioon Oraclen Fusion Middleware:sta ja sieltäpä löytyi useita hyvin kiinnostavia asioita. Luonnollisestikin dokkarit ovat vielä työn alla, joten siellä on aika paljon this space left intentionally blank kohtia, mutta näyttäisi siltä että tuosta tulee aika kattava dokumentaatio joka kivasti nitoo yhteen tuon laajan kokonaisuuden.

Joitain yllätyksiäkin tuli vastaan, kuten esimerkiksi se että Porttaali komponentin materiaalit näyttäisivät viittaavan vain OracleAS Portal:iin eikä siellä mainita WebLogic Portal:ia oikeastaan ollenkaan, paitsi nyt tietysti se että tuossa uudessa(?) OAS Portal versiossa on WSRP tuki ilmestynyt yhtäkkiä. Tosin täytyy sanoa että tietoturvan konfigurointi WRSP:lle vaikuttaa äkkisältään olevan melkoisen paljon työläämpää kuin WLP:lle. Kyseessä on toki ensimmäinen versio, joten varmasti tämäkin asia korjaantuu aikanaan.

Jokatapauksessa kannattaa ehdottomasti tsekata Oracle Fusion Middleware:n yleiskuvaus Administrator Guide:sta. Ja lisäksi kannattaa myös vilkaista Oracle Fusion Middleware Components-lista josta löytyy helposti linkit jokaisen komponentin dokumentaatioon (sekä tietysti listallakin on oma itseisarvonsa).

Enterprise Architect 7.5

Enterprise Architect on SE työkalu jota käytän isompiin mallintamisiin (Visio on parempi pikku juttuihin) ja on loistavaa lukea läpi kaikkia karkkeja mitä Sparxin runsaudensarvesta on tulossa. Olen erityisen kiinnostunut skriptauksesta, haluan edelleenkin mallintaa EA:lla mutta sitten ottaa sen mallin ja syöttää se omiin koodigeneraattorin mallipohjiin.

Luonnollisestikin pitää vielä käydä läpi päivitetyt MDG toteutukset, mutta kun viime kerran katsoin asiaa, niin kaikki ne temput mitä olisi pitänyt tehdä että saisin luotua MDG mallipohjat EA:lle meni liiallisuuksiin ja touhu meni nopeasti kauheaksi säädöksi. Mallin ja koodin mallipohjien yhteen sovitus on itsessään jo erinomaisen monimutkainen harjoitus ja sen kompleksisuuden hanskaaminen on ihan tarpeeksi ilman MDG:n omia jäykkyyksiä.

Myös liiketoimintasääntöjen ja -prosessien mallinnukseen liittyvät parannukset sekä ”strateginen mallinnus” kuullostaa erittäin kiinnostavalta, täytyy kahlaa läpi näitäkin heti kun löytyy aikaa. Tässä linkki Enterprise Architect:iin.