Orientation
This page describes the structure of JumpStart 5.7.n.
Web source is in these locations:
webBusiness source is in these locations:
|---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
businessEclipse compiles the java source to bin/, then runs our collapser and/or exploder to copy all the necessary items to collapsed/ and/or exploded/. Their purpose is explained in Testing: WAR or EAR.
|---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
The collapsed/ directory holds a WAR in "collapsed EAR" format:
collapsedThe exploded/ directory holds an "exploded" EAR file with this structure:
|---jumpstart.war --> the web layer with business layer embedded
|---WEB-INF
|---classes --> the business and web classes together
exploded
|---jumpstart.ear
|---jumpstart.jar --> the business layer
|---jumpstart.war --> the web layer
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.
	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 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:
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/ |