WebObjects Matt Aguirre Lally Singh
What Is It? A Java based development platform specifically designed for database-backed web applications.
What Does It Have? Scalability: built in load balancing among a dynamically configurable set of servers Industry standards support: JSP/J2EE/JNDI support built in Multiple client type support: Web Browser, Java Client Application, XML, SMIL, WAP… Easy extensibility: add new web components for immediate reuse.
Architectural Overview
Architecture In Depth
Web Components Three Parts: HTML file Bindings file Java code Embeddable within themselves: follows the Composite design pattern Embeddable within JSP pages Communicate to each other & Enterprise Objects (EOs) through Key-Value coding
Example Web Component A simple form containing two items: a textbox and a submit button User hits ‘Submit’ and the name is shown in System.out. Not very useful
The HTML Untitled Sample Form Name:
The Bindings Form1: WOForm { } SubmitButton1: WOSubmitButton { action = submit; } TextField1: WOTextField { value = name; }
The Java File public class Main extends WOComponent { protected String name; public Main(WOContext context) { super(context); name = new String(); } public WOComponent submit() { System.out.println("name="+name); return null; // default - means we go back to same page }
What Happens? When the page is requested, the value for name is taken from the Component’s instance via Key-Value Coding The page is displayed to the user The user types in something into the textbox The user hits submit WO updates the value of name with what the user put in the textbox WO then calls Main ’s submit () method submit () prints out the string the user typed in
Key Value Coding A method to access data in classes without relying on their interfaces Implemented through the KeyValueCoding Java interface The default implementation scans through reflection. Ex: to set the key foo, the following will be checked in order: 1. setFoo()4. _isFoo 2. _setFoo()5. foo 3. _foo6. isFoo