jsf, richfaces (o altro ajax), Ejb e Jpa sotto eclipse, mi manca lo step ejb e quello jpa. (poi serve capire che fare con tutta questa roba :)).
Seguo un'altro sito come linee guida che mi sembra qualcosa di fatto veramente a prova di cretino ovvero :
http://courses.coreservlets.com/Course-Materials/pdf/ejb3/EJB3-2-Session-Beans.pdf
(il sito http://courses.coreservlets.com/ merita più di una occhiata secondo me)
Tutoralino fatto in PDF ma chiaro e semplice da cui estrapoliamo quel che ci serve.
Aggiungiamo (io lo avevo già aggiunto da tempo) Jboss fra i server (io ho usato la versione 5.1.qualcosaltro)
Cambiamo jsfTest (il progettino test jsf) come server e spostiamolo da Apache Tomcat a Jboss
Sistemiamo le librerie, ci aggiunge quelle di jboss, togliamo quelle di tomcat.
Per esperienza personale, togliete anche le librerie Jsf che avete creato insieme al progettuolo perchè
Jboss le contiene già ed in caso di deploy vanno in conflitto le due dando un errore di cast curioso.
per cui, proprietà del progetto, Project Facets>>Java Server Faces togliete la spunta alla libreria JSF
Ora Creiamo un nuovo progetto (Ejb Project) secondo le indicazioni del tutorial.
Scegliamo anche qui Jboss come server
andiamo in ejbModule, creiamo un package
org.tutorial.bean.remote
qui dentro creiamo una nuova interfaccia NumberService
package org.tutorial.bean.remote;
import javax.ejb.Remote;
@Remote
public interface NumberService {
public double getNumber(double range);
}
dentro a org.tutorial.bean creiamo una classe che implementa number service : NumberServiceBean
package org.tutorial.bean;
import javax.ejb.Stateless;
import org.tutorial.bean.remote.NumberService;
@Stateless (mappedName="NumberCreator")
public class NumberServiceBean implements NumberService {
@Override
public double getNumber(double range) {
// TODO Auto-generated method stub
return (Math.random() * range);
}
}
La comodità di dargli il mappedName, come spiegato nel tutorial, è che permette di chiamarlo così qualunque sia l'ejb container in cui è installato.
Comunque, per il progetto Ejb abbiamo finito (creeremo solo uno Stateless Bean giusto per vedere se funziona la chiamata)
Torniamo al progetto jsfTest :
In src creiamo anche qui il package org.tutorial.bean.remote e creiamo anche qui l'interfaccia NumberService
Esattamente come nel progetto ejb.
Dentro a src aggiungiamo anche un file jndi.properties (serve a dire al nostro progetto dove trovare le risorse ejb) come specificato nel tutorial in jndi.properties scriviamo :
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099
Ora giusto per testare apro Login.jsp ed aggiungo queste righe in cima :
<%@page import="org.tutorial.bean.remote.NumberService"%>
<%
javax.naming.InitialContext context = new javax.naming.InitialContext();
NumberService cr = (NumberService)context.lookup("NumberCreator");
double number = cr.getNumber(100);
%>
A questo punto in qualche posto del jsp aggiungo <%=number%> per visualizzare il numero generato
Avviamo il tutto su jboss, colleghiamoci a
http://localhost:8080/jsfTest/faces/login.jsp
e vediamo che, nel posto dove abbiamo inserito <%=number%> appare un numero casuale fra 0 e 100 (generato dall'ejb) e se ricarichiamo la pagina il numero cambia perchè ne viene richiesto uno differente ogni volta.
La comunicazione jsf-web/ejb è stabilita !
ora ci manca la persistenza nell'Ejb (il nostro lato business) ovvero le JPA
Poi avremo una base ancora sconosciuta ma che ci permetterà di sviluppare le nostre logiche di business nell'Ejb, appoggiati ad un sistema di persistenza solido (basato su jpa) e le nostre logiche di visualizzazione/presentazione dei dati in ambiente web con Ajax.
E tutto utilizzando Eclipse come strumento di sviluppo.
Insomma, non sembra niente male.
Nessun commento:
Posta un commento