Projects

Project 0: Sanity Check

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: Data Access Tier

Project 1 will require the development of the business objects and O/R mapping of the business objects to a relational database. 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 EJB3.x Entities
  • Ingest test data into database
  • Manipulate data in database using DAO

Project 2: N-Tier Application

Project 2 wraps the data access in a set of business logic with user interface access. The business logic will be hosted in an EJB tier; providing resource management, transactions, security (added in project 3), and RMI access. The user interface will be supplied through the use of Servlets and JSPs. A stand-alone RMI client will also be developed.

Specific Goals:

  • Develop and test business logic that uses the data access tier
  • Integrate business logic with a Web tier
  • 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 RMI

Project 3: Secure and Asynchronous Application

Project 3 enacts security for Project 2 and adds publish/subscribe topics, request/reply queues, 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

General Requirements

  • 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
  • Projects must be supplied with a README that points out how project meets requirements.

Grading

Your projects will be graded on completeness and quality of product. In order for you to recieve full credit in each area, it must be a) complete, b) done well, and c) tested. The specific breakdown of grading criteria will be supplied with each project description. However, they commonly contain the following areas.

  • README provided that describes where each requirement satisfield: 10pts
  • projects cleanly builds (with Maven): 15pts
  • functionality X: ?? pts
  • functionality Y: ?? pts
  • functionality Z: ?? pts

Each area will be judged according to the following breakdown. For areas where testing does not apply (e.g., README and build), those points will be assigned to quality:

  • complete: 60%
  • quality of implamantation supplied: 30%
  • testing: 10%

Submission Guidelines

You should test your application prior to submission by

  • 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 old .class files within your target directory and are not depending on any residue schema or data in your database.
  • 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, 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.
  • 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, README (could be in source zip), and built project artifact(s) (e.g., jar, war, ear, etc.). 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 both):

  • Mark - mdsholund@gmail.com
  • Jim - jcstaff@apl.jhu.edu