June 6th and 7th ... San Francisco ... Hotel Whitcomb

Direct to Web Overview

Speaker : David LeBer

Learn what is D2W, a description of the D2W technologies and where they fit into the WebObjects frameworks. David will also show you how to change the look of an application so that it doesn't look like D2W and how you can create your own D2W template components.

Show full session description

Hide full session description

In this two-parts session you will learn:

Part 1

  • Introduction
  • What is D2W - A description of the D2W technologies and where they fit into the WebObjects frameworks
  • D2W Overview - Understanding the D2W components
    • Rule Engine
    • Rules
    • Common Rule Keys and Assignment Types
    • Role of the D2WContext
    • The Look and templates
  • Building a D2W Application
  • Modifying D2W behaviour with Rules

Part 2

  • Exploring the role of the Look
  • Making D2W not look like "D2W"
  • Why MVC is mandatory
  • Using Custom Components
  • Controlling flow with the next page delegate
  • Creating your own D2W Template Components

Project Wonder in Depth

Speaker : Mike Schrag

This year, we will go in depth for certain parts of Project Wonder : ERXJGroups, ERTaggable, ERAttachment and ERChronic.

Using Maven with WebObjects

Speaker : Henrique Prange

Learn how you can use Maven to manage your WebObjects projects, and also why you should use it.

Deployment with Capistrano

Speaker : Michael Bushkov

Learn how to use Capistrano (tips and tricks included) to deploy your applications, monitor your servers and backup your data.

Show full session description

Hide full session description

Deployment is one of the crucial steps of the development process. It must be automated - especially for web apps - and a lot of different tools emerged in recent years to automate deployments in various ways. One of such tools is Capistrano - a popular instrument in Rails community, built and used internally by Rail's creators - 37signals.

Capistrano (as anything from 37signals) is implemented in Ruby - but it doesn't require in-depth Ruby knowledge in most cases. The key feature of Capistrano is the ability to easily execute shell commands and upload files on any number of remote hosts. It allows you to react on the output from these commands, supports transactions and rollbacks. While very simple for non-Ruby users Capistrano becomes even more powerful for developers with some Ruby knowledge. While doing this session, we will start with small real-life deployment recipe example (deployment scripts are called "recipes" in Capistrano) and will continuously extend it demonstrating Capistrano features along the way.

In this session you will learn:

  • The extreme minimum of Ruby that is needed to use Capistrano
  • The most number of Capistrano features (tasks, roles, variables, transactions, triggers, etc...)
  • How to execute remote commands with Capistrano and react on their output
  • How to use Capistrano to monitor your servers
  • How to use Capistrano to deploy your applications
  • How to use Capistrano to restart WO applications
  • How to use Capistrano to backup your data
  • How to integrate Capistrano with Hudson
  • Best practices of designing Capistrano recipes for a set of projects

The result of the session will also be a release of Wondercap - a set of Capistrano extensions that:

  • Tremendously simplify Capistrano usage in multi-project environment
  • Contain extensible and flexible set of build and deployment recipes for such common tasks as: deployment itself, servers monitoring, db backups, wo apps restart, selenium testing and more.

Building WebObjects applications with Hudson

Speaker : Mike Schrag

Hudson is a continuous integration engine that can be used to build your WebObjects projects. Learn how mDimension is using it to build their applications and to see which advantages Hudson provides to your organization.


Speaker : Guido Neitzer

Learn how to localize your application, including sessionless apps and content stored in databases.

Template system in WebObjects 5.4

Speaker : Drew Davidson

The new template system in WebObjects 5.4 can be used for a lot of things, learn how you can use it to your advantage.

Test Driven Development with WebObjects

Speaker : Denis Frolov

Get an introduction to Test Driven Development and meet the tools - ERSelenium, JUnit, JMock. Denis will demo the creation of a a meaningful WebObjects application from scratch,guided by tests and will explain testing best pratices.

In this session, you will learn :

  • Introduction to Test Driven Development.
  • Levels of testing.
  • Meet the tools - ERSelenium, JUnit, JMock.
  • Demo of creating a meaningful WebObjects application from scratch, guided by tests.
  • Testing best practices (Selenium tests organization, creating test data, Selenium setup methods, etc).

Development Tools

Speaker : David Avendasora

2009 brought big changes to WOLips. David will show you how to manage the classpath in the latest version of WOLips and how to switch between different versions of WebObjects. He will also demo how to use ZeroTurnaround's JavaRebel to see the results of almost any Java code change immediately, without the need to restart your application.

iPhone integration

Speaker : Ray Kiddy

Ray will show you how you can use JSON and WO as a backend to iPhone applications. You will also learn how to deal with primary keys, data merging and synchronization issues.

WebObjects in the Cloud

Speakers : Jay Al Hashal and Daniel Kao

Bootstrap your WebObjects application for the world to see in minutes! Use the power of Amazon Elastic Cloud Computing (EC2) to deploy WebObjects applications without the need of bulky & expensive physical servers. Need to scale? Easy as launching additional server instances in the cloud and you're done in minutes! In our demo, we'll show from start-to-finish the process of deploying a WebObjects Application which uses a PostgreSQL database onto Amazon EC2.

EOF Validation: The Next Generation

Speaker : Chuck Hill

Learn the deep down details of how validation works in EOF and in WOComponents and how to extend and customize validation. Participate in the development of Open Source next generation validation frameworks for WebObjects.

Show full session description

Hide full session description

Validation is one of the least satisfactory parts of WebObjects. It shows signs of promise and of abandonment, like a prototype left uncompleted. We will start with a survey of the state of validation in WebObjects and the extensions found in Wonder's core ERExtensions frameworks; the seldom used Validity framework; and in the GVC EOFValidation framework. We will then dive in to take a look at EOF validation "deep under the covers" focusing on the mechanics of how it can be extended. We will then define the functionality that will make the next generation of validation for WebObjects and examine an implementation.

With a validation roadmap in place and a highly functional validation base available, we will turn our attention to the WOComponent presentation layer. Here, too, validation handling leaves much to be desired and the functionality is not clear. We will look at the often ignored validation handling in WOComponent and how it quickly breaks down. We separate WOComponents into two categories, Pages and PageComponents, and get them to co-operate in handling validation. The result will be a page that can orchestrate validation handling, including handling optimistic locking exceptions equally whether they occur within one EOF stack or across instances. This will allow us to create drop-in components that can handle their own validation in a co-operative fashion with the page. As with validation, a functional, documented foundation will be supplied.

In this session you will learn:

  • how WebObjects validation is implemented
  • how WebObjects validation can be extended
  • how to make working with validation easier
  • how validation handling was intended to work with WOComponent
  • how to bring working validation handling to WOComponent
  • how to detect optimistic locking exceptions within one EOF stack
  • how to handle all optimistic locking exceptions
  • how to use inheritance and composition to make validation handling and presentation painless
  • how to contribute to the future of EOF validation

The result of this session will be the release of two new frameworks for WebObjects validation (one for the EOF layer and one for the WOComponent presentation layer). These frameworks will be written to be independent of other frameworks (including Project Wonder) so everyone will be able to use and benefit from them. These frameworks will be functional, but there will be areas where additional functionality can be added (such as support for additional databases). The intention is that these will get completed by others in the community.

Inside the Enterprise Objects Framework

Speaker : Mark Ritchie

You're written your Java WebObjects application and it works fine for you however your end users are complaining. Complaints such as slow performance, stale data, intermittent exceptions, and even the occasional claim that your application is silently replacing information in the database. Now, some of these problems can be worked around by having the user log out and then back in however others are much less predictable and just down right frustrating. Join Mark for an exploration of what's happening below the covers of Enterprise Objects Framework and learn how to build better applications. Specifically we'll look at caching, locking, interactions between multiple users and multiple applications, and, how to collect and interpret the performance information that WebObjects can be configured to collect.

WO and JavaScript front-ends

Speaker : Mike Schrag

Some say Ruby on Rails is the tool for Web 2.0 apps, but Mike will show you that WebObjects and Project Wonder can be use to write fantastic Web 2.0 apps. Learn how you can use JSON-RPC and REST with JavaScript front-end frameworks.

WebObjects Puzzlers

Speakers : David LeBer and Mark Ritchie

A light-hearted look at some of the more interesting behaviour of the WebObjects frameworks. If you're familiar with Java Puzzlers, then you'll know what to expect, if not - then be prepared to 'compile code in your head' and try and figure out just what each of the code examples in this presentation actually does. There are no prizes for getting the right answer - but there will be something on offer for those who can explain why the code does what it does.