This document summarizes a presentation on the Conair project. The presentation covers the project's architecture using JEE, implementation of REST APIs with AngularJS, printing functionality using an XLS templating engine, authentication with LinkedIn OAuth 2.0, hosting on a virtual server, continuous integration with Jenkins and Cloudbees, and backups to Dropbox. The project code is open source and available on GitHub.
2. _inspired by innovation www.rgigroup.de
AGENDA
2
I JEE Architecture
EJB, JPA, JAX-RS
I REST, AngularJS and
Bootstrap
I Print-Out
via Excel (based on XLS
Templating Engine)
I Authentication
via LinkedIn (OAuth 2.0)
I Hosting
Server Infrastruktur: Apache HTTP
Server, Glassfish4, MySQL
I CI / DevOps
Cloudbees
I Backup
using Dropbox
4. _inspired by innovation www.rgigroup.de
JEE ARCHITECTURE
4
EJB, JPA, JAX-RS
ECB Pattern
I http://www.cs.sjsu.edu/~pearce/modules/patterns/enterprise/ecb/ecb.htm
I http://www.oracle.com/technetwork/issue-archive/2011/11-jan/o11java-
195110.html
Boundary: EJB SLSB, JAX-RS
Controller: CDI managed beans (seldom used in ConAIR)
Entity: JPA, DTOs (own package for DTO?)
Example: accounting package
5. _inspired by innovation www.rgigroup.de
REST, ANGULARJS AND BOOTSTRAP
5
Strict separation between
I business logic (provided by JAX-RS) and
I UI (realised with AngularJS)
REST API is still in progress
I URI: api/<plural>/<id>
I Communication with DTOs and Map’s
AngularJS (https://angularjs.org/)
I Routing, Controller
I Problem: How to handle validation and calculation in UI and backend
Example: travel costs
Twitter Bootstrap (http://getbootstrap.com/)
I Component library
6. _inspired by innovation www.rgigroup.de
PRINT-OUT
6
The print out solution is based on xls worksheets which are prepared for
printing.
XLS Based Templating Engine
I Syntax similar to AngularJS
I Features: Replacement, Loop, Format
I Template location: OneDrive
7. _inspired by innovation www.rgigroup.de
AUTHENTICATION
7
OAUTH2.0 is a nightmare!
Usage of third party library Scribe
https://github.com/fernandezpablo85/scribe-java
//TODO: Interceptor for REST services
I Interceptor for server side JAX-RS REST services
I Interceptor for client side AngularJS AJAX services
8. _inspired by innovation www.rgigroup.de
HOSTING
8
I Virtual machine at server4you (8,90€/month)
www.server4you.de/vserver/
I Apache HTTP server, Glassfish v4, MySQL 5.1 on RHEL
mod_proxy /etc/httpd/conf.d)
9. _inspired by innovation www.rgigroup.de
CI / DEVOPS
9
I Jenkins @ Cloudbees
Problem Amazon E2C
I Packaging: maven-release-plugin
I Deployment: cargo-maven2-plugin
Cloudbees authorisation by certifcate
I Jenkins configuration
mvn release and cargo redeploy
10. _inspired by innovation www.rgigroup.de
BACKUP
10
Backup 2 Dropbox
I Authenticate via Key for Dropbox Application
https://www.dropbox.com/developers/apps/
I Dump MySQL and store server configuartion
I http://blog.matthias-reining.com/backup-a-linux-server-to-dropbox/
https://github.com/andreafabrizi/Dropbox-Uploader
11. _inspired by innovation www.rgigroup.de
UPDATES
@matthiasreining
blog.matthias-reining.de
http://about.me/matthiasreining
12. HEAD OFFICE
Via San Gregorio, 34 - 20124 MILANO
Tel. +39 02 6691177
Fax +39 02 6692173
FACTORY
Via Cesare Pavese 6 - 10015 IVREA, TO
Tel. +39 0125 618000
Fax +39 0125 634059
OFFICE GERMANY
Plattnerstr. 2, D-97070 Würzburg
Tel. +49 931 710 565 46
Fax. +49 931 710 565 47
IVREA TURIN MILAN VERONA ROME REGGIO EMILIA BOLOGNA DUBLIN PARIS FRANKFURT WÜRZBURG TUNIS
Matthias Reining
Technical Manager Insurance
-------------------------------------------------------------------------------
RGI Deutschland GmbH
Plattnerstraße 2, 97070 Würzburg, Deutschland
mob +49 172 9917260 – tel +49 931 710 565 46
mail: matthias.reining@rgigroup.de – web www.rgigroup.de