Enterprise Java Development@TOPIC@
Project 0 will require construction of your development tree and early implemementation of technical requirements for class projects. The intent of this short/skeletal project is to get the student to a concrete starting point for course topics, eliminate wrong assumptions, and to generate early discussions about the development and development options/trade-offs. Grading will be primarily a done/not-done grade with unsatisfactory starts given feedback and a request to re-submit.
Specific Goals:
Instantiate a Maven development tree for projects 1 thru 3.
Setup JUnit test case(s).
Develop business logic interfaces and method signatures for end-to-end scenario.
Develop skeletal business objects used in the business logic interfaces.
Develop an early JUnit test that demonstrates understanding of the end-to-end requirements for project 1.
Project 1 will require the development of the business objects, O/R mapping of the business objects to a relational database, and business logic to integrate the end-to-end application. The artifacts from project 1 will also be used as a foundation for all follow-on projects as well. There is no application server used in project 1. All code is executes within a single JVM and database.
Specific Goals:
Develop and test a Java application
Develop and test a set of POJOs
Design a relational database schema
Develop and test a DAO using JPA Entities
Develop and test a business logic to manipulate data using DAOs.
Ingest test data into database
Project 2 deploys the business logic and data tier to the server-side. to be hosted in an EJB tier; providing resource management (e.g., threads), transactions, security (added in project 3), and remote access. The user interface will be supplied through the use of Servlets and JSPs integrated with the EJBs. A remote client will also be developed for the unit tests.
Specific Goals:
Deploy business logic within an EJB application using Session Beans
Configure applications using JNDI and CDI.
Integrate application with JTA
Access EJB business logic using remote interfaces
Integrate business logic with a Web tier
Project 3 enacts security for Project 2 and adds publish/subscribe topics and timers. An application server is used to host the application logic and JMS components. A stand-alone client is also developed to interface with the appication through JMS messages.
Specific Goals:
Protect access to applications using Java EE security
Authenticate users using Java EE security means
Design asynchronous interactions
Design JMS messages
Develop and test MDB and stand-alone JMS clients
Develop and test EJB Timers
Projects must build using Maven 3. Ant will be used late in the semester to wrap any interactive commands (e.g., launch JavaSE JMS subscriber)
All projects must be portable to build and deploy within grader and intructor environments. You may submit partial projects early to get portability feedback (not early content grading feedback).
Test Cases must be written using JUnit or another unit test frameworks that will run within a Maven surefire and failsafe environment.
Projects must be supplied with a README that points out how project meets requirements.
You should test your application prior to submission by
Run maven clean, zip your project from the root, and unzip in a new location. Move your localRepository (or set your settings.xml#localRepository value to a new location -- don't delete your primary localRepository) and run mvn clean install from the root of your project. This will make sure you do not have dependencies on older versions of your modules or manually installed artifacts. This will also make sure you are not depending on any old .class files. This, of course, will download all project dependencies and help verify that the project will build in other environments. This will also simulate what the grader will see when they unzip your project.
Coldstart your database instance(s) and run mvn clean install from the root of your project. This will make sure you are not depending on any residue schema or data in your database.
Make sure the README documents all information required to navigate your application (primarily a project 2 and 3 requirement) and point out issues that would be important for the grader/instructor to know (e.g., "the instructor said...")
You will e-mail the projects to the grader and me with the following subject line
(your name) project #; revision 0; part # of #
Your submission will include source zip and README (could be in source zip). You may also include pre-built artifacts if it does not add a huge size burden. The easiest way to do this is to zip up the project from the root after completing a build.
If you need to make a correction, the correction should have the following e-mail subject. The body should describe what you wish to revise.
* (your name) project #; revision N; part # of #
Submission e-mails (mail to all):
Jim - jim.stafford@jhu.edu