This application was developed on Tomcat 8 application server. It was built on different JEE 7 components. JPA/Hibernate provides the interface to the MySQL database server, UI is provided by JSF/Primefaces. In fact Tomcat is only a JSP container, not a complete JEE framework, for example EJBs are not supported and those are not used at all. The project consists of a singe war file, a web module. The missing but needed JEE services were added to the application by Maven configuration, e.g. JSF or CDI support.
List of used relevant technologies:
- Java 8 usage, e.g. stream for list processing, new date/time API calls
- instead of EJBs (unsupported by Tomcat) CDI (by Weld implementation) objects are used
- own transaction handler (similar to the known from EJB) using CDI interceptor
- own EntityManager(Factory) using CDI producer
- MySQL database with more than a dozen tables, phpMyAdmin usage
- JPA Hibernate for database usage, JPA entity / DAO / Service separation, Querydsl usage.
- UI by JSF and Primefaces
- SLF4J logging with CDI producer
- Security ensured by Apache Shiro
- build is managed by Maven
- MySQL export file of the actual database is used for test runs. More AWK scripts (from Linux host) are called directly by maven to prepare the export file for test import
- unit and integration tests by CDI-Unit can be run in physical (MySQL) and/or memory (HSQLDB databases. Mockito and PowerMock with JUnit. (PowerMockito extends Mockito functionality with several new features such as mocking static and private methods and more.)
- acceptance tests by Aqruillian / Selenium 2
- in test phase email receipents are piped to a single email address by MailTrap
- Web Service - SOAP Client to OpenLigaDB. Application downloads the live results from there.
- Quartz scheduler framework for scheduled calling of WS Soap Client to synchronization of match results
- Java Freemarker Templates (FTL) usage for emails to be sent. Email content includes both HTML and text formats.
- Business logic can be reached via WS REST Server functions. JSF UI is not unique, it can be developed separately, for example on mobile platform. (There is a plan of the author to create a new client named jWorldcup MC on Android/iOS using Codename One.)
- Eclipse IDE
- Internationalization, English and Hungarian translations, different local timezones support