SeamFramework.orgCommunity Documentation
Non occorre alcuna configurazione speciale dell'applicazione oltre all'aggiunta di META-INF/beans.xml
o WEB-INF/beans.xml
.
Se si usa JBoss AS 5.0.1.GA allora occorre installare Web Beans come extra. Innanzitutto occorre dire a Web Beans dove si trova JBoss. Modificare jboss-as/build.properties
ed impostare la proprietà jboss.home
. Per esempio:
jboss.home=/Applications/jboss-5.0.1.GA
Ora installiamo Web Beans:
$ cd webbeans-$VERSION/jboss-as $ ant update
Un nuovo deploer - webbeans.deployer
- viene aggiunto a JBoss AS. Questo aggiunge a JBoss AS il supporto ai deploy JSR-299, e consente a Web Beans di interrogare il container EJB3 per scoprire quali EJB sono installati nell'applicazione.
Web Beans è incluso in tutte le release di JBoss AS da 5.1 in avanti.
Web Beans can be used in any Servlet container such as Tomcat 6.0 or Jetty 6.1.
Web Beans doesn't support deploying session beans, injection using @EJB
, or @PersistenceContext
or using transactional events in Servlet containers.
Web Beans should be used as a web application library in a servlet container. You should place webbeans-servlet.jar
in WEB-INF/lib
. webbeans-serv;et.jar
is an "uber-jar" provided for your convenience. Instead, you could use its component jars:
jsr299-api.jar
webbeans-api.jar
webbeans-spi.jar
webbeans-core.jar
webbeans-logging.jar
webbeans-servlet-int.jar
javassist.jar
dom4j.jar
You also need to explicitly specify the servlet listener (used to boot Web Beans, and control its interaction with requests) in web.xml
:
<listener> <listener-class >org.jboss.webbeans.environment.servlet.Listener</listener-class> </listener >
Tomcat ha un JNDI read-only, e quindi Web Beans non può automaticamente associare il Manager. Per associare il Manager a JNDI occorre aggiungere a META-INF/context.xml
:
<Resource name="app/Manager" auth="Container" type="javax.inject.manager.Manager" factory="org.jboss.webbeans.resources.ManagerObjectFactory"/>
e renderlo disponibile nel proprio deploy aggiungendo questo a web.xml
:
<resource-env-ref> <resource-env-ref-name> app/Manager </resource-env-ref-name> <resource-env-ref-type> javax.inject.manager.Manager </resource-env-ref-type> </resource-env-ref >
Tomcat consente solo di associare le entry a java:comp/env
, e quindi il Manager sarà disponibile in java:comp/env/app/Manager
Web Beans supporta anche l'iniezione dei servlet in Tomcat. Per abilitarla, collocare webbeans-tomcat-support.jar
in $TOMCAT_HOME/lib
, ed aggiungere il seguente codice a META-INF/context.xml
:
<Listener className="org.jboss.webbeans.environment.tomcat.WebBeansLifecycleListener" />
Oltre alla migliorata integrazione dello stack Java Enterprise, Web Beans fornisce anche uno stato dell'arte typesafe, con dependency injection stateful . Questo è utile in un ampio raggio di applicazioni tipo, enterprise o altre. Per facilitare ciò, Web Beans fornisce semplici mezzi per eseguire in ambiente Java Standard Edition indipendentemente da qualsiasi caratteristica Enterprise Edition.
Eseguendo in ambiente SE sono disponibili le seguenti caratteristiche di Web Beans:
Semplice Web Beans (POJOs)
Iniezioni di dipendenza typesafe
Applicazione e contesti dipendenti
Tipi di binding
Stereotipi
Modello a eventi typesafe
Per semplificare la vita agli sviluppatori Web Beans fornisce un modulo speciale con un metodo main che avvia il manager Web Beans, registrando automaticamente tutti i Web BEans semplici trovati nel classpath. Questo elimina il bisogno da parte degli sviluppatori di scrivere codice per il bootstrap. L'entry point per le applicazioni Web Beans SE è un semplice Web Bean che osserva l'evento standard @Deployed Manager
. I parametri da linea di comando possono essere iniettati usando una delle seguenti:
@Parameters List<String
> params;
@Parameters String[] paramsArray; // useful for compatability with existing classes
Ecco un esempio di una semplice applicazione Web Beans SE:
@ApplicationScoped
public class HelloWorld
{
@Parameters List<String
> parameters;
public void printHello( @Observes @Deployed Manager manager )
{
System.out.println( "Hello " + parameters.get(0) );
}
}
Le applicazioni Web Beans SE vengono avviate eseguendo il seguente metodo main.
java org.jboss.webbeans.environments.se.StartMain <args
>
Se occorre fare una qualsiasi inizializzazione personalizzata del manager Web Beans, per esempio registrando i contesti personalizzati o inizializzando le risorse dei bean, si può fare questo in risposta all'evento @Initialized Manager
. Il seguente esempio registra un contesto personalizzato:
public class PerformSetup
{
public void setup( @Observes @Initialized Manager manager )
{
manager.addContext( ThreadContext.INSTANCE );
}
}
I parametri da linea di comando non sono disponibili per l'injection fino a che non viene lanciato l'evento @Deployed Manager
. Se serve l'accesso ai parametri durante l'inizializzazione si può averlo tramite il metodo public static String getParameters()
in StartMain
.