Testování EJB

V poslední době jsem byl nucen se věnovat vývoji aplikace s nálepkou Enterprise a to tak, že používám EJB. Možná někdy časem budu moci prozradit, co je to za aplikaci a přidat nějaké informace o tom, jak jsem co navrhoval a realizoval, zatím však budu mlčet jako hrob. Pootevřenej – potřeboval jsem testovat a to … Pokračovat ve čtení „Testování EJB“

V poslední době jsem byl nucen se věnovat vývoji aplikace s nálepkou Enterprise a to tak, že používám EJB. Možná někdy časem budu moci prozradit, co je to za aplikaci a přidat nějaké informace o tom, jak jsem co navrhoval a realizoval, zatím však budu mlčet jako hrob. Pootevřenej – potřeboval jsem testovat a to bych to zmínit mohl, protože jsem tomu nějaký čas dal.

Pro některé beany (transformátory) bylo možné napsat jednotkové testy, které nepotřebovaly pro svůj běh EJB kontejner – prostě bylo možné vytvořit instanci dané třídy, provést transformaci (či validaci) a podívat se, jaký je výsledek. Pro další služby jsem už ovšem EJB kontejner potřeboval – takže  bylo potřeba jej buď spustit, nebo nasimulovat (pěkně to zblognul před mnoha lety finc, který odkazuje na Ejb3unit, ještě dříve krecan odkázal ve spojitosti se Springem na Pitchfork – přiznám se, vyprdl jsem se na oba).

Nejprve jsem uvažoval nad embeded glassfishem, ale zdálo se mi to úchylné, tak jsem rozhodil síť na twitteru a ozval se @dblevins s odkazy, jak je to pácháno na OpenEJB. To jsem zkoušel mimo video je to pěkně popsáno třeba zde), ale končil jsem s

[sourcecode language=“plain“]java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/ejb/embeddable/EJBContainer
[/sourcecode]

což se opakovalo, i když jsem se snažil vygooglit řešení a různě si s tím hrál. Podle všeho jsou knihovny pouze abstrakce a vlastní implementaci vkládá až zvolený kontejner, alespoň tak jsem to pochopil. Takže jsem se ve finále rozhodl jít cestou onoho embedded kontejneru.

Protože vyvíjím pro Glassfishe, padla volba na použití embedded glassfishe. Nejprve jsem se inspiroval Adamem Bienem a pokoušel se vytvořit archiv a ten následně deploynout, což však samozřejmě nebyla správná cesta. Hledal jsem dále a konečně objevil něco funkčního – vytvoření kontejneru se zkompilovanými classami a získání kontextu, nad kterým je možné provádět lookup. Teď bych sepsal kroky, jak jsem to celé zjednodušil a nacpal do ukázkového projektu.

Nejprve si vytvořme nový projekt pomocí mavenu

[sourcecode language=“plain“]mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=cz.shmoula -DartifactId=ejbTesting[/sourcecode]

následně je vhodné změnit pom.xml dle výše uvedeného zdroje – přidat závislost a parametry, případně repozitář

[sourcecode language=“plain“]. . .
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
. . .
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
. . .
<repository>
<id>glassfish-repository</id>
<url>http://download.java.net/maven/glassfish</url>
</repository>
[/sourcecode]

Teď je možné přidat například lokální stateless bean a jednoduše jej otestovat, část TestCase je uvedena níže. Za povšimnutí stojí především specifikace cesty, kde se nalézají classes, vytvoření (a uzavření) kontejneru a získání kontextu a dohledání pokusného beanu.

[sourcecode language=“java“]@Override
@Before
protected void setUp() throws Exception {
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(EJBContainer.MODULES, new File("target/classes"));
properties.put("org.glassfish.ejb.embedded.glassfish.installation.root", "glassfish");
properties.put(EJBContainer.APP_NAME, "pokus");

container = EJBContainer.createEJBContainer(properties);
Context ic = container.getContext();

Object o = ic.lookup("java:global/pokus/Pokus");
if(o instanceof Pokus)
this.pokus = (Pokus) o;
}

@Override
@After
protected void tearDown() throws Exception {
container.close();
}

@Test
public void testPokus(){
assertNotNull(pokus);
}

@Test
public void testScitani(){
assertEquals(9, pokus.scitani(5, 4));
}[/sourcecode]

To by mohlo být vše, teď to nějak aplikuju na WS, snad se to tak používá (chci testovat služby na straně serveru) a potom zkusím vkládat Messages na jazyk MDB :-). Nakonec to zas až tak nebolelo, i když mi připadá hodně úchylné ono spouštění embedded kontejneru. Je škoda, že v oficiální dokumentaci se o testování nic nepíše (nebo jsem to přehlédl? prosím link).

Oracle Java Developer Conference

Mám v poslední době takovej nějakej dojem, že navštívené konference mi nějak nic nedávají. Otázka je, jestli stárnu, nebo jestli za to může fakt, že jsem se den před touto konferencí nepěkně picnul a modlil se, ať už to skončí. Pravda ovšem může být úplně jinde – recykluje se. No a protože slíbené slajdy z … Pokračovat ve čtení „Oracle Java Developer Conference“

Mám v poslední době takovej nějakej dojem, že navštívené konference mi nějak nic nedávají. Otázka je, jestli stárnu, nebo jestli za to může fakt, že jsem se den před touto konferencí nepěkně picnul a modlil se, ať už to skončí. Pravda ovšem může být úplně jinde – recykluje se. No a protože slíbené slajdy z androidDevCampu pořád nejsou (a nemůžu tu komentovat co jsem chtěl), zkusím se zamyslet nad tím, co se mi děje.

Vzpomínám si, jak jsem se „zamlada“ těšil na Invex, asi tak moc, jak jsem tuto akci potom nenáviděl. Důvod se mi zdá prostý – internet a přebytek informací (Brave new world). Pokud se člověk o něco zajímá, určitě má dané téma nastudované ze všech stran a zná detaily. Proto mi svého času přišlo zbytečné chodit na výše zmíněnou výstavu. Stejný dojem bohužel začínám získávat i z různých konferencí. Pokud člověk nejede vyloženě získávat kontakty (případně se dobře najíst či flirtovat s hosteskama), bude to zabitý čas.

Oracle Java Developer Conference
Oracle Java Developer Conference

Posledních několik týdnů jsem se věnoval hlubšímu studiu Enterprise edition Javy (všechny ty servlety a podobné věci už potkávám pár let, ale injektáže a další věci mimo Spring jsem si ještě pořádně neošahal), tak jsem se těšil, že nabudu nové tipy a směrovky, na co se dále podívat… bohužel. Dopolední část programu bylo víceméně vzájemné plácání se přednášejících po ramenou, co že se povedlo, jak to bylo tenkrát, jak je to teď… zakončené povídáním Aleše Koběrského z Home Creditu, co že vlastně dělají a jak to u nich vypadá. Jasně, z velké části na akci byli studenti, kteří budou hledat job, ale stejně mi to nesedí. Navíc je otázka, jestli vůbec budou mít zájem (u oběda porovnávali nabídky různých firem, tam že dávají auto, tam jiné benefity…), jestli si nevysnili něco úplně jiného (pečené holuby zadarmo do huby).

Oracle Java Developer Conference
Oracle Java Developer Conference

Po obědě to začalo být zajímavé – Martin Marko (Web development for java web developers. Bad practices and solutions) rozjel show na téma jakýchsi vlastních dá se říci šablonovacích systému a přednášky o tom, že jako Javisti bychom neměli psát html kód a pokud ano, nepsat jej jak prasata. Chápu, souhlasím! Měl neuvěřitelný flow a těch 45 minut uteklo jak voda, dokázal bych tam sedět klidně až do večera – tohle mi něco dalo! Teď se však marně snažím najít nějaký jeho blog (blogspot mi hlásí 404), názvy které zmiňoval ani googlu nic neříkají (html5taglib, haiku), takže tu nemůžu dát linky. Ale aspoň jsem sehnal jeho mejl, tak uvidíme, jestli se s tím bude dát něco dělat, protože to bylo rozhodně nemálo zajímavé.

Další navštívenou přednáškou byla opakovaná What’s new in JavaEE 6 prezentovaná Alexis Moussine-Pouchkine, ale spíše jsem si během ní srovnával v hlavě Marcusova slova. Občas jsem ale procitl, abych zjistil, že se recyklují věci jako qualifiers (se kterými jsem shodou okolností neúspěšně zápasil minulý týden), že se ukazují onelinery oanotované asi deseti řádky a další šílenosti. Sečteno podtrženo – nula. A to jsem seděl na zemi, protože bylo plno.

Javistky nevypadají jako matfyzák
Javistky nevypadají jako matfyzák

OK, další v plánu mám „Vývoj a architektura java aplikace pro 10 mil. uživatelů“ prezentované Ladislavem Skokanem. Jednalo se o popis řešení online aplikace pro sčítání obyvatel. No opravdu se nezlobte, ale informace o tom, že to jede na web logicu, „tady jsme potom přidali ještě jeden server“, „čteme data z databáze, tak je vhodné cachovat“…k čemu tato prezentace byla? Možná k pláči. Takže se na mě, vážení pořadatelé, nezlobte, ale odcházím. Vypouštím Contexts and Dependency Injection i MDA platformy Paternoster (pokud je vůbec za tím MDA skryta Model Driven Architektura).

Na závěr ještě zamyšlení – proč jsou novinky prezentovány vývojářům, když ti v těžké většině nemohou mít na výběr použité technologie pražádný vliv? Jasně, pokud dělám vlastní projekt, rád si ozkouším mnoho věcí a novinek, ale pokud by se mělo jednat o nějaký long-term projekt – kdo by riskoval použití novinek z něčeho, co se mění dle měsíčních fází? Nehledě na to, že zadavatel si většinou vybere něco, co už je drahně let za horizontem a co dokáží jeho ajťáci spravovat? Slovy klasika: „srsly, wtf?“ Možná by byly do budoucna vhodnější nějaké detailně probrané case studies konkrétních implementací, případně workshopy, nebo reálné zkušenosti. Že by právě proto tolik frčely všechny ty hackathony a klasické konfery začínaly taky patřit do doby dinosaurů?

PS. Negativní vyznění nemá nic společného s tím, že jsem nedostal kabelku s letáky a reklamní flashdisk, ani fakt, že jsem se večer před konferou nepěkně sejmul.

Duben, na Sicilii budem

Vloni jsem v dubnu vyrazil na sever, letos na jih. Sebral jsem sobe jeste dva cloveky a jeli jsme se ohrat na Sicilii – trochu se opalit a podivat se, jak jim zraji citrony. Akce to byla veskrze relaxacni, tak jsem se zrelaxoval uz ve vlaku do Bratislavy a po vystoupeni jsem hned platil pokutu … Pokračovat ve čtení „Duben, na Sicilii budem“

Vloni jsem v dubnu vyrazil na sever, letos na jih. Sebral jsem sobe jeste dva cloveky a jeli jsme se ohrat na Sicilii – trochu se opalit a podivat se, jak jim zraji citrony. Akce to byla veskrze relaxacni, tak jsem se zrelaxoval uz ve vlaku do Bratislavy a po vystoupeni jsem hned platil pokutu za ruseni nocniho klidu, pekny zacatek. Na noc na letisti jsem se teda radsi trochu namaskoval, abych byl na vsech tech kamerach in-kog-ni-to!

Jsem rozmazany ital (snad je ten link z FB videt)
Jsem rozmazany ital (snad je ten link z FB videt)

Bydleli jsme v mestecku Paceco, kousek od Trapani. Hosteloapartman na dve noci jsme meli za naprosto bezkonkurencni cenu vcetne snidane – primo v ulickach, ktre vypadaly, jako nekde mnohem vic na jihovychode. Pesu tam bylo vsude pozehnane, stejne tak kocek (ctyrnohych). K udiveni byly dale zlute citrony na stromech a nasazujici fiky.

Baghdad? Ne, Paceco!
Baghdad? Ne, Paceco!

Vylet to byl jako z jineho sveta – takhle casne ze zacatku roku a slunce tu bylo neuveritelne ostre, pomerne nezvykla krajina a predevsim zajimave kvetouci stromy. Taky potvrzeni nazoru, ze i v nejvetsi spelunce se clovek naji lip, nez ve vyhlasene italske restauraci v cechach. Nekteri z nas (ti co neradi ostre) se u jidla i pekne zapotili, ze, Fando? 😉

Cervenostrom
Cervenostrom

O cistym mori plnym zivota ani nemluvim, to je jaksi samozrejme :-), stejne tak poulicni trhy s vybornym syrem, olivama… kde davaji jen tak ochutnat. Taky jsme tu potkali krajana, ktery tu zije uz deset let a somruje pred obchodem se svym ctyrnohym kamaradem.

Kostel v Erice
Kostel v Erice

Nenechali jsme se zlakat zvanim na jidlo a vyhoupli se na kopec do Erice – vesnicky prilepene na hrad, pred kterym tam stal Venusin chram. Spousty krivolakych kamennych ulicek, spousty kycovitych fotek, muzete se sami presvedcit. Na geocaching.com je tez mozne se presvedcit, ze se nam tu nezadarila jedina keska, i kdyz jsme se snazili, skoda.

Jedna ze sirsich ulic v Erice
Jedna ze sirsich ulic v Erice

Z kopce byl neuveritelny vyhled na vsechno kolem, i na more v oparu zahalene, nahoru na kopec serpentiny – asi to na autobus nebude, mozna proto vede nahoru lanovka, kterou jsme cestou nahoru i dolu rozhoupavali.

Pohled na vychod - smer Palermo
Pohled na vychod - smer Palermo

Povedla se nam ale keska aspon na letisti noc pred odletem. A na letisti se nam podarilo vice ulovku – predevsim startujici F-18 a F-16 smer Lybie. Chci tam znovu – je tam moc pekne a jsou tam prijemni lide. Mimo jine bych rad kouknul na Etnu, kdyz uz tam budu a na par dalsich mist, ale v lete tam rozhodne nepojedu, to bych se upekl. V neposledni rade se tam taky da jezdit zadarmo vlakem – cestu na letiste jsme jeli vlakem, protoze jsme nevyspekulovali, odkud jezdi autobus (zastavuje pokazde jinde a skoro nikdy primo na zastavce). Na nadrazi se neprodavaji listky, tak jsme vlezli rovnou do vlaku – pruvodciho delal masinfira a kdyz zjistil, ze se s nama italsky nedomluvi, mavl rukou a jelo se.

Google I/O Extended Brno

Jsa pln dojmů z dvouhodinové návštěvy akce Brněnské GUG s promítáním live streamu z Google I/O si asi budu nucen ublognout nějaké postřehy a komentáře, i když je jasné, že zítra toho bude plné podhoubí (twittosféra je nasycena už teď). Protože ale paralelně sleduju další stream, tak to bude jen velmi stručně. Akce začala v … Pokračovat ve čtení „Google I/O Extended Brno“

Jsa pln dojmů z dvouhodinové návštěvy akce Brněnské GUG s promítáním live streamu z Google I/O si asi budu nucen ublognout nějaké postřehy a komentáře, i když je jasné, že zítra toho bude plné podhoubí (twittosféra je nasycena už teď). Protože ale paralelně sleduju další stream, tak to bude jen velmi stručně.

Akce začala v 18 hodin našeho času, dostali jsme k ní nějaké doughnuty, pitivo a heslo na wifi, pak se již mohlo začít. Nutno poznamenat, že slibovaní hosté zřejmě nedorazili (utekl jsem dřív pryč a koukám, že Jakub Čížek se nechecknul na Gowalle, spot jsem dokonce musel vytvářet já :-)).

První uvedenou novinkou byly Google Movies (pokud se to fakt tak jmenuje) – služba umožňující pronájem videa a jeho spuštění na jakémkoliv zařízení svázaném s vaším google accountem. Pronájmem mám na mysli opravdu pronájem – za pár dolarů si koupíte práva na zkouknutí filmu, na což dostanete nějakých 30 dní, po započetí sledování 24 hodin. Pro android by měla existovat nová aplikace Movies a jak se dalo čekat, je to US only.

Dalším uvedeným produktem byl Google Music, v betaverzi. Funguje stejně, jako Amazon cloud player – (pouze ve státech) nedá se nakupovat hudba, ale je možné hudbu si tam skrze aplikaci (zmíněna platforma Windows a Mac) nahrát a odtud z jakéhokoliv zařízení se stejným google účtem streamovat. Ano, streamovat – aby se prostor nedal využít k pirátským aktivitám. (pouze bych rád dodal, že doufám v brzké chcípnutí Sony, EMI a dalších ne zkostnatělých institucí, ale rovnou zkamenělých, které by si měly uvědomit, že hudbu nezabíjí kopírování, ale ony!) Pro streaming opět existuje aplikace na marketu, ale na žádném mém zařízení nejde stáhnout :-(.

US Only
US Only

Vývojáři také byli ujištěni, že svoje aplikace budou vyvíjet pouze jednou pro všechna zařízení – i Google TV bude mít android market. Znamená to teda zřejmě, že se vývoj neforkne pro tablety (a další zařízení) a telefony, jak to vypadalo doteď. Neznamená to ale samozřejmě zpětnou kompatibilitu, pořád bude samozřejmě existovat minimalSDK v manifestu.

Další peckou je vydání Accessory development kitu založeného na Arduinu (samozřejmě je vše otevřené, takže je možné očekávat boom hardwarových serepatiček, jako příklad bylo uvedeno sportovní náčiní) a vůbec větší podpora dalšího hardwaru, mimo jiné bude USB fungovat jako host, takže bude možné připojit klávesnice, gamepady a další věcičky. Demonstrace proběhla na gigantickém bludišti ovládaném tabletem s akcelerometry.

Bludiště

S tím souvisí představení dalšího produktu – Android@home – Androidu jakožto centrálního bodu pro ovládání inteligentních domů. A to počínaje nastavováním termostatu, zhášením světel, ale také multimédii – demonstrována byla výše zmíněná služba Music, kdy zakoupenou hudbu bylo možné pomocí telefonu pustit a jako výstupní zařízení nastavit hifi v obýváku a přehrávač v kuchyni.

Android@home
Android@home

To je víceméně vše, na co si z úvodu vzpomínám a teď mi běží ve streamu další android novinky a jsou to takové pecky, že se omlouvám a jdu sledovat! Jasné je, že je možné se v dohledné době těšit na obrovský boom gadgetů a všemožných více či méně praktických zařízení připojitelných k androidu a také samozřejmě S androidem. Jako třeba tablet Galaxy Tab, který dostali účastníci konference jako dárek.

PS. pomocí Moderátoru je možné pokládat otázky pro jednotlivá témata.