(redhat) linux important stuff (83)

32
 Using JBoss Seam to go from Using JBoss Seam to go from Stove-Piped Apps to an Stove-Piped Apps to an Integrated Web 2.0 Platform Integrated Web 2.0 Platform Doug Schnelzer Vizuri Thursday, Sept 3, 2009 

Upload: jagmohan-jaggu

Post on 07-Apr-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 1/32

 

Using JBoss Seam to go fromUsing JBoss Seam to go fromStove-Piped Apps to anStove-Piped Apps to an

Integrated Web 2.0 PlatformIntegrated Web 2.0 Platform

Doug Schnelzer VizuriThursday, Sept 3, 2009 

Page 2: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 2/32

JBoss World 2009 | Doug Schnelzer 2

A bit about me...

Started in the Air Force managing satellite development● Been developing Java EE

systems since 1997

● CORBA Instructor 

● Developed systems for:

● McKesson

● Celgene

● GE Healthcare

● American Psychological Association

● US Navy

● Intuit

● Been Chief Technologist at Vizuri since 2002

Page 3: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 3/32

JBoss World 2009 | Doug Schnelzer 3

Goals for this presentation?

See Seam's power beyond a Web 2.0 framework● Show Seam's integration capability using real world

examples

● Share other significant Seam features you can use

● Answer your questions

Page 4: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 4/32

JBoss World 2009 | Doug Schnelzer 4

Session Agenda

The problem and the opportunity –“Developing web apps for an integrated enterprise”

● 4 Minute JBoss Seam Overview

● Seam Integration Features

● APA Case Study – Seam as an integration hub

● Other significant Seam benefits you should know about

● Questions

Page 5: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 5/32

 

The problem and the opportunityThe problem and the opportunity

““Developing web apps for anDeveloping web apps for anintegrated enterprise”integrated enterprise”

Page 6: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 6/32

JBoss World 2009 | Doug Schnelzer 6

Selecting a framework for your next web application

NewApplication

Teams often focus on features like RIA and Web 2.0● Underestimate the value of integrating with existing

systems

FinancialSystem

Customer Orders

ContentManagement

Order Delivery

LegacySystems

SecuritySystem

Page 7: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 7/32

JBoss World 2009 | Doug Schnelzer 7

Integrating a new systeminto the enterprise

Ways to integrate a new web application into anecosystem of existing systems?

● A great approach is a Service Oriented Architecture(SOA). Develop business oriented, reusable services.

● But SOA requires additional investment and senior executive commitment to realize returns.

● Another approach is to leverage a web frameworksintegration functionality.

Page 8: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 8/32

 

4 Minute JBoss Seam Overview4 Minute JBoss Seam Overview

Page 9: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 9/32

JBoss World 2009 | Doug Schnelzer 9

What is JBoss Seam?

Leading Rich Internet Application (RIA) Framework● Establishes a common context for components

● Easy access to context via Expression Language (EL)

FaceletsJSP

Web Services

JBoss jBPMEJB 3 Hibernate

JSF

SeamSeam

Spring SecurityRules

Remoting (AJAX) Portal

JMS

Page 10: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 10/32

JBoss World 2009 | Doug Schnelzer 10

Seam Highlights● Seam context and component architecture

● JSF and Hibernate integrated framework● Replace XML with annotations

● Seam-gen for rapid starts

Address JSF deficiencies● page Actions, parameters, navigation and exceptions

● Simplified Security

● SeamTest for continuous integration

● Web 2.0 – RichFaces, Ice Faces, Seam Remoting, GWT

● Extras – jBPM, PDF, email, Excel, CAPTCHA, WebServices, JMS, Hibernate Search, Spring Integration

Page 11: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 11/32

JBoss World 2009 | Doug Schnelzer 11

A Quick Example of Using Seam in anIntegrated Environment...

Seam provides a secure, robust,

and flexible interface for sendingcommands to the EcommerceIntelligent Data Center 

JSF – RichFacesSeam RemotingFlex – BlazeDS, FlamingoWeb Services – SOAP, RESTJMSRMI

Page 12: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 12/32

 

Using JBoss Seam asUsing JBoss Seam as

an integration hub atan integration hub ata recent project at the APAa recent project at the APA

Page 13: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 13/32

JBoss World 2009 | Doug Schnelzer 13

American Psychological Association (APA)Background

Professional organization based in Washington, D.C.● Largest association of psychologists -148,000 members

● Publishes ~53 journals ~65 books each year.

● Mission of the APA

● Advance the creation, communication and application of psychological knowledge to benefit society and improvepeople’s lives. The APA website is one of the primarymeans of communication and knowledge distribution

within the APA community.

Page 14: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 14/32

JBoss World 2009 | Doug Schnelzer 14

APA Web Relaunch Project

Designed to integrate a suite of customer facing,stovepipe web applications

● Integrate a commercial digital rights licensing product

● New content management system – Tridion

● New ecommerce shopping cart

● New user portal - MyAPA

● Provide a rich user experience (RIA)

Page 15: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 15/32

JBoss World 2009 | Doug Schnelzer 15

Integration Features of JBoss Seam

Seam Remoting● JMS Integration

● Web Services – SOAP and RESTful

RMI● Security Integration – SSO, JAAS, JBoss Portal

● Spring Integration

 jBPM● JBoss Rules – Drools

Page 16: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 16/32

JBoss World 2009 | Doug Schnelzer 16

APA Web Relaunch Architecture

JBoss Seam

APA IDM Services(EJB / Web Services)

APA EcommerceServices

(EJB / Web Services)

APA Common Services(EJB / Web Services)ERights Client

Proxy

ERights Server 

PsycNet

CAS

Tridion

JBoss Portal

(MyAPA)

 S p r i n g

RMI

J  M  S 

R  e m o t  i  n  g  

JAAS

/RMI

Share Point Web Services

Page 17: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 17/32

JBoss World 2009 | Doug Schnelzer 17

Using Seam Remoting for Integration

Allows Seam components to be accessed via AJAX● APA web relaunch uses Seam Remoting to integrate...

● Tridion (website content management)

● Overall User session across non-Seam applications

● Shopping cart functionality for non-Seam applications

Page 18: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 18/32

JBoss World 2009 | Doug Schnelzer 18

What is Seam Remoting?

Web Page

(JavaScript)

Web Page

(JavaScript)

Seam Container 

HTTP

HTTP

     M    a    r    s     h    a     l

     M    a    r    s     h    a     l

     U    n    m    a    r    s     h    a     l

     U    n    m    a    r    s     h    a     l

<script src...remote.js><script src...interface.js?...><script

getInstance(“shopping”) Service Component

@WebRemotePublic ShoppingCart addItem(item) {

// add item and return cart}

<scriptfunction callback (result) {

displayCart(result);}

Page 19: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 19/32

JBoss World 2009 | Doug Schnelzer 19

Remoting Shopping Cart Example

@Local public interface IShoppingCartServiceLocal {

@WebRemotepublic ApaCartSummary addToCart(String itemId, Integer quantity)

  throws ServiceException;

@WebRemotepublic ApaCartSummary getCartSummary() throws ServiceException;

@WebRemotepublic Integer changeQuantity(String itemId, Integer quantity)

  throws ServiceException;

}

Page 20: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 20/32

JBoss World 2009 | Doug Schnelzer 20

Remoting Shopping Cart Example

<script type="text/javascript" src="/apa/seam/resource/remoting/remote.js"></script>

<script type="text/javascript"src="/apa/seam/resource/remoting/interface.js?shoppingCartManagementService"></script>

function addItemToCart(itemId, quantity){Seam.Component.getInstance("shoppingCartManagementService").

addToCart(itemId, quantity, displayCartCallback);}

 

function displayCartCallback(cartSummary) {alert("Got call back " + cartSummary.quantity + ", " +

cartSummary.totalPrice);}

 

Page 21: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 21/32

JBoss World 2009 | Doug Schnelzer 21

Spring Integration

● APA selected RightAccess and RightCommerce for digital rights management

● Both products are based on Spring

● Seam’s integration of Spring made integratingRightAccess and RightCommerce quick and clean

● Spring components become “first class” Seamcomponents

Page 22: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 22/32

JBoss World 2009 | Doug Schnelzer 22

RMI Integration

A legacy APA system (PsycNet) based in Cold Fusionneeded to integrate with the Seam shopping cart

● Seam allowed for a variety of integration options

● Seam Remoting

● Web Services

● RMI

● The Cold Fusion team selected RMI

This example demonstrates the practical flexibility of using Seam

● RMI support in EAR deployments

Page 23: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 23/32

JBoss World 2009 | Doug Schnelzer 23

Web Services Integration

Web Services were deployed where other apps needto access services hosted in the core Seam app

● The Share Point intranet uses Web Services to look upUser and Group data

The order fulfillment gateway uses Web Services toretrieve user and inventory data when needed

Page 24: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 24/32

JBoss World 2009 | Doug Schnelzer 24

Web Service Example

@Stateless

@LocalBinding(jndiBinding = "/apa_ejb3/InventoryService/local")@RemoteBinding(jndiBinding = "/apa_ejb3/InventoryService/remote")@WebService(name = "InventoryService")@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED )@WebContext(contextRoot="/apaservice", transportGuarantee="NONE")@Name("inventoryService")

 public class InventoryServiceImpl implements 

IInventoryServiceLocal, IInventoryServiceRemote{

@LoggerLog log;

  @In

ShoppingCartService shoppingCartService;

  @WebMethod(operationName="GetApaProducts",action="GetApaProducts")

  public List<ApaInventoryProduct> getApaProducts(  @WebParam(name = "itemList") List<String> itemList)

throws ServiceException {}

}

Page 25: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 25/32

JBoss World 2009 | Doug Schnelzer 25

JBoss Portal Integration

APA selected the JBoss Portal as the new platform for the MyAPA portal (my.apa.org)

● Portal security was integrated in two steps

● Checked for RightAccess cookie in login page

● Used a custom JAAS login module to make a RMI callto the core Seam app and validate cookie

Page 26: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 26/32

 

Other significant Seam featuresOther significant Seam features

we have usedwe have used

Page 27: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 27/32

JBoss World 2009 | Doug Schnelzer 27

Rich Internet Application (RIA) Shopping Cart

Used JBoss Seam and RichFaces to develop a RIAshopping cart experience

● AJAX components streamlined the check out process

● Reduced likelihood of customer falling out of checkout

● RichFaces components enhanced developer productivity

Page 28: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 28/32

JBoss World 2009 | Doug Schnelzer 28

Screen Shot from Checkout Process

Page 29: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 29/32

JBoss World 2009 | Doug Schnelzer 29

CAPTCHA with enhanced Audio CAPTCHA

● Used Seam’s out of the box CAPTCHA component

● Enhanced CAPTCHA by providing an audio option tosupport 508 compliance.

@Name("audioCaptcha")@Scope(ScopeType.APPLICATION)@BypassInterceptors@Install(precedence = APPLICATION)public class AudioCaptcha extends AbstractResource {

public String getResourcePath() {return "/audioCaptcha";

}

public void getResource(HttpServletRequest request, HttpServletResponseResponse) throws ServletException, IOException {

}}

jQ("#audioCaptcha").click(function() {jQ("<iframe src='/apa/seam/resource/audioCaptchaheight='18px'></iframe>").appendTo(jQuery(this));

});

Page 30: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 30/32

JBoss World 2009 | Doug Schnelzer 30

Seam-gen

● Used seam-gen to quickly create the initial project.

● Good way to bring new developers up to speed

● Great for quick demo with existing DB schema

Page 31: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 31/32

JBoss World 2009 | Doug Schnelzer 31

Conversations

● Shopping Cart checkout process scoped to Seam'sconversation scope.

● Conversation starts when an item is added to a user'sshopping cart.

● Conversation ends with confirmation at end of checkout process.

● Increases scalability by reducing session size

Page 32: (Redhat) Linux Important Stuff (83)

8/6/2019 (Redhat) Linux Important Stuff (83)

http://slidepdf.com/reader/full/redhat-linux-important-stuff-83 32/32

 

QuestionsQuestions