apache beehive bea user's group oct 2004

42
Apache Beehive Project Technical Overview Scott Ryan, Denver BEA User’s Group Rich Feit , Beehive committer, BEA Systems October 7, 2004

Upload: soaring-eagle-llc

Post on 13-May-2015

674 views

Category:

Technology


5 download

DESCRIPTION

An overview of the Apache Beehive project

TRANSCRIPT

Page 1: Apache Beehive BEA User's Group Oct 2004

Apache Beehive ProjectTechnical Overview

Scott Ryan, Denver BEA User’s Group Rich Feit , Beehive committer, BEA Systems

October 7, 2004

Page 2: Apache Beehive BEA User's Group Oct 2004

Agenda

• Introduction and Overview• Technology Requirements• XML Beans• Web Services• NetUI• Controls• WebLogic Workshop Demo• Pollinate Demo• Getting Involved

Page 3: Apache Beehive BEA User's Group Oct 2004

Introduction and Overview

Page 4: Apache Beehive BEA User's Group Oct 2004

Beehive Goals

• Beehive is an open-source software project designed to deliver a cross-container, ease-of-use programming model and application framework for J2EE- and SOA-based applications.

• Deliver a comprehensive, easy-to-use framework for building dynamic J2EE and SOA applications.o Based on over 3 years of experience “making it easy” with

WebLogic Workshopo Designed with tool-ability in mind from the outset

• Provide ultimate investment protection and transparency through open source and portability

• Strengthen the Java market by providing world-class ease-of-use to all Java developers

Page 5: Apache Beehive BEA User's Group Oct 2004

Beehive Components

• XMLBeans –Java-XML binding tool through which you can access the full power of XML in a Java-friendly way.

• Java Controls - JavaBean-based component model for resource access

• Java Web Services - Annotations for rapid Web Service development

• Java Page Flows - Struts-based MVC framework for Web application design

Page 6: Apache Beehive BEA User's Group Oct 2004

How Beehive Fits

• Beehive Application Frameworko A runtime component providing a higher-level programming abstraction

for J2EE and SOA-based applicationso Meta-data driven programming model and framework based on JSR-175

(Java Metadata)

WebLogic Application

Server

Web Services

Java Web Services

Unified Interconnection

Model

ControlsXMLBeans

XML Schema/ Java

<xml>

Java PageFlows

Visual Struts Editing

Beehive Application Framework

Pollinate Eclipse Plug-ins

UserInterface

Components

TomcatApplication

Server

Third-partyApplication

Servers

WebLogic Workshop

Page 7: Apache Beehive BEA User's Group Oct 2004

Beehive in WebLogic

Page 8: Apache Beehive BEA User's Group Oct 2004

Technology Requirements

Page 9: Apache Beehive BEA User's Group Oct 2004

Technology Requirements

• JAVA 1.5 beta3-b63 or latero http://java.sun.com/j2se/1.5.0/download.jsp

• JSR 175• JSR 173• Tomcat 5.x (Servlet 2.4 / JSP 2.0)• Ant 1.6.2• Eclipse 3.0.1M1• Log4j 1.2.8• XMLBeans 2.0• Velocity• Test Infrastructure

o JUnit, JAXP, Crimson, HttpUnit, regexp

Page 10: Apache Beehive BEA User's Group Oct 2004

XML Beans

Page 11: Apache Beehive BEA User's Group Oct 2004

XMLBeans: a Beehive Building Block

• XMLBeans provide a familiar, JavaBean-based view of XML datao Without losing access to the original, native XML structureo Beans are bound to the XML document…not imported/exported

• XML Schema used to compile strongly-typed Java interfaces and classeso XMLBeans supports all XML schema definitionso Full XML Infoset fidelityo Reflect into the XML schema itself through an XML Schema

Object model• XMLBeans access to XML is fast and rich:

o Strong-typed getters and setterso XQuery transformationso Loosely-typed via cursors

• Separate Apache Project but is bundled in Beehive distribution

XMLBeans make XML a first-class citizen in Java

Page 12: Apache Beehive BEA User's Group Oct 2004

XMLBean Usage

XML Schema

Address.xsd

Generated Classes

Address

AddressDocument

// create and populate a document

AddressDocument doc = AddressDocument.Factory.newInstance();Address ad = doc.addNewAddress();ad.setType("office");ad.setName("Eric Cartman");ad.setAddress1("101 Main");ad.setCity("Boulder");ad.setState("CO");

Page 13: Apache Beehive BEA User's Group Oct 2004

Web Services

Page 14: Apache Beehive BEA User's Group Oct 2004

Java Web Services

• JSR-181 defines annotations to enable easier Web service programming. Example:

@WebService public class StockQuoteService {@WebMethod public float getLastTradePrice(String tickerSymbol) { }}• Abstracts SOAP marshalling, Java-to-XML binding, WSDL file

creation, underlying bean deployment, and much more• Two development models:

o Start with Java: expose class as Web Service using metadatao Start with WSDL: tool produces classes o Metadata allows for alterations/customization

Page 15: Apache Beehive BEA User's Group Oct 2004

NetUI

Page 16: Apache Beehive BEA User's Group Oct 2004

Controls

Page 17: Apache Beehive BEA User's Group Oct 2004

Overview

• Provides a standard architecture for developing resource access frameworks.

• Designed to simplify code necessary to access J2EE resources

• Designed with tool-ability and IDE integration in mind.

• Based on the Java Bean component model.• Aimed at reducing the J2EE learning curve.

Page 18: Apache Beehive BEA User's Group Oct 2004

Overview

• Flexible configuration model• Extensibility by interface to extend existing controls

with additional functionality• Adaptable containment from J2EE to servlet to

standalone containment.• Resource Management with a defined lifecycle.• Supports composition model.• Well defined packaging model.

Page 19: Apache Beehive BEA User's Group Oct 2004

Configuration

• Programmatic Java Bean Property Access.o myTimerBean.setTimeOut(“3 Seconds”);

• Externally configured property value via Deployment Descriptor <timer:timer

xmlns:timer=“http://openuri.org/com/myco/TimerControl”> <timer:timeOut>3 Seconds</timer:timeOut> </timer:timer>

• JSR-175 Metadata property definition @Timer(timeout=“3 Seconds”) Public TimerControlBean myTimeBean;

Page 20: Apache Beehive BEA User's Group Oct 2004

Extensibility by Interface

Public interface CustomerDatabase extends ControlExtension, DatabaseControl{@sql statement=“INSERT INTO CUSTOMERDB(ID,NAME) VALUES({id},{name})”int newCustomer(int id, String name) throws SQLException;

@sql statement=“SELECT * FROM CUSTOMERDB WHERE ID = {id}”Customer findCustomer(int id);

}

• Defined by the author of the control.

Page 21: Apache Beehive BEA User's Group Oct 2004

Adaptable Containment

• Services are contextualo Allows support within multiple runtime contexts (J2EE,

Servlet, Java Native, etc.)o Must support resource access from within any contexto Implementation of services might vary depending on

container (i.e. security service)• Based on JavaBeans Runtime Containment and

Services Protocol

Page 22: Apache Beehive BEA User's Group Oct 2004

Resource Management

• Well defined lifecycleo onAcquire

Fired upon first client accesso onRelease

Fired if acquire was fired at the end of the resource scope.o Resource Scope is defined by the bounding container

Web Container – HTTP Request EJB Container – Method invocation or User Transaction

Page 23: Apache Beehive BEA User's Group Oct 2004

Programmatic Client Model

TimerControlBean myTimerBean = (TimerControlBean)ControlBean.instantiate(classloader, “com.myco.timerControlBean”);myTimerBean.setTimeout(“3 seconds”);myTimeBean.addTimerControlEventListener(// anonymous event handler classnew TimerControlEventListener(){public void onTimeout(long time){// timer event handling code}});

Page 24: Apache Beehive BEA User's Group Oct 2004

Declarative Client Model

@Timer(timeout=“3 seconds”)TimerControlBean myTimerBean;

public void myTimerBean_onTimeout(long time){ // timer event handling code }

Page 25: Apache Beehive BEA User's Group Oct 2004

Java Control Architecture

Page 26: Apache Beehive BEA User's Group Oct 2004

Control Parts

Page 27: Apache Beehive BEA User's Group Oct 2004

CODE TIME

• Sample Database Control that is extensible• DatabaseControl.java

o Interface• DatabaseControlImpl.jcs

o Base Implementation• TestDbControl.jcx

o Extension Implementation• DriveDatabaseControl.java

o Test class

Page 28: Apache Beehive BEA User's Group Oct 2004

Page Flow Programming Model

• Controls are service abstractionso A ‘façade’ layer for accessing data and services

• Actions are the core of the code in a web applicationo Do flow control for routing to UI based on stateo Invoke control methods to access the business tiero Break a webapp into manageable pieceso Send data to / consume data from pages

• Pages are ‘dumb’o But not simple!o They contain only UI related code / JSP tagso Preferably no Java code

Page 29: Apache Beehive BEA User's Group Oct 2004

Authoring Model

• JPF Fileso Metadata driven Javao Processed by Sun’s APT to produce

struts-config.xml validator-rules.xml Java class file

• JSP Fileso Actions expose data to JSPso NetUI tag libraries render UI

• Shared Flowso Used throughout a web application to handle actions /

exceptions across Page Flows

Page 30: Apache Beehive BEA User's Group Oct 2004

A Page Flow Action

@Jpf.Action(forwards={ @Jpf.Forward(name="success", path="viewOrder.jsp",actionOutputs = { @Jpf.ActionOutput(name = "order", type = org.apache.beehive.samples.petstore.model.Order.class,required = true)})})protected Forward viewOrder(CheckoutForm form){_sharedFlow.ensureLogin();_order=form.getOrder();

Forward f=new Forward("success");Boolean isCheckOut=new Boolean(form.isCheckOut());f.addActionOutput("order", _order);return f;}

Page 31: Apache Beehive BEA User's Group Oct 2004

Programming Model Details

• Single threaded actions• State management

o Request <= Page Flow <= Shared Flow <= Session • Declarative validation• Simple actions

o Navigation based entirely on metadata• Action Output / Page Input

o Data flow contracts enforced between actions and pages• Singleton Page Flows• Optimizations to prevent session serialization in cluster

Page 32: Apache Beehive BEA User's Group Oct 2004

Integrating all of Beehive

• Control compositiono WSM

Controls can be used as part of WS implementations Web service controls expose web services for use in JPFs

Don’t worry about marshalling, expose JavaBeanso Controls

Abstract J2EE resources in supported containers• Page Flow

o Consumes all of the above allowing web application developers to code to controls

o One abstraction for all back-end services

Page 33: Apache Beehive BEA User's Group Oct 2004

The Page Flow Compiler

• [TODO: picture]

Page 34: Apache Beehive BEA User's Group Oct 2004

Beehive/NetUI JSP Tags

• Integrated with a JSP 2.0 containero Uses the JSP 2.0 EL on almost all JSP tag attributes

• Render HTML or XHTMLo Configurable with a webapp-level setting

• New Data Grido Paging / sorting / filteringo Extensibility model for building new column types,

pagers, etc• Rich Tree component• Open SDK for building / extending tags

Page 35: Apache Beehive BEA User's Group Oct 2004

The Test Recorder

• Test infrastructure open sourced in Apache as part of NetUIo Based on JUnit

• How it workso “Records” user interactions with a webapp

Output is an XML “record” fileo Executes a test by “playing back” a recorded session

POSTs recorded request parameters Captures output during “playback” Diff’s the “record” and “playback” files to determine pass / fail

• NetUI BVTs have about 420 of these• Contributes significantly to stability of NetUI

Page 36: Apache Beehive BEA User's Group Oct 2004

Creating a Beehive Webapp

• Controls / NetUI enabled webappo Page Flow JARs

Struts / NetUI / XMLBeans / Log4J / JSTLo NetUI TLDso Controls JAR

• Building a Beehive webappo Compile XSDs into XMLBeanso Codegen Controls / Page Flows to .java fileso Comple Java sources to WEB-INF/classes

• Fully transparent• Build files provided with Beehive distribution

Page 37: Apache Beehive BEA User's Group Oct 2004

Beehive Petstore Demo

DEMO

Page 38: Apache Beehive BEA User's Group Oct 2004

The Webapp

• Sizeo 7 JPFs / 21 JSPso Various .tag files

• Highlightso Uses Beehive Controls

The JPFs code to a single API Implementation is backed by a naïve in-memory database Can be swapped out with other control implementations

Database WebServices Stay tuned for ApacheCon!

o Fully internationalizedo Zero code in the JSPso Built with site templates

• Not done yet!

Page 39: Apache Beehive BEA User's Group Oct 2004

WebLogic Workshop Demo

DEMO

Page 40: Apache Beehive BEA User's Group Oct 2004

Pollinate Demo

DEMO

Page 41: Apache Beehive BEA User's Group Oct 2004

Getting Involved

Page 42: Apache Beehive BEA User's Group Oct 2004

Resources

• Beehive : http://incubator.apache.org/beehive/

• Beehive : http://incubator.apache.org/beehive/mailinglists.html

• Beehive : http://wiki.apache.org/beehive • Beehive : http://dev2dev.bea.com/technologies/beehive

• XML Beans : http://xmlbeans.apache.org

• Pollinate : http://www.eclipse.org/pollinate/

• Pollinate : https://dev.eclipse.org/mailman/listinfo/pollinate-dev • BEA : http://dev2dev.com• Instantiations : http://www.instantiations.com/

• Genuitec : http://www.myeclipseide.com/

• Soaring Eagle LLC : http://www.soaringeagleco.com