Orientation


This page describes the structure of JumpStart 6.10.n.


Web source is in these locations:
	web
|---src
|---main
|---java
|---jumpstart
|---web
|---components --> .java, .tml, .properties for components eg. Layout.java, Layout.tml
|---pages --> .java, .tml, .properties for pages eg. UserSearch.java, UserSearch.tml
|---services --> .java for services eg. AppModule.java and BusinessServicesLocator.java
|---WEB-INF --> app.properties file for web application-wide messages
Business source is in these locations:
	business
|---src
|---main
|---java --> messageDefs.properties file for business messages
|---jumpstart
|---business
|---domain --> .java for business domain (services and entities eg. SecurityFinderService and User)
|---resources --> .xml for persistence and datasource descriptors
Eclipse compiles the java source to bin/, then runs our collapser to copy all the necessary items to collapsed/ . Its purpose is explained in Testing: WAR or EAR.

The collapsed/ directory holds a WAR in "collapsed EAR" format:
	collapsed
|---jumpstart.war --> the web layer with business layer embedded
|---WEB-INF
|---classes --> the business and web classes together

Reference These files describe the application structure. They rarely need to change.
enterprise/src/main/resources/META-INF/application.xml  is needed if we're deploying an EAR. It tells the application server that the EAR contains a WAR and a JAR, and it says the WAR handles URLs involving jumpstart.
web/src/main/java/jumpstart/web/WEB-INF/web.xml  tells the web server how to handle jumpstart URLs - it says filter them through Tapestry!
business/src/main/resources/META-INF/MANIFEST.MF  tells the EJB3 server which classpath entries we need (in addition to the ones it provides).
business/src/main/resources/META-INF/persistence.xml  tells the EJB3 server how we want to persist data - the datasource name and some settings. The collapser copies this file in from business/src/main/resources/persistence-descriptor where there is a choice of files to suit different combinations of HSQL, MySQL, H2, or Derby, with Hibernate, in OpenEJB, JBoss, or Glassfish. The collapser gets the one specified in build.properties.

The only one you're likely to change is persistence.xml. See Tips for more on that.

Tapestry expects a class called AppModule to exist to describe services we want added in:
jumpstart.web.services.AppModule

Examples Here are the pieces involved in logging in:

Layer Source file Location
View LogIn.tml web/src/main/java/jumpstart/web/pages/theapp/
Controller LogIn.java web/src/main/java/jumpstart/web/pages/theapp/
Web messages app.properties web/src/main/webapp/WEB-INF/
Services ISecurityFinderSvcLocal.java
SecurityFinderSvc.java
business/src/main/java/jumpstart/business/domain/security/iface/
business/src/main/java/jumpstart/business/domain/security/
Entity User.java business/src/main/java/jumpstart/business/domain/security/
Business messages messageDefs.properties business/src/main/java/

Here are the pieces involved in editing a user. Many are the same as for logging in:

Layer Source file Location
View UserEdit.tml web/src/main/java/jumpstart/web/pages/theapp/security/
Controller UserEdit.java web/src/main/java/jumpstart/web/pages/theapp/security/
Web messages app.properties web/src/main/webapp/WEB-INF/
Services ISecurityFinderSvcLocal.java
SecurityFinderSvc.java
ISecurityManagerSvcLocal.java
SecurityManagerSvc.java
business/src/main/java/jumpstart/business/domain/security/iface/
business/src/java/main/jumpstart/business/domain/security/
business/src/java/main/jumpstart/business/domain/security/iface/
business/src/java/main/jumpstart/business/domain/security/
Entity User.java business/src/main/java/jumpstart/business/domain/security/
Business messages messageDefs.properties business/src/main/java/

Tapestry locates components that aren't pages a little differently. For example, the "Layout" component:

Layer Source file Location
View Layout.tml web/src/main/java/jumpstart/web/components/theapp/
Controller Layout.java web/src/main/java/jumpstart/web/components/theapp/

©2006, 2012 Geoff Callender, Sydney, Australia