blob: 92d7a02628a3418aa4450c24c3de456b5721c9a6 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
<title>Com comen&ccedil;ar amb aplicacions Java EE 6</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<meta name="description" content="A tutorial that introduces NetBeans IDE 6.8 support for some of the new features in Java EE 6.">
<link rel="stylesheet" href="../../../netbeans.css">
<meta name="author" content="ken ganfield">
</head>
<body>
<h1>Com comen&ccedil;ar amb aplicacions Java EE 6</h1>
<p>aquest document proporciona un breu introducci&oacute; a algunes de les caracter&iacute;stiques introdu&iuml;des com a part de l'especificaci&oacute; de l'edici&oacute; empresarial de Java 6 (Java EE 6). Per il&middot;lustrar les noves caracter&iacute;stiques, aquest tutoria demostrar&agrave; com crear una aplicaci&oacute; web senzilla de Java EE 6 web que cont&eacute; un bean de sessi&oacute; sense-estat EJB 3.1 en la part frontal d'una classe d'entitat. Utilitzareu l'assistent al IDE per generar una classe d'entitat i un bean de sessi&oacute;. El codi generat per l'assistent utilitza consultes que estan definides en l'API Criteria que forma part de JPA 2.0 i que est&agrave; contemplada en l'especificaci&oacute; de Java EE 6. Despr&eacute;s creareu un bean gestionat amb nom que accedeixi a la part frontal de la sessi&oacute; i al disseny de presentaci&oacute; que utilitza el Framework de visualitzaci&oacute; Facelets com s'especifica en JSF 2.0.</p>
<p>Aquesta guia d'aprenentatge est&agrave; basada en l'entrada del blog <a href="http://www.adam-bien.com/roller/abien/entry/simplest_possible_jsf_2_ejb" title="http://www.adam-bien.com/roller/abien/entry/simplest_possible_jsf_2_ejb" target="_blank"> Simplest Possible JSF 2 / EJB 3.1 / JPA Component - With WAR Deployment</a> per Adam Bien. Podeu trobar exemples addicionals de Java EE al projecte kenai d'Adam Bien <a href="http://kenai.com/projects/javaee-patterns" title="http://kenai.com/projects/javaee-patterns" target="_blank"> Java EE Patterns and Best Practices</a> i al seu llibre &quot;Real World Java EE Patterns - Rethinking Best Practices&quot;, disponible a <a href="http://press.adam-bien.com" title="http://press.adam-bien.com" target="_blank">http://press.adam-bien.com</a>.</p>
<p class="notes">Aquest document utilitza el llan&ccedil;ament de l'IDE NetBeans 6.8.</p>
<p><b>Exercicis de la guia d'aprenentatge</b></p>
<img src="../../../images_www/articles/71/netbeans-stamp-71-72.gif" class="stamp" width="114" height="114" alt="El contingut d'aquesta p&agrave;gina s'aplica al IDE NetBeans 7.1" title="El contingut d'aquesta p&agrave;gina s'aplica al IDE NetBeans 7.1" />
<ul>
<li><a href="#Exercise_1">Creant el projecte d'aplicaci&oacute; Web</a></li>
<li><a href="#Exercise_2">Creant la classe d'entitat i la part frontal de la sessi&oacute;</a>
<ul>
<li><a href="#Exercise_2a">Creant la classes d'entitat</a></li>
<li><a href="#Exercise_2b">Creant la part frontal de la sessi&oacute;</a></li>
</ul>
</li>
<li><a href="#Exercise_3">Creant el Bean gestionat JSF i les p&agrave;gines JSF</a>
<ul>
<li><a href="#Exercise_3a">Creant el Bean gestionat</a></li>
<li><a href="#Exercise_3b">Modificant la p&agrave;gina d'&iacute;ndex</a></li>
<li><a href="#Exercise_3c">Creant la p&agrave;gina de resultats</a></li>
</ul>
</li>
<li><a href="#Exercise_4">Executant el projecte</a>
<!--<ul>
<li><a href="#Exercise_4a">Downloading the Solution Project</a></li>
</ul>-->
</li>
<!--<li><a href="#Exercise_5">Troubleshooting</a></li>-->
</ul>
<p><b>Per seguir aquesta guia d'aprenentatge, necessiteu el seg&uuml;ent programari i recursos.</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Programari o Recurs</th>
<th class="tblheader" scope="col">Versi&oacute; necess&agrave;ria</th>
</tr>
<tr>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">IDE NetBeans</a></td>
<td class="tbltd1">6.8, versi&oacute; Java</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Kit de desenvolupament de Kava (JDK)</a></td>
<td class="tbltd1">versi&oacute; 6</td>
</tr>
<tr>
<td class="tbltd1">GlassFish Server Open Source Edition</td>
<td class="tbltd1">3.0.1</td>
</tr>
</tbody>
</table>
<p class="note"><strong>Nota.</strong> GlassFish V3 necessita el kit de desenvolupament de Java (JDK) 6.</p>
<p><b>Prerequisits</b></p>
<p>Aquest document assumeix que teniu un coneixement b&agrave;sic de, o experi&egrave;ncia de programaci&oacute; amb, les seg&uuml;ent tecnologies:</p>
<ul>
<li>Programaci&oacute; Java</li>
<li>IDE NetBeans</li>
</ul>
<!--<p class="tips">You can download <a href="https://netbeans.org/projects/samples/downloads/download/Samples%252FJavaEE%252FSimpleEE6App.zip">a zip archive of the finished project</a>.</p>-->
<!-- ===================================================================================== -->
<a name="Exercise_1"></a>
<!--Exercise 1: -->
<h2>Creant el projecte d'aplicaci&oacute; Web</h2>
<p>En aquest exercici creareu una aplicaci&oacute; web senzilla. Quant creeu l'aplicaci&oacute; web especificareu el servidor d'aplicacions GlassFish v3 com a objectiu del contenidor Java EE. El servidor d'aplicacions GlassFish v3 &eacute;s compatible amb Java EE i inclou les biblioteques JSF 2.0 que es necessiten en aquesta aplicaci&oacute;.</p>
<p>En l'assistent de nou projecte seleccionareu Java EE 6 web com la versi&oacute; de Java EE. Java EE 6 Web &eacute;s un perfil Java EE 6 lleuger que cont&eacute; un subconjunt de la plataforma sencera de Java EE 6. El perfil Java EE 6 Web est&agrave; dissenyat per a aplicacions web que no necessiten tecnologies avan&ccedil;ades de Java EE 6 com el suport per a interf&iacute;cies remotes, tota l'especificaci&oacute; de EJB 3.1 i l'API de servei de missatges Java (JMS, de l'angl&egrave;s Java Message Service).</p>
<p>El perfil Web suporta el processament de la transacci&oacute; i la gesti&oacute; de persist&egrave;ncia que s&oacute;n utilitzats de freq&uuml;entment en aplicacions web empresarials. Podeu utilitzar el perfil Java EE Web per aplicacions web que utilitzen beans de sessi&oacute; amb interf&iacute;cie local o sense interf&iacute;cie. El perfil Java EE sencer es requerit si l'aplicaci&oacute; utilitza una interf&iacute;cie remota.</p>
<ol>
<li>Seleccioneu Fitxer &gt; Nou projecte (Ctrl-Maj-N) des del men&uacute; principal.</li>
<li>Seleccioneu Aplicaci&oacute; Web des de la categoria Java Web i cliqueu a Seg&uuml;ent.</li>
<li>Escriviu <strong>SimpleEE6App</strong> pel nom del projecte i establiu una localitzaci&oacute; per al projecte. </li>
<li>Desmarqueu l'opci&oacute; Utilitzar un directori dedicat per emmagatzemar biblioteques, si est&egrave;s seleccionat. Cliqueu a Seg&uuml;ent.<br />
(Per aquesta guia d'aprenentatge no hi ha cap ra&oacute; de pes per copiar les biblioteques del projecte a una carpeta dedicada perqu&egrave; no necessitareu compartir les biblioteques amb altres usuaris o projectes.)<br />
</li>
<li>Establiu el servidor a GlassFish v3 i establiu la versi&oacute; de Java EE a Java EE 6 web. Cliqueu a Seg&uuml;ent.<br/>
<img src="../../../images_www/articles/71/javaee/gettingstarted/newappwizard.png" alt="Assistent nou projecte" title="panell servidor i prefer&egrave;ncies en l'assistent de nou projecte" class="margin-around b-all">
</li>
<li>Seleccioneu JavaServer Faces en el panell de Frameworks. Cliqueu a Finalitzar
<p>Per defecte, si esteu desenvolupant una aplicaci&oacute; web Java EE 6 i desplegant a GlassFish V3, l'IDE seleccionar&agrave; la biblioteca JSF2.0. La biblioteca JSF 2.0 us permet utilitzar Facelets com a llenguatge de la p&agrave;gina i tamb&eacute; proporciona suport per a JSF 1.2 i JSP.</p>
<img src="../../../images_www/articles/71/javaee/gettingstarted/newappwizard2.png" alt="Assistent nou projecte" title="panell Frameworks en l'assistent de nou projecte" class="margin-around b-all"></li>
</ol>
<p>Quant cliqueu a Finalitzar, l'IDE crea el projecte i l'obre en la finestra de projectes. El IDE crea autom&agrave;ticament la p&agrave;gina JSF <tt>index.xhtml</tt> i l'obre en l'editor.</p>
<a name="Exercise_2"></a>
<h2>Creant la classe d'entitat i la part frontal de la sessi&oacute;</h2>
<p>En aquesta secci&oacute; creareu una classe d'entitat i la part frontal de la sessi&oacute; per a la classe d'entitat. Una classe d'entitat &eacute;s un objecte Java antic i planer (POJO, de l'angl&egrave;s Plain Old Java Object), una classe Java senzilla que est&agrave; identificada com una entitat mitjan&ccedil;ant l'anotaci&oacute; <tt>@Entity</tt>. Comen&ccedil;ant amb l'especificaci&oacute; Java EE 5, podeu utilitzar les classes d'entitat com a objectes persistents per a representar taules en una base de dades.
</p>
<p>La part frontal de la sessi&oacute; per la classe d'entitat en aquesta aplicaci&oacute; &eacute;s un bean de sessi&oacute; sense estat. L'arquitectura JavaBean Empresaria (EJB, de l'angl&egrave;s Enterprise JavaBean) 3.1 introdu&iuml;da com a part de l'especificaci&oacute; de Java EE 6 us permet crear beans de sessi&oacute; sense les interf&iacute;cies de negoci que eren necess&agrave;ries en EJB 3.0. L'especificaci&oacute; Java EE 6 tamb&eacute; us permet empaquetar components EJB directament en un fitxer WAR. Aquest simplifica el desenvolupament d'aplicacions web petites tot eliminant la necessitat de crear m&ograve;duls EJB separats que estan empaquetats com a arxius JAR en un arxiu EAR. Tanmateix, per a aplicacions empresarials grans que estan distribu&iuml;des al voltant de m&agrave;quines diferents, encara voldreu continuar creant arxius EAR per separar la vostra l&ograve;gica de negoci de la capa de presentaci&oacute;.</p>
<p class="tips">Per a m&eacute;s informaci&oacute; quant a les classes d'entitat i persist&egrave;ncia, vegeu el cap&iacute;tol <strong>Introducci&oacute; a l'API Persist&egrave;ncia de Java</strong> en la <a href="http://java.sun.com/javaee/6/docs/tutorial/doc/index.html" target="_blank">Guia d'aprenentatge Java EE 6, Volum I</a>.</p>
<p class="tips">Per a m&eacute;s informaci&oacute; quant als beans de sessi&oacute;, vegeu el cap&iacute;tol <strong>Beans Empresarials</strong> en la <a href="http://java.sun.com/javaee/6/docs/tutorial/doc/index.html" target="_blank">Guia d'aprenentatge Java EE 6, Volum I</a>.</p>
<div class="indent">
<a name="Exercise_2a"></a>
<h3>Creant la classe d'entitat</h3>
<p>En aquest exercici utilitzareu l'assistent Nova classe d'entitat, per crear una senzilla classe d'entitat persistent. Tamb&eacute; utilitzareu l'assistent per crear una unitat de persist&egrave;ncia que defineixi la font de dades i el gestor d'entitat utilitzats en l'aplicaci&oacute;. Afegireu un camp en la classe per representar les dades en la vostra taula i generar els m&egrave;todes getter i setter pel nou camp.</p>
<p>Una classe d'entitat ha de tenir una clau prim&agrave;ria. Quant creeu la classe d'entitat mitjan&ccedil;ant l'assistent, l'IDE per defecte genera el camp <tt>id</tt> i anota el camp amb l'anotaci&oacute; <tt>@Id</tt> per declarar el camp com a clau prim&agrave;ria. El IDE tamb&eacute; afegeix l'anotaci&oacute; <tt>@GeneratedValue</tt> i especifica l'estrat&egrave;gia de generaci&oacute; de clau pel camp id primari.</p>
<p>Per crear la classe d'entitat. realitzeu els seg&uuml;ent passos.</p>
<ol>
<li>En el node del projecte amb un clic dret de ratol&iacute;, seleccioneu Nou &gt; Altres.</li>
<li>Seleccioneu la classe d'entitat des de la categoria Persist&egrave;ncia. Cliqueu a Seg&uuml;ent.</li>
<li>Escriviu <strong>Message</strong> pel nom de la classe.</li>
<li>Escriviu <strong>entities</strong> pel paquet.</li>
<li>Cliqueu al bot&oacute; Crear Unitat Persist&egrave;ncia. </li>
<li>Seleccioneu la font de dades (per exemple, seleccioneu <tt>jdbc/sample</tt> si voleu utilitzar JavaDB).
<p>La font de dades per <tt>jdbc/sample</tt> est&agrave; integrada amb l'IDE quant instal&middot;leu l'IDE i GlassFish, per&ograve; podeu especificar una font de dades diferent si voleu utilitzar una base de dades diferent.</p>
<p>Podeu mantindre les altres opcions predeterminades (nom unitat de persist&egrave;ncia, prove&iuml;dor de persist&egrave;ncia EclipseLink). Comproveu que la unitat de persist&egrave;ncia estigui utilitzant l'API de Transacci&oacute; Java i que l'estrat&egrave;gia de generaci&oacute; de taula estigui establerta a Crear, ja que les tales basades en les vostres classes d'entitat s&oacute;n creades quant l'aplicaci&oacute; &eacute;s desplegada.
</p></li>
<li>Cliqueu a Crear, en l'assistent Nova unitat de persist&egrave;ncia.</li>
<li>Cliqueu a Finalitzar el l'assistent de la nova classe d'entitat.
<p>Quant cliqueu a Finalitzar, l'IDE crea la classe d'entitat i obre la classe en l'editor. Podeu veure que l'IDE ha generat el camp id <tt>private Long id;</tt> i ha anotat el camp amb <tt>@Id</tt> i <tt>@GeneratedValue(strategy = GenerationType.AUTO)</tt>.</p></li>
<li>En l'editor, afegiu el camp <tt>message</tt> (en negreta) despr&eacute;s del camp <tt>id</tt>.
<pre class="examplecode">
private Long id;
<strong>private String message;</strong></pre>
</li>
<li>Cliqueu amb el bot&oacute; dret a l'editor i seleccioneu Inserir codi (Ctrl+I) i despr&eacute;s seleccioneu Getter i Setter.</li>
<li>En el quadre de di&agrave;leg Generar Generate Getters i Setters, seleccioneu el camp <tt>message</tt> i cliqueu a Generar.
<p>El IDE genera els m&egrave;todes getter i setter pel camp <tt>message</tt>.</p>
<img src="../../../images_www/articles/72/javaee/gettingstarted/getters-dialog.png" alt="Assistent crear unitat de persist&egrave;ncia" title="Assistent crear unitat de persist&egrave;ncia" class="margin-around b-all"></li>
<li>Deseu els vostres canvis.</li>
</ol>
<p>La classe d'entitat representa una taula en la base de dades. Quant executeu aquesta aplicaci&oacute;, es crear&agrave; autom&agrave;ticament una taula Message a la base de dades. La taula contindr&agrave; les columnes <tt>id</tt> i <tt>message</tt>.</p>
<p>Si observeu la unitat de persist&egrave;ncia en l'editor XML, podeu veure que l'aplicaci&oacute; utilitzar&agrave; l'API de transacci&oacute; Java (JTA, de l'angl&egrave;s Java Transaction API) (<tt>transaction-type=&quot;JTA&quot;</tt>). Aix&ograve; especifica que la responsabilitat del cicle de vida de les entitats en el content de persist&egrave;ncia est&agrave; assignat al contenidor. Aix&ograve; resulta un menor codi perqu&egrave; el cicle de vida de l'entitat est&agrave; gestionat pel contenidor no per l'aplicaci&oacute;. Per a m&eacute;s informaci&oacute; quant a la utilitzaci&oacute; de JTA per gestionar transaccions, vegeu la documentaci&oacute; de l'<a href="http://java.sun.com/javaee/technologies/jta/index.jsp" target="_blank">API transacci&oacute; de Java</a>.</p>
<a name="Exercise_2b"></a>
<h3>Creant la part frontal de la sessi&oacute;</h3>
<p>En aquest execici utilitzareu un assistent per a la part frontal d'una sessi&oacute; sense estat per a l'entitat Message. Les especificacions EJB 3.1. fan constar que les interf&iacute;cies de negoci pels beans de sessi&oacute; ara s&oacute;n opcionals. En aquesta aplicaci&oacute; on el client que accedeix al bean &eacute;s un client local, teniu l'opci&oacute; d'utilitzar una interf&iacute;cie local o una vista sense interf&iacute;cie per exposar el bean.</p>
<p>Per crear el bean de sessi&oacute;, realitzeu els seg&uuml;ent passos.</p>
<ol>
<li>En el node del projecte cliqueu amb el boto dret i seleccioneu Nou &gt; Altres.</li>
<li>Seleccioneu Beans de sessi&oacute; per a classes d'entitat, des de la categoria Java EE. Cliqueu a Seg&uuml;ent.</li>
<li>Seleccioneu l'entitat <tt>Message</tt> i cliqueu Afegir. Cliqueu a Seg&uuml;ent.</li>
<li>Escriviu <strong>boundary</strong> pel paquet. Cliqueu a Finalitzar.
<p>Fixeu-vos que no heu necessitat crear una interf&iacute;cie de negoci per al bean de sessi&oacute;. En canvi, en aquesta aplicaci&oacute; el bean ser&agrave; exposat a un bean gestionat localment mitjan&ccedil;ant una vista sense interf&iacute;cie.</p>
<img src="../../../images_www/articles/72/javaee/gettingstarted/sessionwizard.png" alt="Assistent Beans de sessi&oacute; per a classes d'entitat" title="Assistent Beans de sessi&oacute; per a classes d'entitat" class="margin-around b-all"></li>
</ol>
<p>Quant cliqueu a Finalitzar, la classe de la part frontal de sessi&oacute; <tt>MessageFacade.java</tt> &eacute;s creada i s'obre en l'editor de codi font. La classe bean cont&eacute; la l&ograve;gica de negoci i gestiona l'EntityManager. Com podeu veure en el codi generat, s'utilitza l'anotaci&oacute; <tt>@Stateless</tt> per declarar la classe com un component bean de sessi&oacute; sense estat.</p>
<pre class="examplecode">
@Stateless
public class MessageFacade {
@PersistenceContext(unitName = &quot;SimpleEE6AppPU&quot;)
private EntityManager em;
</pre>
<p>Quant creeu la part frontal per l'entitat mitjan&ccedil;ant l'assistent, per defecte el IDE afegeix l'anotaci&oacute; <tt>PersistenceContext</tt> (<tt>@PersistenceContext(unitName = &quot;SimpleEE6AppPU&quot;)</tt>) per injectar el recurs de gesti&oacute; d'entitat dins del component bean de sessi&oacute;, i per especificar el nom de la unitat de persist&egrave;ncia. En aquest exemple el nom de la unitat de persist&egrave;ncia est&agrave; declarat expl&iacute;citament, no obstant el nom &eacute;s opcional si l'aplicaci&oacute; t&eacute; &uacute;nicament una unitat de persist&egrave;ncia.</p>
<p>El IDE tamb&eacute; genera els m&egrave;todes en la part frontal per crear, editar, treure i trobar entitats. L'API EntityManager defineix els m&egrave;todes que s'utilitzen per interactuar amb el context de persist&egrave;ncia. Podeu veure que l'IDE genera alguns m&egrave;todes de consulta predeterminats utilitzant freq&uuml;entment que poden ser utilitzats per a trobar objectes d'entitat.</p>
<pre class="examplecode">
public List&lt;Message&gt; findAll() {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
cq.select(cq.from(Message.class));
return em.createQuery(cq).getResultList();
}
public List&lt;Message&gt; findRange(int[] range) {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
cq.select(cq.from(Message.class));
Query q = em.createQuery(cq);
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
return q.getResultList();
}
public int count() {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
Root&lt;Message&gt; rt = cq.from(Message.class);
cq.select(em.getCriteriaBuilder().count(rt));
Query q = em.createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
}
</pre>
<p>
Els m&egrave;todes <tt>findAll</tt>, <tt>findRange</tt> i <tt>count</tt>, utilitzen m&egrave;todes definits en l'API Criteria per a la creaci&oacute; de consultes. L'API Criteria API forma part de l'especificaci&oacute; JPA 2.0 que est&agrave;a inclosa en l'especificaci&oacute; Java EE 6.</p>
</div>
<!-- ===================================================================================== -->
<a name="Exercise_3"></a>
<h2>Creant el Bean gestionat JSF i les p&agrave;gines JSF</h2>
<p>En aquesta secci&oacute; creareu la capa de presentaci&oacute; per l'aplicaci&oacute; utilitzant JavaServer Faces (JSF) 2.0 i el bean gestionat que dona suport al bean que &eacute;s utilitzat per les p&agrave;gines JSF. L'especificaci&oacute; JSF 2.0 afegeix suport per a Facelets com la tecnologia de visualitzaci&oacute; preferida per a les aplicacions basades amb JSF. Comen&ccedil;ant amb JSF 2.0, tamb&eacute; podeu utilitzar l'anotaci&oacute; <tt>@ManagedBean</tt> al vostre codi font per declarar una classe de bean gestionat. Ja no necessiteu afegir m&eacute;s entitats en el fitxer <tt>faces-config.xml</tt> per declarar els bans gestionats JSF. Podeu utilitzar noms en p&agrave;gines JSF per accedir als m&egrave;todes en el bean gestionat.</p>
<p class="tips">Per a m&eacute;s informaci&oacute; quan al suport de l'IDE per les especificacions de JavaServer Faces 2.0, vegeu <a href="../web/jsf20-support.html">Suport JSF 2.0 en l'IDE NetBeans 6.8</a>.</p>
<p class="tips">Per a m&eacute;s informaci&oacute; quant a l'especificaci&oacute; de JavaServer Faces 2.0, vegeu el cap&iacute;tol de la tecnologia JavaServer Faces en la <a href="http://java.sun.com/javaee/6/docs/tutorial/doc/index.html" target="_blank">Guia d'aprenentatge Java EE 6, Volum I</a>.</p>
<div class="indent">
<a name="Exercise_3a"></a>
<h3>Creant un Bean gestionat</h3>
<p>En aquest exercici creareu un senzill bean gestionat JSF utilitzat per accedir a la part frontal de la sessi&oacute; L'especificaci&oacute; JSF 2.0 que forma part de Java EE 6 us permet utilitzar anotacions en la classe bean per identificar la classe com un bean gestionat JSF, per especificar l'&agrave;mbit i el nom pel bean.</p>
<p>Per crear un bean gestionat, realitzeu els seg&uuml;ents passos.</p>
<ol>
<li>Cliqueu amb el bot&oacute; dret damunt del node del projecte i seleccioneu Nou &gt; Altres.</li>
<li>Seleccioneu Bean gestionat JSF des de la categoria JavaServer Faces. Cliqueu a Seg&uuml;ent.</li>
<li>Escriviu <strong>MessageView</strong> pel nom de la classe.
<p>Utilitzareu el nom pel bean gestionat <tt>MessageView</tt> com el valor pel <tt>inputText</tt> i <tt>commandButton</tt> en la p&agrave;gina JSF <tt>index.xhtml</tt> quant crideu els m&egrave;todes en el bean.</p>
</li>
<li>Escriviu <strong>my.presentation</strong> pel paquet.</li>
<li>Escriviu <strong>MessageView</strong> pel nom que ser&agrave; utilitzat pel bean gestionat.
<p>Quan creeu el bean gestionat mitjan&ccedil;ant l'assistent, l'IDE per defecte assignar&agrave; un nom al bean basat amb el nom de la classe bean.</p></li>
<li>Establir l'&Agrave;mbit a Petici&oacute;. Cliqueu a Finalitzar</li>
</ol>
<img src="../../../images_www/articles/71/javaee/gettingstarted/newjsfbean.png" alt="Nou assistent Bean gestionat per JSF" title="Nou assistent Bean gestionat per JSF" class="margin-around b-all">
<p>Quan cliqueu a Finalitzar, l'IDE crea la classe bean i l'obre en l'editor. En la finestra de projectes veureu els seg&uuml;ent fitxers.</p>
<img src="../../../images_www/articles/72/javaee/gettingstarted/projectswindow.png" alt="Finestra de projecte mostrant l'estructura de fitxers" title="Finestra de projecte mostrant l'estructura de fitxers" class="margin-around b-all">
<p>En l'editor, podeu veure que l'IDE ha afegit les anotacions <tt>@ManagedBean</tt> i <tt>@RequestScoped</tt> i el nom del bean.</p>
<pre class="examplecode">
@ManagedBean(name=&quot;MessageView&quot;)
@RequestScoped
public class MessageView {
/** Crea una nova inst&agrave;ncia de MessageView */
public MessageView() {
}
}
</pre>
<p>Ara utilitzareu la injecci&oacute; de depend&egrave;ncia per obtenir una refer&egrave;ncia al bean de sessi&oacute; MessageFacade amb l'anotaci&oacute; <tt>@EJB</tt>. Tamb&eacute; podreu cridar els m&egrave;todes <tt>findAll</tt> i <tt>create</tt> que estan exposats en la part frontal de la sessi&oacute;. L'auto-completat de codi pot ajudar-vos quant escriviu els m&egrave;todes.</p>
<ol>
<li>Cliqueu amb el bot&oacute; dret en l'editor i seleccioneu Inserir codi (Ctrl+I) per obrir el men&uacute; emergent.</li>
<li>Seleccioneu Cridar Bean empresarial, en el men&uacute; emergent.</li>
<li>Seleccioneu MessageFacade en el quadre de di&agrave;leg Cridar Bean empresarial. Cliqueu a Acceptar.<br/>
<img src="../../../images_www/articles/72/javaee/gettingstarted/callbean.png" alt="Di&agrave;leg Cridar Bean empresarial" title="Di&agrave;leg Cridar Bean empresarial," class="margin-around b-all">
<p>Quan cliqueu a Acceptar, l'IDE afegeix el seg&uuml;ent codi (en negreta) per injectar el bean.</p>
<pre class="examplecode">
public class MessageView {
/** Crea una nova inst&agrave;ncia de MessageView */
public MessageView() {
}
<strong>// Injecta el bean de sessi&oacute; MessageFacade utilitzant l'anotaci&oacute; @EJB
@EJB
MessageFacade messageFacade;</strong>
}
</pre>
</li>
<li>Afegiu el seg&uuml;ent codi a la classe.
<pre class="examplecode">
// Crea un nou camp
private Message message;
// Crea una nova inst&agrave;ncia de Message
public MessageView() {
this.message = new Message();
}
// Crida a getMessage per recuperar un missatge
public Message getMessage() {
return message;
}
// Retorna el nombre total de missatges
public int getNumberOfMessages(){
return messageFacade.findAll().size();
}
// Desa el missatge i despr&eacute;s retorna la cadena de text &quot;theend&quot;
public String postMessage(){
this.messageFacade.create(message);
return &quot;theend&quot;;
}
</pre>
</li>
<li>Corregiu les vostres importacions (Ctrl-Maj-I) i deseu els canvis.</li>
</ol>
<p class="tips">Utilitzeu l'auto-completat de codi per a ajudar-vos quant escriviu el vostre codi.</p>
<p>Observeu que el m&egrave;tode <tt>postMessage</tt> retorna la cadena de text &quot;theend&quot;. L'especificaci&oacute; de JSF 2.0 permet la utilitzaci&oacute; de regles de navegaci&oacute; impl&iacute;cita en l'aplicaci&oacute; que utilitza tecnologia Facelets. En aquesta aplicaci&oacute;, cap regla de navegaci&oacute; est&agrave; configurada en <tt>faces-config.xml</tt>. En lloc seu, l'encarregat de navegaci&oacute; intentar&agrave; localitzar una p&agrave;gina adequada en l'aplicaci&oacute;. En aquest cas, l'encarregat de la navegaci&oacute; intentar&agrave; localitzar una p&agrave;gina anomenada <tt>theend.xhtml</tt> qual el m&egrave;tode <tt>postMessage</tt> sigui invocat.<p>
<a name="Exercise_3b"></a>
<h3>Modificant la p&agrave;gina d'&Iacute;ndex</h3>
<p>en aquest exercici fareu alguns canvis senzill a la p&agrave;gina <tt>index.xhtml</tt> per afegir alguns components d'interf&iacute;cie gr&agrave;fica (UI). Afegireu un formulari amb un camp de text d'entada i un bot&oacute;.</p>
<ol>
<li>Obriu <tt>index.xhtml</tt> en l'editor.</li>
<li>Modifiqueu el fitxer per afegir el seg&uuml;ent formulari senzill entre les etiquetes <tt>&lt;h:body&gt;</tt>.
<pre class="examplecode">
&lt;h:body&gt;
&lt;f:view&gt;
&lt;h:form&gt;
&lt;h:outputLabel value=&quot;Missatge:&quot;/&gt;&lt;h:inputText value=&quot;#{MessageView.message.message}&quot;/&gt;
&lt;h:commandButton action=&quot;#{MessageView.postMessage}&quot; value=&quot;Enviar missatge&quot;/&gt;
&lt;/h:form&gt;
&lt;/f:view&gt;
&lt;/h:body&gt;</pre>
<p class="tips">L'auto-completat de codi JSF pot ajudar-vos quant escriviu el codi.
</p>
<img src="../../../images_www/articles/72/javaee/gettingstarted/jsfcodecompletion1.png" alt="Auto-completat de codi en l'editor de codi" title="Auto-completat de codi en l'editor de codi" class="margin-around b-all">
</li>
<li>Deseu els vostres canvis.</li>
</ol>
<p>Els components <tt>inputText</tt> i <tt>commandButton</tt> invocaran els m&egrave;todes en el bean gestionat JSF anomenat <tt>MessageView</tt>. El m&egrave;tode <tt>postMessage</tt> retornar&agrave; &quot;theend&quot;, i l'encarregat de navegaci&oacute; cercar&agrave; una p&agrave;gina anomenada <tt>theend.xhtml</tt>.</p>
<a name="Exercise_3c"></a>
<h3>Creant la p&agrave;gina de resultats</h3>
<p>En aquest exercici creareu la p&agrave;gina JSF <tt>theend.xhtml</tt>. La p&agrave;gina es mostrar&agrave; quant l'usuari cliqui al bot&oacute; Enviar missatge, en <tt>index.xhtml</tt> i invoqui el m&egrave;tode <tt>postMessage</tt> en el bean gestionat JSF.</p>
<ol>
<li>Cliqueu amb el bot&oacute; dret al node del projecte i seleccioneu Nou &gt; Altres.</li>
<li>Seleccionau P&agrave;gina JSF, des de a categoria JavaServer. Cliqueu a Seg&uuml;ent.</li>
<li>Escriviu <strong>theend</strong> com a nom de fitxer.</li>
<li>Assegureu-vos que estigui marcada l'opci&oacute; Facelets. Cliqueu a Finalitzar</li>
<li>Modifiqueu el fitxer escrivint el seg&uuml;ent entre les etiquetes &lt;h:body&gt;.
<pre class="examplecode">
&lt;h:body&gt;
&lt;h:outputLabel value=&quot;Gr&agrave;cies! Hi han &quot;/&gt;
&lt;h:outputText value=&quot;#{MessageView.numberOfMessages}&quot;/&gt; missatges!
&lt;/h:body&gt;</pre>
</li>
</ol>
<p class="tips">Quant comenceu a escriure, el IDE afegir&agrave; autom&agrave;ticament la definici&oacute; de la biblioteca d'etiquetes <tt>xmlns:h=&quot;http://java.sun.com/jsf/html</tt> al fitxer pels elements JSF.</p>
</div>
<a name="Exercise_4"></a>
<h2>Executant l'aplicaci&oacute;</h2>
<p>Ara hageu finalitzat la codificaci&oacute; de l'aplicaci&oacute;. Ara podeu provar l'aplicaci&oacute; al vostre navegador.</p>
<ol>
<li>Cliqueu amb el bot&oacute; dret en la finestra de projectes i seleccioneu Executar.
<p>Quant seleccioneu Executar, l'IDE construeix i desplega l'aplicaci&oacute; i obre <tt>index.xhtml</tt> en el vostre navegador.</p></li>
<li>Escriviu un missatge en el camp de text. Cliqueu a Enviar missatge. <br/>
<img src="../../../images_www/articles/72/javaee/gettingstarted/browser1.png" alt="Aplicaci&oacute; en el navegador" title="Aplicaci&oacute; en el navegador" class="margin-around b-all">
</li>
</ol>
<p>Quant cliqueu a Enviar missatge, el missatge &eacute;s desat a la base de dades i el nombre de missatges &eacute;s recuperant i mostrat.</p>
<img src="../../../images_www/articles/72/javaee/gettingstarted/browser2.png" alt="Aplicaci&oacute; en el navegador mostrant resultats" title="Aplicaci&oacute; en el navegador mostrant resultats" class="margin-around b-all">
<!--
<a name="Exercise_5"></a>
<h2>Troubleshooting</h2>
<p>The following are some of the problems you may encounter when creating your project.</p>
<div class="indent">
<h3 class="tutorial">Problem with JMS Resources</h3>
<p>When using the wizard to create JMS resources,
you may see the following server error message in the output window:</p>
<pre>[com.sun.enterprise.connectors.ConnectorRuntimeException:
JMS resource not created : jms/Queue]
</pre>
<p>This message could indicate that the JMS resource was not created or was not registered with the application server.
You can use the Admin Console of the application server to check, create and edit JMS resources.</p>
<p>To open the Admin Console, do the following:</p>
<ol>
<li>Confirm that the application server is running by expanding the Servers node in the Services window of the IDE.
A small green arrow next to the application server node indicates the server is running.</li>
<li>Right-click the application server node and choose View Admin Console to open the login window in your browser.</li>
<li>Log in to the server. The default user name and password are <tt>admin</tt> and <tt>adminadmin</tt>.</li>
<li>In the Admin Console in your browser, expand the Resources node and JMS Resources node in the left frame.</li>
<li>Click on the Connection Factories and Destination Resources links in the left frame to check if the resources are
registered with the server and if necessary modify the resources. If the resources do not exist, you can create them
in the Admin Console.</li>
</ol>
<p>You need to make sure that the JMS connection factory resource
in the PostMessage servlet is mapped to the correct JNDI name of the JMS connection factory resource
registered with the Sun Java System Application Server.</p>
<p>The following resources should be registered with the Sun Java System Application Server:</p>
<ul>
<li>a Destination resource with the JNDI name <tt>jms/NewMessage</tt> and type <tt>javax.jms.Queue</tt></li>
<li>a Connection Factory resource with the JNDI name <tt>jms/NewMessageFactory</tt> and type <tt>
javax.jms.QueueConnectionFactory</tt></li>
</ul>
</div>-->
<br>
<div class="feedback-box" ><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Getting%20Started%20with%20Java%20EE%206%20Applications">Envia'ns la vostra opini&oacute;</a></div>
<br style="clear:both;" />
<!-- ======================================================================================= -->
<h2><a name="nextsteps"></a>Vegeu tamb&eacute;</h2>
<p>Per a m&eacute;s informaci&oacute; quant a la utilitzaci&oacute; de l'IDE NetBeans per desenvolupar aplicacions Java EE, vegeu els seg&uuml;ents recursos:
</p>
<ul>
<li><a href="javaee-intro.html">Introducci&oacute; a la tecnologia Java EE</a></li>
<li><a href="../web/jsf20-support.html">Suport JSF 2.0 en NetBeans IDE 6.8</a></li>
<li><a href="../../trails/java-ee.html">Cam&iacute; d'aprenentatge d'aplicacions de serveis Web &amp; EJB</a></li>
</ul>
<p>Podeu trobar m&eacute;s informaci&oacute; quant a la utilitzaci&oacute; de tecnologies Java EE 6 per a desenvolupar aplicacions en la <a href="http://download.oracle.com/javaee/6/tutorial/doc/">Guia d'aprenentatge de Java EE 6</a>.</p>
<p>Per enviar comentaris i suggeriments, obtenir suport, i mantindre's informat dels &uacute;ltims desenvolupaments en caracter&iacute;stiques de desenvolupament Java EE al IDE NetBeans, <a href="../../../community/lists/top.html">uniu-vos a la llita de correu nbj2ee</a>.</p>
</body>
</html>