SeamFramework.orgCommunity Documentation
Websphere AS V7 è l'application server di IBM. Questa release è pienamente certificata Java EE 5.
Innanzitutto procediamo con alcune informazioni base sull'ambiente Websphere AS che useremo negli esempi. Andremo a fondo nei dettagli con l'esempio JEE5 Prenotazione. Procederemo anche nel deploy di un'applicazione d'esempio JPA.
Websphere AS è un prodotto commerciale e quindi non si discuteranno i dettagli della sua installazione, basta dire di seguire le istruzioni fornite dal particolare tipo di installazione e dalla licenza. Questa sezione dettaglierà le versioni del server, i suggerimenti sull'installazione ed alcune proprietà specifiche necessarie negli esempi.
Tutti gli esempi e le informazioni in questo capitolo sono basate sulla versione V7 di Websphere AS al momento della scrittura.
Dopo l'installazione di Websphere AS, creare il profile del server con il Profile Management Tool, qualora non si sia creato il profile in fase di installazione.
L'esempio jee5/booking
è basato sull'esempio PrenotazioneHotel (che gira su JBoss AS). E' stato progettato per girare anche su Glassfish, ma con i passi descritti sotto può essere deployato in Websphere. E' collocato nella directory $SEAM_DIST/examples/jee5/booking
.
Sotto sono riportate le modifiche al file di configurazione necessarie all'esempio base.
resources/WEB-INF/components.xml
Occorre cambiare il modo di ricerca EJB per WAS. Bisogna rimuovere /local
dalla fine dell'attributo jndi-pattern
. Dovrebbe apparire così:
<core:init jndi-pattern="java:comp/env/jboss-seam-jee5/#{ejbName}" debug="true"/>
resources/META-INF/ejb-jar.xml
Sostituire la stringa /local da ejb-ref-name
. Vedere il seguente codice finale:
<enterprise-beans>
<!-- EJB reference required when one Seam EJB component references another Seam EJB component using @In -->
<!-- Not required if you inject using @EJB, but then you lose state management and client-side interceptors (e.g., security) -->
<session>
<ejb-name
>RegisterAction</ejb-name>
<ejb-local-ref>
<ejb-ref-name
>jboss-seam-jee5/AuthenticatorAction</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.example.booking.Authenticator</local>
</ejb-local-ref>
</session>
</enterprise-beans
>
resources/WEB-INF/web.xml
Occorre apportare alcumi cambiamenti ai riferimenti EJB in web.xml
. Queste modifiche consentono a WAS di associare automaticamente i riferimenti EJB3 nel modulo web ai bean EJB3 nel modulo EAR. Sostituire tutte le stringhe /local in ejb-local-refs
.
<!-- JEE5 EJB3 names -->
<ejb-local-ref>
<ejb-ref-name
>jboss-seam-jee5/AuthenticatorAction</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.example.booking.Authenticator</local>
</ejb-local-ref
>
<ejb-local-ref>
<ejb-ref-name
>jboss-seam-jee5/BookingListAction</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.example.booking.BookingList</local>
</ejb-local-ref>
<ejb-local-ref>
<ejb-ref-name
>jboss-seam-jee5/RegisterAction</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.example.booking.Register</local>
</ejb-local-ref>
<ejb-local-ref>
<ejb-ref-name
>jboss-seam-jee5/ChangePasswordAction</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.example.booking.ChangePassword</local>
</ejb-local-ref>
<ejb-local-ref>
<ejb-ref-name
>jboss-seam-jee5/HotelBookingAction</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.example.booking.HotelBooking</local>
</ejb-local-ref>
<ejb-local-ref>
<ejb-ref-name
>jboss-seam-jee5/HotelSearchingAction</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.example.booking.HotelSearching</local>
</ejb-local-ref>
<ejb-local-ref>
<ejb-ref-name
>jboss-seam-jee5/EjbSynchronizations</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.transaction.LocalEjbSynchronizations</local>
</ejb-local-ref
>
Si noti che EjbSynchronizations
è un EJB predefinito in Seam e non è parte dell'esempio Prenotazione Hotel. Questo significa che se components.xml
specifica transaction:ejb-transaction
, allora occorre includere:
<ejb-local-ref>
<ejb-ref-name
>myapp/EjbSynchronizations</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local-home
></local-home>
<local
>org.jboss.seam.transaction.LocalEjbSynchronizations</local>
</ejb-local-ref
>
in web.xml. Se non viene incluso, si ottiene il seguente errore:
Name comp/env/myapp/EjbSynchronizations not found in context java:
resources/META-INF/persistence.xml
Per questo esempio useremo il datasource di default che è presente in WAS. Cambiare l'elemento jta-data-source
:
<jta-data-source
>DefaultDatasource</jta-data-source>
Poi occorre sistemare alcune proprietà Hibernate. Innanzitutto commentare le proprietà Glassfish. Poi occorre aggiungere/modificare le proprietà:
<!--<property name="hibernate.transaction.flush_before_completion" value="true"/>-->
<property name="hibernate.cache.provider_class"
value="org.hibernate.cache.HashtableCacheProvider"/>
<property name="hibernate.dialect" value="GlassfishDerbyDialect"/>
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"/>
hibernate.transaction.manager_lookup_class
— proprietà del gestore di transazioni standard Hibernate per WAS 6.X e 7
hibernate.transaction.flush_before_completion
— questo è commentato poiché si vuole che il container gestisce le transazioni. Inoltre se questo viene impostato a true
, viene lanciata un'eccezione da WAS quando viene cercato l'EJBContext.
com.ibm.wsspi.injectionengine.InjectionException: EJBContext may only be looked up by or injected into an EJB
hibernate.dialect
— a partire da WAS 6.1.0.9 l'embedded DB è stato cambiato al Derby DB come in Glassfish v2.
src/GlassfishDerbyDialect.java
Occorre prendere GlassfishDerbyDialect.java
e copiarlo nella directory /src
. La classe java è presente nella directory dei sorgenti dell'esempio JPA e può essere copiata usando il comando sottostante assumendo di essere nella directory jee5/booking
:
cp ../../jpa/src/GlassfishDerbyDialect.java ./src
Questa classe verrà messa nel file jboss-seam-jee5.jar
.
resources/import.sql
Questo file deve essere copiato dall'esempio JPA poiché sia Derby DB od il dialetto non supportano non supportano modifiche alla colonna ID
. I file sono identici tranne per questa colonna. Usare il seguente comando per eseguire la copia:
cp ../../jpa/resources-websphere7/import.sql ./resources
Per ottenere le modifiche applicate occorre apportare dei cambiamenti a build.xml
. Ci sono dei jar aggiuntivi richiesti dall'applicazione per funzionare con WAS. Questa sezione coprirà i cambiamenti da fare a build.xml
.
SI rimuova log4j.jar
affinché tutto l'output di log dell'applicazione venga aggiunto al log di WAS. Sono richiesti ulteriori passi per configurare log4j ma questi esulano dagli scopi di questo documento.
Aggiungere la seguente riga alla fine del file build.xml
. Questa sovrascrivere il fileset di default che viene usato per popolare jboss-seam-jee5.jar
:
<fileset id="jar.resources" dir="${resources.dir}">
<include name="import.sql" />
<include name="seam.properties" />
<include name="META-INF/persistence.xml" />
<include name="META-INF/ejb-jar.xml" />
</fileset
>
Ora ciò che manca è eseguire il task ant archive
ed il built dell'applicazione verrà messo nella directory jee5/booking/dist
.
Ora ogni cosa è al posto giusto. Ciò che manca è il deploy - qualche passo in più.
Per questo si userà la console di amministrazione di Websphere. Come prima ecco alcuni trucchi e suggerimenti da seguire.
I passi sottostanti riguardano la versione WAS dichiarata all'inizio. Le porte sono ai valori di default, se vengono cambiati occorre sostituire i valori.
Fare il login nella console di amministrazione
https://localhost:9043/admin
oppure
http://localhost:9060/admin
Accedere all'opzione menu Websphere enterprise applications
sotto il menu a sinistra Applications --> Application Type
.
In cima alla tabella Enterprise Applications
selezionare Install
. Sotto sono visualizzate le pagine del wizard con ciò che va fatto su ciascuna:
Preparazione per l'installazione dell'applicazione
Andare fino al file examples/jee5/booking/dist/jboss-seam-jee5.ear
usando il widget di upload dei file.
Selezionare il pulsante Next
.
Selezionare il pulsante Fast Path
.
Selezionare il pulsante Next
.
Selezionare le opzioni di installazione
Selezionare i check box Deploy enterprise beans
e Allow EJB reference targets to resolve automatically
. Queso serve amenoché si usi il tool di Websphere AS per impacchettare l'applicazione.
Selezionare il pulsante Next
.
Mappare i moduli sul server
Avendo un solo server non sono necessarie modifiche. Selezionare il pulsante Next
.
Sommario
Non sono necessarie modifiche. Selezionare il pulsante Finish
.
Installazione
Ora si vedra l'installazione ed il deploy dell'applicazione.
Quando termina selezionare il link Save
e si verrà reindirizzati alla tabella Enterprise Applications
.
Ora che si è installata l'applicazione occorre fare degli aggiustamenti ad essa prima di avviarla:
Partendo dalla tabella Enterprise Applications
selezionare il link Seam Booking
.
Selezionare il link Manage Modules
.
Selezionare il link jboss-seam-jee5-booking.war
.
Cambiare il combo box Class loader order
in Classes loaded with application class loader first (parent last)
.
Selezionare Apply
poi l'opzione Save
.
Ritornare alla pagina Seam Booking
.
Su questa pagina selezionare il link Class loading and update detection
.
Selezionare il pulsante radio Classes loaded with application class loader first
.
Selezionare Apply
poi l'opzione Save
.
Per avviare l'applicazione ritornare alla tabella Enterprise Applications
e selezionare l'applicazione nella lista. Quindi scegliere il pulsante Start
in cima alla tabella.
Ora si può accedere all'applicazione all'indirizzo http://localhost:9080/seam-jee5-booking/index.html
.
Fortunatamente far funzionare l'esempio jpa
è molto più semplice che per l'esempio jee5
. Questo è l'esempio Prenotazione Hotel implementato in Seam POJOs usando Hibernate JPA con le transazioni JPA. Non usa EJB3.
L'esempio ha già un pò di configurazioni e build script per molti comuni container incluso Websphere.
La prima cosa da fare è costruire e deployare quell'esempio. Poi verranno apportate delle modifiche chiave necessarie.
Il building richiede l'esecuzione del corretto comando ant:
ant websphere7
. Questo creerà una distribuzione specifica per il container e le directory esplose per l'archivio con etichetta websphere7
.
Questo è simile all'esempio jee5
all'indirizzo Sezione 40.2.3, «Deploy dell'applicazione in Websphere», ma senza molti passi.
Dalla tabella Enterprise Applications
selezionare il pulsante Install
.
Preparazione per l'installazione dell'applicazione
Navigare fino al file examples/jpa/dist-websphere7/jboss-seam-jpa.war
usando il widget per l'upload dei file.
Selezionare il pulsante Fast Path
.
Selezionare il pulsante Next
.
Selezionare il pulsante Next
per le prossime tre pagine, non servono modifiche.
Mappare context roots per i moduli Web
Nel text box Context root
inserire jboss-seam-jpa
.
Selezionare il pulsante Next
.
Pagina Summario
Rivedere le impostazioni e selezionare il pulsante Finish
per installre l'applicazione. Quando l'installazione è terminata selezionare il link Save
e si ritornerà alla tabella Enterprise Applications
.
Come per l'esempio jee5
ci sono alcuni cambiamenti necessari al class loader prima di avviare l'applicazione. Seguire le istruzioni in installation adjustments for jee5 example e cambiare jboss-seam-jpa_war
per Seam Booking
.
Infine avviare l'applicazione selezionandola nella tabella Enterprise Applications
e cliccando il pulsante Start
.
Si può ora accedere all'applicazione all'indirizzo http://localhost:9080/jboss-seam-jpa/index.html
.
Le differenze tra gli esempi JPA che eseguono il deploy in JBoss 4.2 e Websphere AS V7 sono perlopiù attese; cambiamenti alle librerie ed al file di configurazione.
Cambiamenti al file di configurazione
META-INF/persistence.xml
— le maggiori modifiche sono per il path JNDI del datasource, passando alla classe di ricerca del gestore di transazioni Websphere e cambiando il dialetto Hibernate a GlassfishDerbyDialect
.
WEB-INF/components.xml
— qua la modifica è jndi-pattern
senza la stringa /local.
META-INF/ejb-jar.xml
— stessa modifica in ejb-ref-name
, dove la stringa /local diventa jboss-seam-jee5/AuthenticatorAction
.
src/GlassfishDerbyDialect.java
— questa classe serve per la modifica del dialetto Hibernate a GlassfishDerbyDialect
import.sql
— la colonna ID
sia del dialetto sia del Derby DB non può essere popolata ed è stata rimossa.
Modifiche per le librerie dipendenti
La versione di Websphere richiede parecchi pacchetti di libreria inclusi invece in JBoss AS. Questi servono principalmente per Hibernate e le sue dipendenze. Sotto appare la lista dei jar addizionali necessari sopra e a prescindere dall'esempio JBoss JPA
.
Per usare Hibernate come provider JPA occorrono i seguenti jar:
hibernate.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
hibernate-validator.jar
commons-collections.jar
jboss-common-core.jar
Websphere richiede vari jar di Terze Parti:
antlr.jar
cglib.jar
asm.jar
dom4j.jar
javassist.jar
concurrent.jar
seam-gen
è un tool molto utile per gli sviluppatori per ottenere velocemente applicazioni pronte per l'esecuzione e fornisce un fondamento per aggiungere proprie funzionalità. Di base seam-gen
produrrà applicazioni configurate per girare su JBoss AS. Queste istruzioni mostreranno i passi necessari per farle funzionare su Websphere. Come dichiarato sopra in Sezione 40.2, «L'esempio jee5/booking
» ci sono alcune modifiche sottili necessarie per avere un'applicazione EJB3 funzionante. Questa sezione mostrerà gli esatti passi da compiere.
Il primo passo è impostare seam-gen
per costruire il progetto base. Ci sono parecchie scelte fatte sotto, in particolar modo il datasource ed i valori Hibernate che occorre aggiustare una volta che il progetto è creato.
./seam setup Buildfile: build.xml init: setup: [echo] Welcome to seam-gen :-) [input] Enter your Java project workspace (the directory that contains your Seam projects) [C:/Projects] [C:/Projects] /home/jbalunas/workspace [input] Enter your JBoss home directory [C:/Program Files/jboss-4.2.3.GA] [C:/Program Files/jboss-4.2.3.GA] /home/jbalunas/jboss/jboss-4.2.3.GA [input] Enter the project name [myproject] [myproject] websphere_example [echo] Accepted project name as: websphere_example [input] Do you want to use ICEFaces instead of RichFaces [n] (y, [n], ) [input] skipping input as property icefaces.home.new has already been set. [input] Select a RichFaces skin [blueSky] ([blueSky], classic, ruby, wine, deepMarine, emeraldTown, sakura, DEFAULT) [input] Is this project deployed as an EAR (with EJB components) or a WAR (with no EJB support) [ear] ([ear], war, ) [input] Enter the Java package name for your session beans [org.jboss.seam. tutorial.websphere.action] [org.jboss.seam.tutorial.websphere.action] org.jboss.seam.tutorial.websphere.action [input] Enter the Java package name for your entity beans [org.jboss.seam. tutorial.websphere.model] [org.jboss.seam.tutorial.websphere.model] org.jboss.seam.tutorial.websphere.model [input] Enter the Java package name for your test cases [org.jboss.seam. tutorial.websphere.action.test] [org.jboss.seam.tutorial.websphere.action.test] org.jboss.seam.tutorial.websphere.test [input] What kind of database are you using? [hsql] ([hsql], mysql, oracle, postgres, mssql, db2, sybase, enterprisedb, h2) [input] Enter the Hibernate dialect for your database [org.hibernate. dialect.HSQLDialect] [org.hibernate.dialect.HSQLDialect] [input] Enter the filesystem path to the JDBC driver jar [/tmp/seam/lib/hsqldb.jar] [/tmp/seam/lib/hsqldb.jar] [input] Enter JDBC driver class for your database [org.hsqldb.jdbcDriver] [org.hsqldb.jdbcDriver] [input] Enter the JDBC URL for your database [jdbc:hsqldb:.] [jdbc:hsqldb:.] [input] Enter database username [sa] [sa] [input] Enter database password [] [] [input] Enter the database schema name (it is OK to leave this blank) [] [] [input] Enter the database catalog name (it is OK to leave this blank) [] [] [input] Are you working with tables that already exist in the database? [n] (y, [n], ) [input] Do you want to drop and recreate the database tables and data in import.sql each time you deploy? [n] (y, [n], ) [propertyfile] Creating new property file: /rhdev/projects/jboss-seam/svn-seam_2_0/jboss-seam-2_0/seam-gen/build.properties [echo] Installing JDBC driver jar to JBoss server [copy] Copying 1 file to /home/jbalunas/jboss/jboss-4.2.3.GA/server/default/lib [echo] Type 'seam create-project' to create the new project BUILD SUCCESSFUL Total time: 3 minutes 5 seconds
Digitare ./seam new-project
per creare il progetto e cd /home/jbalunas/workspace/websphere_example
per la nuova struttura creata.
Ora serve apportare alcuni cambiamenti al progetto generato.
resources/META-INF/persistence-dev.xml
Modificare jta-data-source
in DefaultDatasource
. Verrà usato il DB integrato di Websphere.
Aggiungere o modificare le proprietà sotto. Queste sono descritte in dettaglio in Sezione 40.2, «L'esempio jee5/booking
»:
<property name="hibernate.dialect" value="GlassfishDerbyDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.cache.provider_class"
value="org.hibernate.cache.HashtableCacheProvider"/>
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"/>
Rimuovere i metodi specifici di JBoss AS per esporre EntityManagerFactory:
<property
name="jboss.entity.manager.factory.jndi.name"
value="java:/websphere_exampleEntityManagerFactory"
>
Serve modificare persistence-prod.xml
anche se si vuole eseguire il deploy in Websphere usando il profile prod.
src/GlassfishDerbyDialect.java
Come per gli altri esempi occorre includere questa classe java per il supporto DB. Può essere copiata dall'esempio jpa
nella directory websphere_example/src
.
cp $SEAM/examples/jpa/src/GlassfishDerbyDialect.java ./src
resources/META-INF/jboss-app.xml
Si può cancellare questo file poiché non si eseguirà il deploy in JBoss AS (jboss-app.xml
viene usato per abilitare l'isolamento del classloading in JBoss AS)
resources/*-ds.xml
Si possono cancellare questi file poiché non si eseguirà il deploy in JBoss AS (questi file definiscono i datasource in JBoss AS, si userà invece il datasource di default di Websphere)
resources/WEB-INF/components.xml
Abilitare l'integrazione delle transazioni gestite dal container - aggiungere il componente <transaction:ejb-transaction />
ed la sua dichiarazione di namespace xmlns:transaction="http://jboss.com/products/seam/transaction"
Modificare jndi-pattern
in java:comp/env/websphere_example/#{ejbName}
Non serve managed-persistence-context
per quest'esempio e quindi si può cancellare questa riga.
<persistence:managed-persistence-context name="entityManager"
auto-create="true"
persistence-unit-jndi-name="java:/websphere_exampleEntityManagerFactory"/>
resources/WEB-INF/web.xml
Come per l'esempio jee5/booking
occorre aggiungere i riferimenti EJB a web.xml. Questi riferimenti richiedono di sostituire la stringa /local in ejb-ref-name
e selezionarli affinché Websphere esegua il corretto binding.
<ejb-local-ref>
<ejb-ref-name
>websphere_example/AuthenticatorAction</ejb-ref-name>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.tutorial.websphere.action.Authenticator</local>
</ejb-local-ref
>
<ejb-local-ref>
<ejb-ref-name
>websphere_example/EjbSynchronizations</ejb-ref-name
>
<ejb-ref-type
>Session</ejb-ref-type>
<local
>org.jboss.seam.transaction.LocalEjbSynchronizations</local>
</ejb-local-ref
>
Si vuole prendere il componente POJO Seam Authenticator
e creare da questo un EJB3.
Cambiare la classe Authenticator generata
Rinominare la classe in AuthenticatorAction
Aggiungere l'annotazione @Stateless
alla nuova classe AuthenticatorAction
.
Creare un'interfaccia chiamata Authenticator
ed implementata da AuthenticatorAction
(EJB3 richiede che i bean di sessione abbiano un'interfaccia locale). Annotare l'interfaccia con @Local
, ed aggiungere un singolo metodo con la stessa firma come authenticate
in AuthenticatorAction
.
@Name("authenticator") @Stateless public class
AuthenticatorAction implements Authenticator {
@Local public interface Authenticator {
public boolean authenticate();
}
Abbiamo già aggiunto il suo riferimento al file web.xml
e quindi si può procedere.
Quest'applicazione ha requisiti simili come nell'esempio jee5/booking
.
Modificare il target di default a archive
(non si tratterà il deploy automatico in Websphere).
<project name="websphere_example" default="archive" basedir="."
>
Websphere cerca il file drools /security.drl
nella radice di file war
invece che nella radice di websphere_example.jar
e quindi serve spostare build.xml
nella corretta posizione al momento del build. La seguente riga deve essere aggiunta in cima al target <target name="war" depends="compile" description="Build the distribution .war file">
.
<copy todir="${war.dir}">
<fileset dir="${basedir}/resources" >
<include name="*.drl" />
</fileset>
</copy
>
Ora occorre inserire i jar extra in build.xml
. Cercare la sezione <fileset dir="${basedir}">
del task sotto. Aggiungere nuovi include in fondo al fileset.
<target name="ear" description="Build the EAR">
<copy todir="${ear.dir}">
<fileset dir="${basedir}/resources">
<include name="*jpdl.xml" />
<include name="*hibernate.cfg.xml" />
<include name="jbpm.cfg.xml" />
</fileset>
<fileset dir="${basedir}">
<include name="lib/jbpm*.jar" />
<include name="lib/jboss-el.jar" />
<include name="lib/drools-*.jar"/>
<include name="lib/core.jar"/>
<include name="lib/janino*.jar"/>
<include name="lib/antlr-*.jar"/>
<include name="lib/mvel*.jar"/>
<include name="lib/richfaces-api*.jar" />
</fileset>
</copy>
<copy todir="${ear.dir}/META-INF">
<fileset dir="${basedir}/resources/META-INF">
<include name="application.xml" />
<include name="jboss-app.xml" />
</fileset>
</copy>
</target
>
Dipendenze Hibernate
<!-- Hibernate and deps -->
<include name="lib/hibernate.jar"/>
<include name="lib/hibernate-commons-annotations.jar"/>
<include name="lib/hibernate-annotations.jar"/>
<include name="lib/hibernate-entitymanager.jar"/>
<include name="lib/hibernate-validator.jar"/>
<include name="lib/jboss-common-core.jar" />
Dipendenze di terze parti
<!-- 3rd party and supporting jars -->
<!--<include name="lib/log4j.jar" />-->
<include name="lib/javassist.jar"/>
<include name="lib/dom4j.jar" />
<include name="lib/concurrent.jar" />
<include name="lib/cglib.jar"/>
<include name="lib/asm.jar"/>
<include name="lib/antlr.jar" />
<include name="lib/commons-logging.jar" />
<include name="lib/commons-collections.jar" />
jboss-seam.jar
- questo è richiesto nella directory base ear
.
<!-- seam jar -->
<include name="lib/jboss-seam.jar" />
Si dovrebbe terminare con qualcosa di simile a:
<fileset dir="${basedir}">
<include name="lib/jbpm*.jar" />
<include name="lib/jboss-el.jar" />
<include name="lib/drools-*.jar"/>
<include name="lib/core.jar"/>
<include name="lib/janino*.jar"/>
<include name="lib/antlr-*.jar"/>
<include name="lib/mvel*.jar"/>
<include name="lib/richfaces-api*.jar" />
<!-- Hibernate and deps -->
<include name="lib/hibernate.jar"/>
<include name="lib/hibernate-commons-annotations.jar"/>
<include name="lib/hibernate-annotations.jar"/>
<include name="lib/hibernate-entitymanager.jar"/>
<include name="lib/hibernate-validator.jar"/>
<include name="lib/jboss-common-core.jar" />
<!-- 3rd party and supporting jars -->
<include name="lib/javassist.jar"/>
<include name="lib/dom4j.jar" />
<include name="lib/concurrent.jar" />
<include name="lib/cglib.jar"/>
<include name="lib/asm.jar"/>
<include name="lib/antlr.jar" />
<include name="lib/commons-logging.jar" />
<include name="lib/commons-collections.jar" />
<!-- seam jar -->
<include name="lib/jboss-seam.jar" />
</fileset
>
Eseguire il build dell'applicazione chiamando ant
nella directory base del progetto (es. /home/jbalunas/workspace/websphere_example
). Il target del build sarà dist/websphere_example.ear
.
Per fare il deploy dell'applicazione seguire le istruzioni in Sezione 40.2.3, «Deploy dell'applicazione in Websphere» ma usare i riferimenti a questo progetto websphere_example
invece che a jboss-seam-jee5
.
Controllare l'applicazione all'indirizzo: http://localhost:9080/websphere_example/index.html