Synchronizace scheduleru v clusteru

Na našem projektu Starthead jsme potřebovali implementovat automatické provádění úkolu určeného ke zpracovávání dat v databázi. Ve frameworku Spring, který je pro vývoj použit, je tato úloha jednoduše řešitelná například pomocí TaskScheduler.
Zajímavější situace nastává, pokud má aplikace bežet v clusterovém řešení. To znamená, že je potřeba řešit synchronizaci, aby nedocházelo k vícenásobnému spouštění jobů ve stejný čas. Snažili jsme se najít co nejjednodužší řešení, které by splňovalo danou podmínku a tím se v našem případě ukázalo využití Quartz scheduleru s patřičnou clusterovou konfigurací a synchronizováním pomocí ukládání do databáze. více »


IntelliJ Idea pro vývoj v Javě

Většina lidí si vývoj v Javě spojí s jedním ze dvou nejpoužívanějších IDE – Eclipse a Netbeans. Třetí, donedávna čistě komerční IDE je často neprávem přehlíženo. Před pár dny byla uvolněna nová verze IDE IntelliJ Idea s číslem 11. IntelliJ Idea (dále jen Idea), je vyvíjena firmou Jet Brains, která se zaměřuje na vývoj špičkových vývojových nástrojů pro různé programovací jazyky, mimo jiné IDE pro Ruby, Python nebo Objective C. V článku se budu snažit shrnout věci, které jsem si oblíbil a chybí nebo jsou v horším provedení u konkurence (především Eclipse). více »


Získávání dat z HTML stránek

Na jednom projektu jsme potřebovali získávat informace z HTML stránek a využili jsme knihovnu jSoup. Její jednoduché použití si ukážeme na příkladu získání jednotlivých popisů volných pozic ze stránek Aspectworks. Pomocí metody connect a get() získáme načtenou stránkou

Document doc = Jsoup.connect("http://www.aspectworks.com/volne-pozice").get();

více »


JTA tedy distribuované transakce se dost často použivájí v enterprise systémech, kde je potřeba přistupovat jak k více databázím, tak třeba v kombinaci databáze a messaging systém (např. Websphere MQ). Mezi vývojáři obecně panuje představa, že pro jeho využítí potřebuji aplikační server ala Jboss či Websphere, případně také, že bez EJB JTA nelze použít. Toto není samozřejmě pravda a např. pokud použijeme Spring, situace se nám ještě velmi zjednoduší. V příkladu si ukážeme jak nakonfigurovat transakční manager pro test, který otestuje jednu komponentu, ve které je logika přístupu k více XA zdrojům. více »


Jak na mock HTTP serveru

Pro jednoho z naších zákazníků dodáváme C2DM – zasílání notifikací na mobilní telefon s operačním systémem Android. Tato služba je implementována jako HTTP request, ve kterém pošlete zprávu, registrační identifikátor instance zařízení s androidem a C2DM server se postará o doručení. více »


Pokročilé integrační buildy

Pevně veřím, že continuous integration je již zažitý standard na všech, nebo alespoň na těch jednodušších, projektech. Chtěl bych rozptýlit případné obavy z konfigurace složitějších projektů. Ukážeme si, jak pouhým mvn clean verify nastartujeme celou SOA platformu a nad ní spustíme selenium testy.
více »


Spring Integration + WebSphere MQ

Na projektu u zákazníka jsme řešili připojení k externímu systému na Websphere MQ. Bohužel na MQ nebylo z nějakého důvodu zpřístupněno JMS, takže bylo potřeba používat nativní API. Pokud by bylo možné použít JMS rozhraní, integrace do aplikace by byla triviální. Protože jsme používali Spring Integration, stačilo by nakonfigurovat springový JMS inbound channel adapter. Takto bylo potřeba vytvořit vlastní adapter a použít nativní MQ rozhraní.
více »


Spring umožňuje pre svoju xml konfiguráciu okrem hromady dodávaných namespacov (jdbc, context, tx…) zaregistrovať aj vlastný namespace handler a tým používať custom xml tagy pre vytváranie bean, prípadne iné zasahovanie do contextu. V AspectWorks to používame napríklad pre konfiguráciu validátorov atp. Sila tohoto prístupu je však omnoho väčšia, v dnešnom článku si ukážeme malý príklad z praxe. více »


Konečně profily ve Springu 3.1

Před časem vyšel nový Spring 3.1 M1 a krom jiného zavádí novinku v podobě profilů pro Spring beany. Na něco takového čekáme už od prvních verzí a dosud jsme to obcházeli neelegantními způsoby. Ale je to konečně tady! Podívejme se na to, jak to funguje. více »