Dai costruttori al Builder Pattern in Java

I Design Pattern (soluzioni progettuali generali a un problema ricorrente) sono molto inportanti nel software, a prescindere dal linguaggio di programmazione. In questo post vediamo insieme l’utilizzo del Builder Pattern in Java come alternativa all’utilizzo dei costruttori in overloading. L’obiettivo è quello di rimpiazzare costruttori poco leggibili e scomodi da utilizzare con una classe che si preoccupa della creazione dell’oggetto, fornendo metodi appropriati per i parametri e la validazione....
Continue reading...

EJB3 Message Driven Bean con JMS: Request/Reply Pattern con JBoss – Parte II

Riprendiamo e concludiamo il filone dei Message Driven Bean (MDB) che avevamo iniziato in due post precedenti: in uno più teorico, avevamo descritto la struttra asincrona dei MDB che ricevono e inviano messaggi JMS, con riferimento a qualche pattern architetturale; nel secondo avevamo invece messo mano al codice, in particolare su come implementare il Request/Reply pattern basato sul Correlation ID. Come promesso, vediamo adesso cosa bisogna fare per implementare invece il pattern basato su Message ID. ...
Continue reading...

Getting Real: libro gratuito di 37signals

37Signals è una azienda di informatica abbastanza piccola (per scelta!) ma che sta facendo grandi cose nel mondo del software. Dall’esperienza accumulata negli ultimi 10 anni sono nati due libri molto interessanti, il primo è Rework. Manifesto del nuovo imprenditore minimalista. Come avere successo con poche risorse (in inglese è Rework. Change the way you work forever). Il secondo libro si intitola Getting Real ed è disponibile gratuitamente nel sito ufficiale...
Continue reading...

EJB3 Stateless vs Stateful, quale è la differenza?

La risposta alla domanda “quale è la differenza fra ejb stateful e stateless?” sembra evidente: gli stateful mantengono lo stato e possono essere usati per il classico carrello della spesa mentre gli stateless non avendo uno stato possono essere usati per implementare dei servizi. Ma siamo sicuri che la risposta è così semplice? Per quanto viene mantenuto lo stato di un ejb stateful? Per la durata della sessione web? Proviamo a fare un po’ di chiarezza in questo post....
Continue reading...

Alla faccia dell’interfaccia: Scala a Tratti

Platone definiva l’essere umano come “Bipede implume dotato di anima“: aveva sicuramente in mente i Tratti Scala, nella sua lungimiranza. I tratti, analoghi alle interfacce Java, offrono in più la possibilità di centralizzare codice, maggiore flessibilità associata a un migliore controllo. Non ci credete? Leggiamo insieme questo post!...
Continue reading...

EJB3 Message Driven Bean con JMS: Request/Reply Pattern con JBoss – Parte I

In un post precedente abbiamo introdotto un po’ di teoria che sta dietro ai Message Driven Bean (MDB): è importante conoscere l’architettura su cui si basano questi strumenti perché è molto diversa dai componenti sincroni con cui siamo soliti lavorare (leggi Session Beans). La teoria è importante perché ci permette di capire cosa accade dietro le quinte (e soprattutto perché si scrive un certo codice), ma se non vediamo come si mette in pratica serve a ben poco!...
Continue reading...

EJB3 Message Driven Bean con JMS: Enterprise Patterns

La piattaforma Java Enterprise ci mette a disposizione innumerevoli strumenti che, almeno dalla versione 5, semplificano notevolmente la vita dello sviluppatore. Con estrema trasparenza è possibile gestire connessioni a database, transazioni distribuite, proteggere le risorse, pianificare task, eseguire richieste asincrone e altro ancora.

In tutte le guide introduttive su EJB3 che si trovano in rete si parla quasi esclusivamente di Session Beans di tipo Stateless e Stateful e si accenna a malapena all’esistenza dei Message Driven Bean (MDB), perché effettivamente non sembrano molto usati. A cosa serve un MDB? Spesso veniamo liquidati con risposte del tipo “serve a gestire chiamate asincrone al server”. Onestamente non mi sembra poco: è una risposta che apre mille scenari e che non ha fatto altro che incuriosirmi ancora di più! In questo post vedremo di approfondirne alcuni aspetti....
Continue reading...