Newsgroup: it.comp.java
Titolo: Nuovo progetto Seam per Tomcat6

Ultimamente si sono viste alcuni interessamenti al framework Seam.
Tuttavia spesso Seam viene visto come qualcosa di ottimo ma di troppo
complesso che necessita  JBoss, EJB ecc, in contrasto a Spring in
qualce invece sembra essere piu' leggero.
In realta' tutto cio' non e' vero.
A dimostrazione di cio' ho creato una semplicissima applicazione di
prova basata su SEAM, JSF 1.2, Facelets, il tutto gestito tramite
Maven (una cosa che manca nella documentazione di SEAM al momento),
assolutamente deployabile in Tomcat6 senza alcun microcontainer EJB o
chissa' che altro.
Sono disponibili persino degli integration test completamente
funzionanti lanciati automaticamente da Maven.
Ecco, siccome anche io sono un novellino di Seam, se qualcuno e'
interessato a darci un'occhiata e ad ampliare il progetto di prova con
nuove feature ed integrazioni e' il benvenuto.
Anche chi non e' un principiante potrebbe dare una mano visto che e'
funzionante l'integrazione su Maven (ci ho smanettato parecchio per
riuscire a farla giarare), magari correggendo gli strafalcioni che ho
scritto ;)
Il progetto e' situato su server SVN (ospitato da 
assembla.com
).
Il progetto e' qui:
http://www.assembla.com/wiki/show/seam-tomcat6
Il checkout si puo' fare qui:
http://svn2.assembla.com/svn/seam-tomcat6
P.S
Dentro la directory principale ci sta un file README.txt con qualche
nota per l'installazione ed altro (ad esempio non dimenticatevi di
copiare il jar di hypersonic dentro le librerie di Tomcat).


Non sta sfondando qua su sto NG seam :-/
Io confermo che lo utilizzo quotidianamente.
Se tutto va bene esco in produzione con un applicativo a carico medio alto e
potro' dare ulteriori opinioni, applicativi a carico basso ne ho fatti gia'
parecchi senza alcun problema.
Se non sto intervenendo in queto 3d e' perch' uso
Tomcat 5, Seam 1.2, no mavem al momento , per il fatto che vatto sotto
portlet, e quindi siamo un po' disallineati
ma appena ho un po' di tempo ( difficile di sti tempi ) devo upgradarmi
assolutamente
Ciauz buon lavoro
Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 portlet, e quindi siamo un po' disallineati
Ok, comunque se hai voglia di fare delle prove e dare suggerimenti sei il 
benvenuto!
Vorrei provare Seam nel prossimo progetto.
Intanto sono piacevolmente sorpreso dagli integration test, che sono 
praticamente identici agli errori che ottengo su Tomcat, e questo senza 
tirare su alcun container.
Ma anche il resto e' strepitoso. Basta vedere come gestisce i back su 
browser, la sicurezza, la persistenza. 


E' proprio cosi'
Il back e' pazzesco, mai visto nulla del genere :-))
La persistenza non riesco a pensare come ho fatto per anni senza. Questo
progetto a cui sto lavorando e' proprio un progetto con un mega back-bean
che tengo in conversation e sto veramente utilizando la potenza del
framwork, la sensazione davvero e' quella di stare sull'astronave enterprise
di star treck.
Utilizzo il minimo, cioe' jsf minimalissime ( h: e f: ) e statful
conversatin, solo questo fa la differenza su tutto il resto del mondo.
Se sto progetto poi va avanti come spero utilizzero' tutte le feature piu'
avanzate
la remoting, per ajaxare bene, e poi volevo provare anche jbpm che mi
intriga e la security per bloccare bene le singole funzionalita' ad utente e
backoffice, visto che il progetto e' finanziario e la sicurezza piu' ne
metto piu' dormo sereno
Come suggerimento che ti posso dare se vuoi partire con un progetto e'
quello di studiare a fondo il capitolo sulla conversation , in pratica
piglia il famoso booking a capisci bene quando e comee fare la @begin e la
@end
Provando a sintetizzare
1.
tutte le search vanno in @Stateful@Scope(Session)
poi quando vai sul singolo record fai una @Begin di un bean
@Statful@Sope(Conversation)
quando torni alla search fai @End
2.
Non usare MAI @Begin(join=true), anceh se te lo suggerisce il framework
stesso. E' contro la filosofia del framework
3.
Se vuoi fare una begin al volo all'accensione chiedimelo c'e un trucchetto
nella pages.xml ma se eviti meglio
Se capisci begin la @begin poi e' tutto velluto, io ai primi progetti feci
l'errore di non capirla e ho perso un pochino di tempo
4.
Impara a usare la pagina
debug.seam
con quella vedi sempre tutta la session e le conversation
5.
L'id conversation non ti seve a nulla seon usi il remoting
6. ricordati di buttare fuori sempre gli h:messages se non non sai perche'
non funziona, ma essendo veterano jsf dovresti saperlo
Ciauz e buon lavoro
Appena ho tempo mi tiro giu' la tua assemblea ;-)




Dimenticavo:
Degignerizza deignerizza deignegnerizza, fai porcherie, rompi i pattern,
questa e' la filosofia
funziona tutto sempre ed e' legibbile fidete
:-)))))



Questo e' un buon vecchio trucchetto ;) 

 sul bean? Che altro metodo conosci?
<pages>
    <page view-id = "/aziendaspeddetaildirect000.jspx"
          action = "#{aziendaSpedDetail.selectAziendaDirect}"/>
</pages
WEB-INF/pages.xml
io non conosco il tuo ci do un occhio
ciauz
N


 io non conosco il tuo ci do un occhio
Questo dovrebbe eseguire una action prima del rendering della pagina. 
Ottimo per lo stile RESTful, ma di per se non inizia una conversation.
Io ho fatto una cosa simile alla tua ora che ci penso, ma annidando un 
<begin-conversation> dentro <page>.


Confermo. Nel passare da 3.2 a 3.3 (vado a memoria..:)) il tag del
calendario con Firefox andava in parte fuori dalla finestra del
browser. Ad ogni modo, molti tag hanno comportamenti diversi tra i due
browser principali. Detto ciò, uso lo stesso almeno il rich:panel (e
il calendar stesso). Anche quella per la popup modale è molto comoda.
A parte ciò, io sto lavorando su un progetto di cui sono in buona
parte l'architect, JBoss+JSF 1.2+Facelets+EJB3 (session stateless)
+Hibernate.
Tra l'altro sostituii le jsp con con le facelets dopo un consiglio
quasi sicuramente di uno di voi due...:)
Inoltre, stiamo integrandoci dentro JBPM che usa parecchie delle
librerie di Seam.
Detto ciò, però, devo dire che non ho avuto tempo di studiare Seam.
Mi pare di capire che sia un framework "a tutto tondo" come Spring ma
che gestisce anche la persistenza: in che modo?
Inoltre, usa anche lui l'inversion of control?
Ultima domanda: che cosa intendete per "gestione dei back su browser"?
Ciao e grazie...:)

 Ultima domanda: che cosa intendete per "gestione dei back su browser"?
Solito problema: nella pagina precedente hai effettuato una 
registrazione. Probabilemnte se l'utente fa back non vuoi permettergli 
di effettuarne un'altra.
Questo viene risolto nel mondo J2EE tramite un token di sincronizzazione.
Beh Seam grazie allo scope conversation lo risolve senza neanche 
preoccuparsene: se dopo la registrazione tu sviluppatore decidi di 
chiudere la conversation, se l'utente fa back e reinserisce i dati sta 
utilizzando una conversation vecchia non piu' utilizzabile: Seam rileva 
il problema e ti consente di intraprendere l'operazioni voluta: redirect 
ad altra pagina o quello che vuoi.


Non uso il lazy-loading (ma più per ignoranza forse). La NonUnique è
invece sì, quella che mi ha fatto penare di più. Ma io ho sempre
pensato che il problema fosse esattamente l'opposto. Hibernate trova
nella sua sessione un altro oggetto con stesso id proprio perchè dopo
il primo "accesso" (chiaramente all'interno della stessa transazione)
la sessione non si è chiusa. Tant'è vero che la soluzione che
attualmente implemento è di usare session.get per provare a
"recuperare" l'oggetto eventualmente già in sessione con lo stesso id
prima di crearne uno nuovo.

 la sessione non si č chiusa.
Non c'e' la cache di sessione che assicura che siano lo stesso oggetto? 
Cosa che non si ha se chiudi la sessione, la riapri e richiedi altri 
oggetti.