8/02/2011

Simple Example of JSF and EJB 3.1

This is a very simple example of a JSF 2.0 managed bean invoking EJB 3.1 local singleton EJB. Everything is packaged into a test.war file, and deployed to GlassFish.

test.war consists of 4 entries:

WEB-INF/classes/test/HelloEJB.class
WEB-INF/classes/test/HelloJSFBean.class
WEB-INF/web.xml
index.xhtml
index.xhtml page:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<ui:composition>
<h:head>
<h1><h:outputText value="jsf-ejb example" /></h1>
</h:head>

<h:body>
<h:form id="form">
<h:outputLabel value="helloEJB returned message: "/>
<h:outputText value="#{HelloJSFBean.message}"/>
</h:form>
</h:body>
</ui:composition>
</html>
HelloJSFBean managed bean:
package test;
import javax.faces.bean.*;
import javax.ejb.*;

@ManagedBean(name="HelloJSFBean")
@RequestScoped
public class HelloJSFBean implements java.io.Serializable {
@EJB
private HelloEJB helloEJB;

public String getMessage() {
return helloEJB.hello();
}
}
HelloEJB singleton bean:
package test;
import javax.ejb.*;

@Singleton
public class HelloEJB {
public String hello() {
return "Hello from " + this;
}
}
web.xml:
<web-app 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_3_0.xsd"
version="3.0">
<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>
</web-app>
To run the webapp:
curl http://localhost:8080/test/faces/index.xhtml

helloEJB returned message: Hello from test.HelloEJB@1326d2fe

3 comments:

Nisarg Desai said...

Why We Can't Use Ejb Session Bean Directly as Managed/Beaking Bean

Anna said...

Great and Useful Article.

JSF Online Training

JSF Training

JSF Interview Questions

JSF Tutorials

Java Training Institutes in Chennai

Java Training in Chennai

Vũ Diệu Linh said...

I enjoyed on reading your blog post. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. Please visit my website, Friv 4000 Games is where all the free friv games.
Friv 4000