// Java DodgeLite Application.java public class Application extends WebApplication { public ImmutableHashtable dodgeData; public ImmutableVector prices; public ImmutableVector sortBys; public Application() { super(); String filePath = resourceManager() .pathForResourceNamedInFramework("DodgeData.dict", null); if (null != filePath) { try { dodgeData = new ImmutableHashtable(new java.io.FilePath(filePath)); } catch (Exception e) { //... } } else { // ... } int priceValues[] = { 8000, 10000, 12000, 14000, 16000, 18000, 20000, 25000, 30000, 50000, 90000}; MutableVector a = new MutableVector(); for (int i=0; i<priceValues.length; i++) { Number num = new Integer(priceValues[i]); a.addElement(num); } prices = (ImmutableVector) a; String sortByStrings[] = { "Price", "Type", "Model" }; for (int i=0; i<sortByStrings.length; i++) { a.addElement(sortByStrings[i]); } sortBys = (ImmutableVector) a; }The WOComponent class defines a method application, which provides access to the component's application object. So any component can access application state this way:
// WebScript DodgeLite Application.wos id dodgeData; id prices; id sortBys; - init { id filePath; [super init]; filePath = [[self resourceManager] pathForResourceNamed:@"DodgeData.dict" inFramework:nil]; if (filePath) dodgeData = [NSDictionary dictionaryWithContentsOfFile:filePath]; //... prices = @(8000, 10000, 12000, 14000, 16000, 18000, 20000, 25000, 30000, 50000, 90000); sortBys = @("Price", "Type", "Model"); return self; }
//Java public boolean isLuckyWinner() { Number sessionCount = application().statisticsStore().get( "Total Sessions Created"); if (sessionCount == 1000) { return true; return false; }Sessions can access application state using the same method defined in WOSession.
// WebScript - isLuckyWinner { id sessionCount = [[[self application] statisticsStore] objectForKey:@"Total Sessions Created"]; if (sessionCount == 100]) return YES; return NO; }
Application state persists for as long as the application is running. If your site runs multiple instances of the same application, application state must be accessible to all instances. In this case, application state might be best stored in a file or database, where application instances could easily access it. This approach is also useful as a safeguard against losing application state (such as the number of visitors to the site) if an application instance crashes.
Table of Contents Next Section