Transcript JBoss Seam

JBoss Seam
Presented by
Andy Nguyen
Truc Pham
What is JBoss Seam?
• Created by Gavin King
• A lightweight framework for Java EE 5.0
• Provides a consistent and easy programming model
for enterprise web applications.
• Facilitates stateful web applications development.
Core Components in A Web App.
• JSP
• Serves as the front end
• May call beans
• EJB
• Server side component
• Performs business logic
• ORM
• Converts objects to database entities
• Persist to and query from databases
A HelloBean example
• <jsp:useBean id="nameBean" class="mybeans.UserNameBean">
<jsp:setProperty name="nameBean" property="*" />
</jsp:useBean>
• <HTML>
<BODY>
<H3> Hello <%= nameBean.getUserName() %> ! </H3>
<P> The current time is <%= new java.util.Date() %>. Have a nice day!
Please type in your user name: <P>
<FORM METHOD=GET>
<INPUT TYPE="text" NAME="username" SIZE=15>
<INPUT TYPE="submit" VALUE="Enter name">
</FORM>
<BODY>
</HTML>
A Seam Hello World example
• A user enters his/her name into a web form
to say Hello to Seam
• Seam saves name to database
• Seam displays all the names of those who
had said Hello to Seam
Create A Data Model
@Entity
@Name("person")
public class Person implements Serializable {
private long id;
private String name;
@Id @GeneratedValue
public long getId() { return id;}
public void setId(long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) {this.name = name;}
}
Map the Data Model to A Web Form
<h:form>
Please enter your name:<br/>
<h:inputText value="#{person.name}"
size="15"/><br/>
<h:commandButton type="submit" value="Say Hello"
action="#{manager.sayHello}"/>
<h:dataTable value="#{fans}" var="fan">
<h:column>
<h:outputText value="#{fan.name}"/>
</h:column>
</h:dataTable>
</h:form>
Manager Bean
@Stateless
@Name("manager")
public class ManagerAction implements Manager {
@In @Out
private Person person;
@Out
private List <Person> fans;
@PersistenceContext
private EntityManager em;
public String sayHello () {
em.persist (person);
person = new Person ();
fans = em.createQuery("select p from Person p")
.getResultList();
return null;
}
Summary
Seam simplifies web application development
• Intergrate Java EE frameworks
• Designed for stateful web applications
• Promotes the use of POJO and less XML using bijection
• Configuration by exception