Posts tonen met het label JBoss. Alle posts tonen
Posts tonen met het label JBoss. Alle posts tonen

vrijdag 30 januari 2009

Afstudeerverslag: "Java Business Rules in Action"

Roy Bouten (2007)

In de eerste helft van 2007 studeerde Roy Bouten in het kader van zijn HBO-opleiding Informatie af binnen ISAAC Software Solutions. Zijn opdracht betrof het vergelijken en analyseren van verschillende server-side scripting-technieken voor een Java Enterprise Edition-omgeving en het bouwen van een prototype van een JEE-omgeving waarin real-time modificeerbare business rules een rol spelen. Roy heeft hiertoe technieken als JBoss Rules, JBMP en JRuby vergeleken en op basis van JBoss Rules en Enterprise Java Beans (EJB3) een prototype applicatie ontwikkeld. Het domein van deze prototype applicatie was een applicatie voor de bepaling van loyaliteitspunten in een retail-omgeving, vergelijkbaar met een spaarprogramma als Airmiles. Echter, één en ander volledig dynamisch configureerbaar middels variabele business rules.

Afstudeerverslag: "Compositus"

Mathijs Savenije en Stijn Janssen (2006)

Mathijs en Stijn studeerden voor hun HBO informaticaopleiding af op de opdracht met de naam “Compositus”. Tijdens de eerste helft van 2006 werkten zij aan het ontwerp en de implementatie van een op schaalbare Java Enterprise Edition gebaseerde “Retail Middleware”, waarmee het mogelijk is om dynamisch en volledig configureerbaar gegevens van leveranciers en webshop-software te koppelen. Sleutelwoorden hierin waren transactiebeheer, real-time data acquisition, en interface-abstractie. Deze (grote) ontwerpopdracht resulteerde uiteindelijk in een systeem op basis van de JBoss Application Server.

maandag 9 juni 2008

Een webservice in 5 minuten


EJB 3.0 en webservice annotations maken het mogelijk om webservices te maken, zonder alle details te kennen van WSDL of binding of wat dan ook. Sterker nog, je kunt in enkele minuten een webservice maken. Het enige dat je nodig hebt is een interface klasse, een implementatie klasse en een paar annotations. Laten we dit eens van dichtbij bekijken met het aloude “Hello World” voorbeeld. Maak een EJB 3.0 project en maak daarin allereerst de interface klasse.

package nl.isaac.ejb.service;

import java.rmi.Remote;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style = Style.DOCUMENT)
public interface HelloWorld extends Remote {
String hello(String name);
}

Hierin zie je twee annotations staan. De eerste “@WebService” geeft simpelweg aan dat het om een webservice gaat. De tweede geeft aan welk soort SOAP binding je gebruikt, hierin heb je twee smaken “RPC” en “Document”. In het voorbeeld gebruik ik “Document”, maar in dit geval maakt het niet uit om hier “RPC” van te maken (Het verschil tussen document en RPC is grofweg gezegd dat RPC maar een enkel element als resultaat geeft en document een uitgebreid XML document terug kan geven). In de interface klasse staat verder alleen onze methode gedefinieerd. Let er wel op dat de interface jave.rmi.Remote extend. Nu kunnen we onze implementatie klasse maken.

package nl.isaac.ejb.service;

import javax.ejb.Stateless;
import javax.jws.WebService;

@Stateless
@WebService(endpointInterface = "nl.isaac.ejb.service.HelloWorld")
public class HelloWorldImpl {
public String hello(String name) {
return "Hello " + name;
}
}

Let erop dat, ondanks dat dit de implementatie klasse van een interface is, je deze niet implementeert met de code “implements HelloWorld”. Dit gebeurt in de annotation @WebService, die in deze methode zijn endpoint interface instelt. Deze verwijst naar de interface klasse die we zojuist gemaakt hebben. Onze methode wordt geïmplementeerd en voilá, een webservice is geboren. Deploy je project in JBoss en controleer voordat je een client maakt of je service draait door de WSDL file aan te roepen. Dit kun je doen door de URL van je project in IE in te voeren met daarachter “/HelloWorldImpl?wsdl”, dit zou je een XML document moeten tonen met alle details over de webservice.

zaterdag 19 april 2008

Swingende Nick

Stel je eens voor: Je rijdt in je auto naar je werk. Het is als redelijk laat en de meeste files zijn al opgelost. De snelheidsmeter wijst vrolijk naar de 135 kilometer per uur. Uit je speakers knalt een oude van AC/DC (uiteraard nog met Bon Scott) en net kwam Motorhead nog even voorbij gedenderd. Je bent een jonge man aan het begin van een veelbelovende carriere bij het snelgroeiende en ass kickende (web)software bedrijf ISAAC. De afgelopen maanden waren nogal zwaar, want een tijdje terug is beslist dat jij de Java Swing frontend gaat bouwen op een redekijk complexe JBoss backend. Je hebt nog niet veel ervaring met deze techniek, maar je bent al hard aan het studeren voor je SCJP. Bovendien heb je net de klassiekers "Concurrency in practice", "Thinking in Java" en "Effectice Java" verslonden. Je ademt Java, kan genieten van elegante code en sinds Javapolis 2007 ben je stiekem een beetje verliefd op Fabrizio Giudici (omdat hij zulke mooie swing demo's kan geven). Gisteren heeft je collega Jan Willem de JBoss remoting koppeling over HTTP beschikbaar gesteld, dus je kan niet wachten om die te koppelen. Je wil doorgaan, meer listhandlers schrijven, meer race conditions spotten en vooral kijken of die nieuwe nimbus look and feel wellicht al stabiel is, zodat die trage substance eindelijk kan worden vervangen. Je hebt immers inmiddels meer dan genoeg van al die collega's die telkens melden dat "het er leuk uitziet, maar wel wat traag is.". Tsss, ze zullen hun woorden terugnemen zodra jij klaar bent. "Java is niet traag, kijk maar naar Eclipse. Of nou ja... wellicht is dat niet zo'n goed voorbeeld.", denk je terwijl je bridgestones de paardenkrachten aan het asfalt overdragen.

"Oh fuck! Niet nu! Ik zit in mijn auto op de fucking snelweg, dit is NIET handig!" schiet het door je hoofd, meteen gevolgd door een hoestbui waar de Marlboro man een puntje aan kan zuigen. Je klapt dubbel op je stuur en stuurt je auto zo goed en zo kwaad als het kan naar de kant van de weg. Je hebt het gevoel dat je longen een verblijf buiten je borstkas zoeken. De hoestbui waar je in vastzit, zorgt ervoor dat je maag nog van streek raakt ook. "Toch jammer van dat gebakken ei van vanmorgen", denk je als je ontbijt met een antiperistaltische beweging op dezelfde manier naar buiten komt als waarin het in eerste instantie in je maag terecht is gekomen. Als de hoestbui na een minuut of drie tot bedaren is gekomen en je de restjes ei met melk van je voorruit veegt, besef je eens te meer dat de dokter het toch waarschijnlijk bij het rechte eind had toen hij de diagnose kinkhoest stelde. Je baas Mark had dan wel gelijk toen hij zei dat het "Wel redelijk rock 'n' roll, is, als je 's ochtends in je auto de boel onderkotst", maar jij geeft dan toch zelf de voorkeur aan grote hoeveelheden bier als reden in plaats van een allesverzengende kinkhoest aanval.

"Dus nu is hij aan het rondzwerven en zullen we hem moeten vervangen.", zegt de arts met zijn typische ""kijk eens hoe ik met je meevoel" artsenstem. "Waarschijnlijk is het gebeurd tijdens een van uw hoestaanvallen.", vervolgt hij zijn verhaal. Het metalen plaatje dat enkele jaren geleden in je lies is bevestigd om de liesbreuk te fiksen, is inderdaad losgeschoten en nu moet je dus onder het mes om hem opnieuw te laten bevestigen. Het zit je niet mee. Eerst kinkhoest, dan wordt je huis leeggeplunderd door een inbreker, een sterfgeval in je naaste familie en nu ook nog eens opnieuw een liesbreuk. Je kan je nog goed herinneren dat de eerste drie weken na je vorige liesbreuk operatie geen pretje waren. Verdomme! En net nu het zo lekker ging met het ontwikkelen van de swingclient. De koppeling werkt nu als een tierelier. De CLP engine begint ook vorm te krijgen en we zijn zo dicht bij ons doel. Java code schrijven is toch wel wel veel leuker dan twee weken plat te moeten liggen. Hopelijk gaat het dit keer minder pijn doen dan de vorige keer.

Helse pijnen, al twee weken. Je kan amper lopen en langer dan een half uurtje zitten kan je wel vergeten. De operatie is dan wel goed verlopen, maar je verdenkt je chirurg er wel van een roestend tweedehands plaatje met weerhaken te hebben bevestigd. De vrolijke tijden waarin je de zelfgeschreven imageviewer aan de swing applicatie toevoegde lijken ver weg. Ah ja, die imageviewer die je laatst nog op java.net hebt gezet en een heuse reactie kreeg van Fabrizio. Je glimlacht als je denkt aan je java.net gebruikersnam: cuswatesl, ze zouden eens moeten weten waar dat voor staat. Auw! Het glimlachen was overgegaan in een grinnik, maar daar je is lies toch nog echt niet aan toe. "Hoe zou het nu gaan op het werk?", vraag je je af, meteen gevolgd door vrolijk bellen van de deurbel. Mark, je baas staat daar, met een heus cadeau van al je collega's van ISAAC. En helemaal in ISAAC stijl is het geen bos bloemen, of een lullig fruitmandje, maar een heuse VLEESMAND. Kijk, daar knapt een jonge rockgod van op: worsten en varkenslappen. Fuck de pijn! Het leven is goed!



dinsdag 2 oktober 2007

Supported JBoss AS versies

De laatste weken valt het me op dat onze Java-goeroes bij JBoss wat strikter aan het worden zijn met het verlenen van support (zowel development support als production/maintenance support) op "niet enterprise"-versies van JBoss. Op zich begrijpelijk, omdat er intussen zo'n lading van versies en plugin-modules beschikbaar is dat het domweg ondersteunen van *alle* versies niet meer doenlijk is. We moeten daarom opletten dat we zo veel mogelijk gebruik maken van JBoss-versies die te downloaden zijn via network.jboss.com, waarvoor we onze JBoss Support login nodig hebben. In het kort komt het erop neer dat momenteel de "mixversie" 4.2.1. niet onder de support valt, en 4.2.0 die te downloaden is achter de login wél. Daarnaast valt de hele 4.0.X-range nog wel onder de ondersteuning.

woensdag 29 augustus 2007

Red Hat Developer studio (Beta 1)

Een paar dagen geleden heb ik een eerste click-through gedaan van de nieuwe ontwikkelomgeving voor Java-ontwikkelaars van Red Hat/JBoss: Red Hat Developer studio! Eindelijk was beta1 namelijk gereleased.

Deze enorm opgetuigde Eclipse-ontwikkelomgeving is als download een jar-file van 500+ megabyte... Niet echt een bescheiden tooltje dus, maar er is nu zelfs een complete embedded JBoss Application Server (met o.a. SEAM) opgenomen in het pack.

Op zich heel handig dat Red Hat Developer studio (RDS) nu out-of-the-box meteen klaar is om met een lokale embedded JBoss te werken; voorheen was het soms even flink prutsen om de koppeling Eclipse-JBoss goed aan de praat te krijgen. Je kunt nu met één-druk-op-de-knop iets deployen in de bijgevoegde debug-ready JBoss.

Natuurlijk wilde ik als lid (samen met Pieter) van de SEAM-Taskforce binnen Software Solutions meteen eens kijken hoe de beloofde SEAM-tools zouden zijn, maar helaas: ergens tegen het einde van een enorme multi-page project-setup-wizard hield het even op omdat ik geen zin had om een complete SQL-server datasource aan te maken voor een klein testje, en ik bovendien wat opties niet kon kiezen wegens een (bekende) bug. Nog niet helemaal klaar dus, die SEAM-support in RDS Beta1, maar daar is het ook een beta voor... Het klinkt wel enorm veelbelovend om straks gewoon met drag-and-drop, net als met Matisse voor Swing user interfaces, een Icefaces-achtige webGUI in elkaar te kunnen zetten, die ook nog eens mooi middels SEAM met een EJB3 datamodel kan communiceren. Waarschijnlijk gaat er vervolgens alsnog weer een eeuwigheid zitten in fine-tuning en het bouwen van die pixel-precieze dingen die onze klanten specificeren, maar vooruit: het basismodel van je applicatie staat dan toch weer een stuk sneller én beter in elkaar.

Verderop in dit jaar zou RDS definitief uit moeten komen, dus het is gelukkig een kwestie van weken/maanden en niet jaren voordat we al die toffe tools écht kunnen gaan testen...