Introducció
Basant-nos en un nou projecte Maven, anomenat "JCR01", per defecte creat amb NetBeans IDE 6.7.1; es crearà un "JSF Managed Bean" que implementarà l'accés a Alfresco mitjançant JCR i que es provarà posteriorment des de una "JSF JSP Page".
WEB-INF\faces-config.xml
Per tal de crear el "JSF Managed Bean", prèviament, ha d'existir el fitxer de configuració "faces-config.xml":
A JCR01-web (war), entrem a Web Pages i ens posicionem a WEB-INF
botó dret, new->Other...->XML->XML Document
File name:faces-config.xml (Well-formed Document)
Un cop creat, l'editem i afegim la següent informació:
<?xml version='1.0' encoding='UTF-8'?><faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"></faces-config>Exemple 1: El més bàsic
New->Other...->JavaServer Faces->JSF Managed Bean
Class Name: JcrBasicJSFManagedBean
Codi:
/** 'JSF Managed Bean' created viaCreated via: * JavaServer Faces -> JSF Managed Bean (modifies faces-config.xml) */package dom;import javax.annotation.Resource;import javax.jcr.LoginException;import javax.jcr.Node;import javax.jcr.Repository;import javax.jcr.RepositoryException;import javax.jcr.Session;import javax.jcr.SimpleCredentials;public class JcrBasicJSFManagedBean { @Resource(mappedName = "jcr/Alfresco", type = javax.jcr.Repository.class) private Repository rep; public String getFirstHop() throws LoginException, RepositoryException, InterruptedException { String ret = "unInitialized"; //On Jackrabbit, the anonymous 'user' has read-only permissions. Any another dummy 'user' would do. Session session = rep.login(new SimpleCredentials("admin", "ibermatica".toCharArray()), null); try { Node root = session.getRootNode(); // Store content Node hello = root.addNode("hola"); Node world = hello.addNode("mundo"); world.setProperty("message", "Hola, Mundo!"); session.save(); Thread.sleep(1000); // Retrieve content Node node = root.getNode("hola/mundo"); ret = "node=" + node.getPath() + " message=" + node.getProperty("message").getString(); // Remove content root.getNode("hola").remove(); session.save(); } finally { session.logout(); } return (ret); }}S'afegeix com a dependència "provided" la biblioteca "javax.jcr" que conté les interfaces Java Content Repository:
Ara que ja es té el Bean, es crea el JSF que el farà servir, amb el nom "JcrBasicJsp".
Nota: Si ens dóna l'error "The absolute uri: http://java.sun.com/jsf/core cannot be resolved in either web.xml or the jar files deployed with this application" a la línia "<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>" llavors editem el pom.xml i afegim les dependències:
<dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>1.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-impl</artifactId> <version>1.2-b19</version> <scope>provided</scope> </dependency>Modifiquem web.xml que ens quedarà de la següent manera:
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>JCR01-web</display-name> <session-config> <session-timeout>30</session-timeout> </session-config> <context-param> <param-name>com.sun.faces.verifyObjects</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>com.sun.faces.validateXml</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>faces/JcrBasicJsp.jsp</welcome-file> </welcome-file-list></web-app>Nota: Cal dir que per activar el context definit per a "Faces Servlet" és /faces/*;
per tant, hem d'executar el nostre JSF accedint amb l'URL <project>/faces/<el nostre jsf>.jsp.
És per això que a web.xml, apareix "faces/JcrBasicJsp.jsp" (el nostre JSF) com a welcome-file.
Exemple 2: <<title>>