Enterprise Java Development@TOPIC@
Your project will be graded primarily on the demonstration ability to implement concepts covered in this portion of the course. A perfect score will need to implement the full end-to-end scenario. A passing score will need to make sure to cover the grading criteria outlined below within the partial end-to-end implemented.
README provided that describes where each requirement satisfied and describes the non-obvious: 10pts total
Projects cleanly builds with Maven and deploys required modules: 12pts total
Project cleanly builds the required modules (JAR, EJB, WAR, and EAR) with Maven: 3pts
Build automatically deploys the applications to the server for IT tests: 3pts
Project successfully deploys a persistence unit within an EJB and WAR modules: 3pts
Project successfully deploys EJBs within an EAR and WAR modules: 3pts
Project 1 functionality: 10pts total
JPA entity mappings correct: 8pts
Project 1 end-to-end unit tests still exist: 2pts
EJB Tier: 15pts total
Demonstrated ability to configure EJB with necessary resources and/or dependencies: 5pts
Demonstrated ability to complete a call from the remote client to the database and back: 5pts
Correct use of stateless constructs: 5pts
RMI Interface: 9pts total
Demonstrated ability to define a @Remote interface and expose using JNDI: 3pts
Demonstrated ability to lookup a @Remote interface using JNDI: 3pts
Demonstrated ability to invoke an EJB method using RMI: 3pts
JAX-RS Interface: 17pts total
Demonstrated ability to marshal and demarshal payloads from/to XML or JSON into/from DTO classes: 5pts
Demonstrated ability to define an HTTP resource endpoint: 5pts
Demonstrated ability to define a resource URI path.
Demonstrated ability to use HTTP methods properly with respect to actions performed.
Demonstrated ability to map an input method parameter from URI and query parameters.
Demonstrated ability to use status codes properly with respect to result status.
Demonstrated ability to implement a JAX-RS client interface and invoke an HTTP resource endpoint: 5pts
Demonstrated ability inject an EJB into a JAX-RS class and delegate implementation to the EJB: 2pts
Web UI integration: 10pts total
Implementation of a browser-based, server-side Web UI: 3pts
Demonstrated ability to inject an EJB into the Servlet class to implement functionality behind the Web UI: 2pts
Implementation of at least one entire use case from prompt, request, action, and response: 5pts
Transactions: 7pts total
Explicit transaction attribute defined: 2pts
Proper demonstration of data flushed to DB being rolled back: 5pts
End-to-end Integration Test: 10pts total
Clean, easy to follow, sequence of steps through the end-to-end flow demonstrated: 10pts
The following table contains examples of where projects have lost points in the past. Of course, each project submitted can introduce new issues or different severity levels of the same issues. Do not treat this as a complete list.
Table 25.1. Sample Lost Points
README | |||
---|---|---|---|
Not provided | 10 | ||
README did not indicate where X was located and it was not obvious even after ... | 2 | ||
The WebUI is hard to navigate (fine) but README offered no assistance | 5 |
Projects cleanly builds with Maven | |||
---|---|---|---|
One of your IT tests assume the DB is setup correctly prior to running and that would only be true of we were running a common server database instance across our unit and IT tests. | 2 | ||
Testing does not produce consistent results - out of four runs of mvn install the process failed twice and succeeded twice. | 2 | ||
Build was not portable. I had to make changes. Sending me a copy of this beforehand would have caught this. | 2 |
Project 1 functionality | |||
---|---|---|---|
DB schema is under-constrained | 1 | ||
Project 1 end-to-end scenarios no longer exist/run | 2 |
EJB Tier, remote interface, and EAR deployment | |||
---|---|---|---|
Attempting to set the state of a @Stateless EJB. What do you think will happen to that state when you get a different bean instance the next time you call? | 5 | ||
With auto-create DDL turned on (hibernate.hbm2ddl.auto" value="create") your application deletes all data when redeployed. Deleting all data should be restricted to only an explicit call to resetAll(). | 5 | ||
Not separating a single call into separate transactions to drop and then create schema. First action may fail when not exist. | 2 | ||
You have methods that will only work in a @Local interface as part of your @Remote interface | 2 | ||
Reusing business logic classes instead if EJB components - repeating the same work of the reusable EJB component in each EJB that needs to reuse the functionality. Inject @Local interfaces. Do not repeat instantiation and setup of identical business logic/DAO classes. | 2 | ||
Injest was not implemented within a deployed EJB. It was mistakely implemented the same as project 1 in a JUnit client. | 5 | ||
You have not integrated the two applications at the EJB remote interface level. The second application does not make a single remote call to the first application. All interaction is occcuring outside of the server-side and results passed in. | 5 |
WAR/EJB deployment | |||
---|---|---|---|
You are deploying EJBs from the first application within your second application's WAR. Look at your built/deployed artifact and correct dependencies. | 5 |
Web UI integration | |||
---|---|---|---|
UI does not provide a path to satisfy a step in the end-to-end scenario (that the IT test shows works). | 2 | ||
EJB/Impl functionality called by UI fails and is not exercised by end-to-end IT test | 2 | ||
This is a real bust when tested on the deployment platform. This should have been easily noticed. Pressing resetAll() results in the following error displayed. | 5 |
Transactions | |||
---|---|---|---|
Transaction scope not explicitly defined for EJB. You are accepting container defaults. | 1 | ||
No attempt to demonstrate transaction rollback | 10 | ||
Scenario shows business logic check but not a rollback of actions (store) to a transactional resource (DB). The requirement called for you to persist something all the way to the database - such that if you stopped in a breakpoint you would see the data - and then have the data thrown away due to a rollback. | 7 |
End-to-end Integration Test | |||
---|---|---|---|
Poluted, hard to follow, too much extra stuff | 2 | ||
Missing resetAll and populate at start of scenarios | 5 | ||
Missing step X | 1 | ||
No. I want different functionality in this step | 1 |