Financial Web System
with Java EE 6
Hirofumi Iwasaki
Financial Service Department, Development Unit,
Rakuten, Inc.
http://www.rakuten.co.jp/
Speaker Biography
 Hirofumi Iwasaki
– Vice Group Manager, Technology Manager
– Financial Service Department, Development Unit,
Rakuten, Inc.
 Carrier
– Planning, designing & implements for many huge enterprise
systems for financial, manufacturer, public systems with enterprise
middleware, especially Java EE & .NET in Japan for about 15
years.
 Opus, Lectures, etc.
– Magazine: @IT (2005-2010), CIO Magazine (2009), IT Architect
(2005-2009), Web+DB Press (2005), Java World (2001-2004), etc.
– Lectures: WebLogic key person roundtable (2012-2013), etc.
– twitter: @rockcape
2
Agenda

1. Java EE 6 Specifications
2. Financial Requirements &
Java EE Specifications
3. How to Apply Java EE 6
to Real Financial Systems

3
Agenda

1. Java EE 6 Specifications
2. Financial Requirements &
Java EE Specifications
3. How to Apply Java EE 6
to Real Financial Systems

4
What's Java EE (1/2)
 Standard specifications for application servers (except for MS).

Java EE
Specification
Commercial

etc.

Open Source

5
What's Java EE (2/2)
 For ENTERPRISE systems (Enterprise Edition) specifications (full
profile)
– 'Enterprise' means transactional.
– Core architecture is EJB (JTA & CMT) with auto transaction
systems.
– Transactional connectivity for other systems with JPA (JDBC),
JMS, RMI-IIOP.
– Web architecture with JSF (Servlet & Facelet), JAX.
 Each Java EE specification covers general enterprise requirements.

6
The History of Java EE

J2EE
1.2
(1999)

Born!

J2EE
1.3
(2001)

Pandemic
Era

J2EE
1.4
(2003)

Java EE
5
(2006)

Mess Era
(for EE spec)

Java EE
6
(2009)

Java EE
7
(2013)

Integration
Era

Unite to Single
Standard
Again!

7
Grouping of the Java EE Servers
App
Engine

WebLogic World
GlassFish &
Compatible Group
Geronimo &
Compatible Group
Copy

Japan Galapagos
Group

JBoss World

8
Java EE Application Servers Versions
Vendor

App Server

EE 1.4
(2003-)

EE 5
(2006-)

EE 6
(2009-)

EE 7
(2013-)

Open Source

GlassFish

-

2.x

3.x

4.0

Oracle

WebLogic

9.x

10.x

12.x

-

IBM

WebSphere

5.1

6.x, 7.x

8.x

-

Red Hat

JBoss

4.x

5.1

7.1

-

Fujitsu

Interstage

9.0,9.1

9.2,10.x,11.0 11.1

-

Open Source

Geronimo

-

2.x

3.x

-

Hitachi

Cosminexus

7.x

8.x

9.x

-

The de facto
latest version
is EE6
9
Agenda

1. Java EE 6 Specifications
2. Financial Requirements &
Java EE Specifications
3. How to Apply Java EE 6
to Real Financial Systems

10
Financial Services of Rakuten Group

11
Financial Services of Rakuten Group

 Big 6 Services
 Each has huge transactions
 24/7 non-stop services

12
Requirements for Rakuten Financial Systems
Financial
Systems

1. Rapid business logic changeable
as business model changes
2. Huge request capacity as
business grows
3. Must be transactional

13
For our 3 Big Targets
Like periodic
re-construction
known as
"Shikinen-Sengu"
in Japan.

E.g.
Re-construct to next
place once every
20 years in Ise-Shrine
Re-construct

New!

Photo by author (2009 in Ise-Shrine)
14
3 Big Targets for New Architecture

①
sustain
ability

③
System
Transpa
rency

for
new
Arch.

②
Flexibil
ity
15
Typical Usage of EE 6 Specs
Business Logic
(no presentations)

Web Presentation
(no business logics)

Data Access

Call

JPA

DBs

Call

JSF

EJB

Rich Clients
(no business logics)

Messaging
MQ

Connection

RMI-IIOP
Call

Java FX

Call

JMS

JAX

Automatic
Transaction

JavaMail

Other
Servers

Call

MTA

EMail

JTA

Call

16
Applying Service Oriented Architecture
Business Logic
(no presentations)

Web Presentation
(no business logics)

Data Access

Call

JPA

DBs

Call

JSF

EJB

Messaging

Design asJMS
Services
Connection
(aka 'API')

Rich Clients
(no business logics)

RMI-IIOP
Call

Java FX

JAX

Automatic
Transaction

JavaMail

MQ

Call

Other
Servers

Call

MTA

EMail

JTA

Call

17
Simplified Model

Rich Clients
(no business logics)

Web Presentation
(no business logics)

Service
Interfaces

A Shared
Function

Design as
Services
(aka 'API')
 Full Service ('API-nization')
 Re-use one business logic
for another front-end

18
Enterprise 'Transactional' Model
Transaction Boundary

Client
(caller,
views or so)

BEGIN
SELECT
DELETE

Transactional
Services

UPDATE
COMMIT

19
Enterprise 'Transactional' Model (Error Case)

Client
(caller,
views or so)

BEGIN
SELECT
DELETE

ROLLBACK

Transaction Boundary

Transactional
Services

UPDATE
ERROR

No Data Broken Model
20
Distributed Transaction Model

Database 1

BEGIN

Transactional
Services
Database 2

MQ

Global
Transaction

Other
Transactional
Service

21
Distributed Transaction Model (Error Case)

BEGIN

ERROR

Transactional
Services

ROLLBACK

Database 1

Database 2

Local
Transaction

MQ

Global
Transaction

Other
Transactional
Services
No Data Broken Model

22
Each Technology & Java EE Specs
Core Spec
is EJB

JPA

BEGIN

Transactional
Services

JPA

Database 1

Database 2

EJB
Local
Transaction

JMS
MQ

Automatic

EJB Transaction

RMI-IIOP

Global
Transaction

= Container
Managed
JTA Transaction (CMT)

Other
Transactional
Services

23
Agenda

1. Java EE 6 Specifications
2. Financial Requirements &
Java EE Specifications
3. How to Apply Java EE 6
to Real Financial Systems

24
5 Big Issues to Apply New JEE Architecture

25
1. Policies: Case of Rakuten

 Internal Development First,
not order to external SI vendors. (Group All)
 Financial businesses are also the target for the
application of this policy.

ORDER NO
Educate
&
Develop

26
2. Education: Read, Read, Read!

Start from HERE
4th Edition

Good & Only
Japanese
EE 6 book

Good Pocket
Reference!

For NetBeans 7
with EE 6
RECOMMENDED
for WebLogic 12c
27
2. Education: Online Materials
Original Tutorial
for Newbies (Start here!)

NetBeans Java EE docs
for Advanced Information

28
3. Architecture: Apply EE 6 Specs
Business Logic
(no presentations)

Web Presentation
(no business logics)

Data Access

Call

JPA

DBs

Call

JSF

EJB

Rich Clients
(no business logics)

Messaging
Call

JMS

MQ

Connection

RMI-IIOP
Call

Java FX
There's no
rich clients

JAX

Automatic
Transaction

JavaMail

Other
Servers

Call

MTA

EMail

JTA

Call

29
3. Architecture: Migrate from Old
Old Arch (e.g. PHP case)

Spring

PHP

DAO

Transaction
Boundary

JSF 2

Logic

View
New Arch

EJB 3 + JPA

External
DB

External

View

Services
(aka APIs)

DB

Fully Re-written
100% API-nized
30
3. Architecture: Simplified

Web Site A
Web Site B

Internal Site

Batch Exec

Core

Services (aka APIs)

L7 Balancer

Reverse Proxy

Front Real-time

System B
Gateway
Database
System C
Sub Proc

Front Batch

31
4. Environment: Ease of Dev.

Full Local Programming,
Build & Execute support

=

X

X

32
4. Environment: Easy Startup

2. Download
Code from
Repository
4. Refer the JIRA
as for his today's
task improvement

1. Join a
project.

3. Install JDK with IDE,
App servers, build,
and run on you local PC

33
5. Test: Full Auto Testing &Valid.

1. Auto PULL

4. Report
Hourly

ZERO Violations!

3. Auto
Validate

2. Auto
Build
& Test

Management Server

34
Agenda

1. Java EE 6 Specifications
2. Financial Requirements &
Java EE Specifications

3. How to Apply Java EE 6
to Real Financial Systems
Appendix: Java EE 6 Unveiled

35
Is Java EE 6 Useful for Real Projects?

Web Front End

Wait the
Java EE 7

Back End

Not Bad

36
Why you should wait the EE 7 for front-end?

37
1st Issue: JSF Backing bean defectively in EE 6
Java EE 6 (JSF 2.1)

Facelet
Filter

Faces
Servlet

Managed
Bean
@View
Scoped

Facelet

Managed
Bean
@View
Scoped

Facelet

Managed
Bean
@View
Scoped

Phase
Listeners

Managed
Bean
@Session
Scoped

JSF
World
38
1st Issue: JSF Backing bean defectively in EE 6
 Not worked these JSF 1.x codes in JSF 2.x properly.
protected FacesContext getFacesContext(HttpServletRequest request,
HttpServletResponse response) {
FacesContext facesContext = FacesContext.getCurrentInstance();
if (facesContext == null) {
FacesContextFactory contextFactory
= (FacesContextFactory)FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
LifecycleFactory lifecycleFactory
= (LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
Lifecycle lifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
facesContext = contextFactory.getFacesContext(request.getSession().getServletContext(),
request, response, lifecycle);
// Set using our inner class
InnerFacesContext.setFacesContextAsCurrentInstance(facesContext);
// set a new viewRoot, otherwise context.getViewRoot returns null
UIViewRoot view = facesContext.getApplication().getViewHandler()
.createView(facesContext, "");
facesContext.setViewRoot(view);
}
return facesContext;
}

39
1st Issue: JSF Backing bean defectively in EE 6
Java EE 6 (JSF 2.1)
NG!

CDI
don't have
@View
Scoped

Facelet
Filter

Faces
Servlet

Phase
Listeners

NG!

CDI
don't have
@View
Scoped

Facelet

NG!
Facelet
Managed
Bean
@Session
Scoped

OK!

CDI
don't have
@View
Scoped

Integrated
CDI World
40
1st Issue: JSF Backing bean defectively in EE 6
Java EE 7 (JSF 2.2)
OK!
Facelet
Filter

Facelet

New CDI
@View
Scoped

Facelet

Faces
Servlet

New CDI
@View
Scoped

New CDI
@View
Scoped

Phase
Listeners

CDI
@Session
Scoped

OK!
Wait the Java EE 7
if you can

Integrated
CDI World
41
2nd Issue: Non-interchangeable Facelet tags in EE 6
Java EE 6 (JSF 2.1)

<input type="text"
jsfc="h:inputText"
name="id"
value="#{bean.property}" />
Java EE 7 (JSF 2.2)

Changed!

<input type="text"
jsf:id="id"
jsf:value="#{bean.property}" />
Wait the Java EE 7
if you can
42
How's Back End in EE 6?
Business Logic
(no presentations)
Data Access

Call

JPA

DBs

Call

EJB

Messaging
Call

JMS

MQ

Connection

RMI-IIOP
Call

JAX

Automatic
Transaction

JavaMail

Other
Servers

Call

MTA

EMail

JTA

Call

43
Agenda

1. Java EE 6 Specifications
2. Financial Requirements &
Java EE Specifications

3. How to Apply Java EE 6
to Real Financial Systems
Appendix: Java EE 6 Unveiled

Conclusion

44
Conclusion
 Java EE 6 is suitable for huge
financial systems.
 We made new financial architecture
with many measurements
 Wait for the EE 7 servers if you can

Go Ahead,
Ride the Wave!
Make our enterprise
future with Java EE!
45
46

[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6

  • 1.
    Financial Web System withJava EE 6 Hirofumi Iwasaki Financial Service Department, Development Unit, Rakuten, Inc. http://www.rakuten.co.jp/
  • 2.
    Speaker Biography  HirofumiIwasaki – Vice Group Manager, Technology Manager – Financial Service Department, Development Unit, Rakuten, Inc.  Carrier – Planning, designing & implements for many huge enterprise systems for financial, manufacturer, public systems with enterprise middleware, especially Java EE & .NET in Japan for about 15 years.  Opus, Lectures, etc. – Magazine: @IT (2005-2010), CIO Magazine (2009), IT Architect (2005-2009), Web+DB Press (2005), Java World (2001-2004), etc. – Lectures: WebLogic key person roundtable (2012-2013), etc. – twitter: @rockcape 2
  • 3.
    Agenda 1. Java EE6 Specifications 2. Financial Requirements & Java EE Specifications 3. How to Apply Java EE 6 to Real Financial Systems 3
  • 4.
    Agenda 1. Java EE6 Specifications 2. Financial Requirements & Java EE Specifications 3. How to Apply Java EE 6 to Real Financial Systems 4
  • 5.
    What's Java EE(1/2)  Standard specifications for application servers (except for MS). Java EE Specification Commercial etc. Open Source 5
  • 6.
    What's Java EE(2/2)  For ENTERPRISE systems (Enterprise Edition) specifications (full profile) – 'Enterprise' means transactional. – Core architecture is EJB (JTA & CMT) with auto transaction systems. – Transactional connectivity for other systems with JPA (JDBC), JMS, RMI-IIOP. – Web architecture with JSF (Servlet & Facelet), JAX.  Each Java EE specification covers general enterprise requirements. 6
  • 7.
    The History ofJava EE J2EE 1.2 (1999) Born! J2EE 1.3 (2001) Pandemic Era J2EE 1.4 (2003) Java EE 5 (2006) Mess Era (for EE spec) Java EE 6 (2009) Java EE 7 (2013) Integration Era Unite to Single Standard Again! 7
  • 8.
    Grouping of theJava EE Servers App Engine WebLogic World GlassFish & Compatible Group Geronimo & Compatible Group Copy Japan Galapagos Group JBoss World 8
  • 9.
    Java EE ApplicationServers Versions Vendor App Server EE 1.4 (2003-) EE 5 (2006-) EE 6 (2009-) EE 7 (2013-) Open Source GlassFish - 2.x 3.x 4.0 Oracle WebLogic 9.x 10.x 12.x - IBM WebSphere 5.1 6.x, 7.x 8.x - Red Hat JBoss 4.x 5.1 7.1 - Fujitsu Interstage 9.0,9.1 9.2,10.x,11.0 11.1 - Open Source Geronimo - 2.x 3.x - Hitachi Cosminexus 7.x 8.x 9.x - The de facto latest version is EE6 9
  • 10.
    Agenda 1. Java EE6 Specifications 2. Financial Requirements & Java EE Specifications 3. How to Apply Java EE 6 to Real Financial Systems 10
  • 11.
    Financial Services ofRakuten Group 11
  • 12.
    Financial Services ofRakuten Group  Big 6 Services  Each has huge transactions  24/7 non-stop services 12
  • 13.
    Requirements for RakutenFinancial Systems Financial Systems 1. Rapid business logic changeable as business model changes 2. Huge request capacity as business grows 3. Must be transactional 13
  • 14.
    For our 3Big Targets Like periodic re-construction known as "Shikinen-Sengu" in Japan. E.g. Re-construct to next place once every 20 years in Ise-Shrine Re-construct New! Photo by author (2009 in Ise-Shrine) 14
  • 15.
    3 Big Targetsfor New Architecture ① sustain ability ③ System Transpa rency for new Arch. ② Flexibil ity 15
  • 16.
    Typical Usage ofEE 6 Specs Business Logic (no presentations) Web Presentation (no business logics) Data Access Call JPA DBs Call JSF EJB Rich Clients (no business logics) Messaging MQ Connection RMI-IIOP Call Java FX Call JMS JAX Automatic Transaction JavaMail Other Servers Call MTA EMail JTA Call 16
  • 17.
    Applying Service OrientedArchitecture Business Logic (no presentations) Web Presentation (no business logics) Data Access Call JPA DBs Call JSF EJB Messaging Design asJMS Services Connection (aka 'API') Rich Clients (no business logics) RMI-IIOP Call Java FX JAX Automatic Transaction JavaMail MQ Call Other Servers Call MTA EMail JTA Call 17
  • 18.
    Simplified Model Rich Clients (nobusiness logics) Web Presentation (no business logics) Service Interfaces A Shared Function Design as Services (aka 'API')  Full Service ('API-nization')  Re-use one business logic for another front-end 18
  • 19.
    Enterprise 'Transactional' Model TransactionBoundary Client (caller, views or so) BEGIN SELECT DELETE Transactional Services UPDATE COMMIT 19
  • 20.
    Enterprise 'Transactional' Model(Error Case) Client (caller, views or so) BEGIN SELECT DELETE ROLLBACK Transaction Boundary Transactional Services UPDATE ERROR No Data Broken Model 20
  • 21.
    Distributed Transaction Model Database1 BEGIN Transactional Services Database 2 MQ Global Transaction Other Transactional Service 21
  • 22.
    Distributed Transaction Model(Error Case) BEGIN ERROR Transactional Services ROLLBACK Database 1 Database 2 Local Transaction MQ Global Transaction Other Transactional Services No Data Broken Model 22
  • 23.
    Each Technology &Java EE Specs Core Spec is EJB JPA BEGIN Transactional Services JPA Database 1 Database 2 EJB Local Transaction JMS MQ Automatic EJB Transaction RMI-IIOP Global Transaction = Container Managed JTA Transaction (CMT) Other Transactional Services 23
  • 24.
    Agenda 1. Java EE6 Specifications 2. Financial Requirements & Java EE Specifications 3. How to Apply Java EE 6 to Real Financial Systems 24
  • 25.
    5 Big Issuesto Apply New JEE Architecture 25
  • 26.
    1. Policies: Caseof Rakuten  Internal Development First, not order to external SI vendors. (Group All)  Financial businesses are also the target for the application of this policy. ORDER NO Educate & Develop 26
  • 27.
    2. Education: Read,Read, Read! Start from HERE 4th Edition Good & Only Japanese EE 6 book Good Pocket Reference! For NetBeans 7 with EE 6 RECOMMENDED for WebLogic 12c 27
  • 28.
    2. Education: OnlineMaterials Original Tutorial for Newbies (Start here!) NetBeans Java EE docs for Advanced Information 28
  • 29.
    3. Architecture: ApplyEE 6 Specs Business Logic (no presentations) Web Presentation (no business logics) Data Access Call JPA DBs Call JSF EJB Rich Clients (no business logics) Messaging Call JMS MQ Connection RMI-IIOP Call Java FX There's no rich clients JAX Automatic Transaction JavaMail Other Servers Call MTA EMail JTA Call 29
  • 30.
    3. Architecture: Migratefrom Old Old Arch (e.g. PHP case) Spring PHP DAO Transaction Boundary JSF 2 Logic View New Arch EJB 3 + JPA External DB External View Services (aka APIs) DB Fully Re-written 100% API-nized 30
  • 31.
    3. Architecture: Simplified WebSite A Web Site B Internal Site Batch Exec Core Services (aka APIs) L7 Balancer Reverse Proxy Front Real-time System B Gateway Database System C Sub Proc Front Batch 31
  • 32.
    4. Environment: Easeof Dev. Full Local Programming, Build & Execute support = X X 32
  • 33.
    4. Environment: EasyStartup 2. Download Code from Repository 4. Refer the JIRA as for his today's task improvement 1. Join a project. 3. Install JDK with IDE, App servers, build, and run on you local PC 33
  • 34.
    5. Test: FullAuto Testing &Valid. 1. Auto PULL 4. Report Hourly ZERO Violations! 3. Auto Validate 2. Auto Build & Test Management Server 34
  • 35.
    Agenda 1. Java EE6 Specifications 2. Financial Requirements & Java EE Specifications 3. How to Apply Java EE 6 to Real Financial Systems Appendix: Java EE 6 Unveiled 35
  • 36.
    Is Java EE6 Useful for Real Projects? Web Front End Wait the Java EE 7 Back End Not Bad 36
  • 37.
    Why you shouldwait the EE 7 for front-end? 37
  • 38.
    1st Issue: JSFBacking bean defectively in EE 6 Java EE 6 (JSF 2.1) Facelet Filter Faces Servlet Managed Bean @View Scoped Facelet Managed Bean @View Scoped Facelet Managed Bean @View Scoped Phase Listeners Managed Bean @Session Scoped JSF World 38
  • 39.
    1st Issue: JSFBacking bean defectively in EE 6  Not worked these JSF 1.x codes in JSF 2.x properly. protected FacesContext getFacesContext(HttpServletRequest request, HttpServletResponse response) { FacesContext facesContext = FacesContext.getCurrentInstance(); if (facesContext == null) { FacesContextFactory contextFactory = (FacesContextFactory)FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY); LifecycleFactory lifecycleFactory = (LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY); Lifecycle lifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE); facesContext = contextFactory.getFacesContext(request.getSession().getServletContext(), request, response, lifecycle); // Set using our inner class InnerFacesContext.setFacesContextAsCurrentInstance(facesContext); // set a new viewRoot, otherwise context.getViewRoot returns null UIViewRoot view = facesContext.getApplication().getViewHandler() .createView(facesContext, ""); facesContext.setViewRoot(view); } return facesContext; } 39
  • 40.
    1st Issue: JSFBacking bean defectively in EE 6 Java EE 6 (JSF 2.1) NG! CDI don't have @View Scoped Facelet Filter Faces Servlet Phase Listeners NG! CDI don't have @View Scoped Facelet NG! Facelet Managed Bean @Session Scoped OK! CDI don't have @View Scoped Integrated CDI World 40
  • 41.
    1st Issue: JSFBacking bean defectively in EE 6 Java EE 7 (JSF 2.2) OK! Facelet Filter Facelet New CDI @View Scoped Facelet Faces Servlet New CDI @View Scoped New CDI @View Scoped Phase Listeners CDI @Session Scoped OK! Wait the Java EE 7 if you can Integrated CDI World 41
  • 42.
    2nd Issue: Non-interchangeableFacelet tags in EE 6 Java EE 6 (JSF 2.1) <input type="text" jsfc="h:inputText" name="id" value="#{bean.property}" /> Java EE 7 (JSF 2.2) Changed! <input type="text" jsf:id="id" jsf:value="#{bean.property}" /> Wait the Java EE 7 if you can 42
  • 43.
    How's Back Endin EE 6? Business Logic (no presentations) Data Access Call JPA DBs Call EJB Messaging Call JMS MQ Connection RMI-IIOP Call JAX Automatic Transaction JavaMail Other Servers Call MTA EMail JTA Call 43
  • 44.
    Agenda 1. Java EE6 Specifications 2. Financial Requirements & Java EE Specifications 3. How to Apply Java EE 6 to Real Financial Systems Appendix: Java EE 6 Unveiled Conclusion 44
  • 45.
    Conclusion  Java EE6 is suitable for huge financial systems.  We made new financial architecture with many measurements  Wait for the EE 7 servers if you can Go Ahead, Ride the Wave! Make our enterprise future with Java EE! 45
  • 46.

Editor's Notes

  • #2 Hello, let&apos;s get started my presentation. &quot;Financial web system with Java EE 6&quot;.
  • #3 My biography. I&apos;m a financial system vice group manager of Rakuten.And a professional of enterprise financial system management, planning and development.
  • #4 This is agenda. First, I&apos;ll talk about the Java EE 6 specs, second, financial requirements and Java EE specs, and last, how to apply EE 6 to real financial systems.
  • #5 Next.
  • #6 What is Java EE. The answer is &quot;standard spec for applications servers&quot;, but unfortunately, Microsoft excluded. They worked together for EE specs, but unfortunately, parted in anger at the end of 20th century.
  • #7 What is &quot;Enterprise&quot;?At first, enterprise requires transactional system, and it represented by EJB with JTA container managed transaction.And each Java EE specs convers general enterprise requirements.
  • #8 This is history of Java EE. The first name is JPE, Java Professional Edition in 1998, and the revised first version is J2EE 1.2.Before the J2EE, NetBeans and WebLogic were already released, and after J2EE, many products and libraries were born.But after J2EE 1.3, Microsoft released .NET Framework, and confused the Java EE world with many blames about the configuration complexity.After Oracle acquired Sun, they cleared the complexity and united under a single specification again.
  • #9 This is the grouping of the Java EE products. 3 big servers are WebLogic by Oracle, WebSpehere by IBM, and JBoss by Red Hat, and additional Japanese group.And these have free open source version, GlassFish, Geronimo, and WildFly. Their competitors are Google App Engine, and Microsoft .NET Framework.
  • #10 And each app server target spec is as shown. Very complex.And the de-facto latest version is Java EE 6. Generally, if you want to plan JEE system, consider EE 6 firstly.Anyway, I want to reflect these version matrix to Wikipedia.
  • #11 Next, financial requirements and Java EE specs.
  • #12 Here at Rakuten, we have 6 big services of financial.Rakuten Card, Rakuten Bank, Rakuten Edy, Rakuten Security, Rakuten Life, Rakuten Insurance.
  • #13 Each service has many enterprise systems including Java EE.And each enterprise services has huge transactions.Especially almost web front-end is twenty-seven non-stop services.
  • #14 Let&apos;s dig a little deeper. The big 3 requirement of Rakuten financial systems.First, rapid changeable logics, Second, huge request expansion capacity, and last, transactional.Very hard requirements for systems.
  • #15 Historically, Japanese held these periodic re-construction in many areas, like a &quot;式年遷宮&quot; at Japanese shrines.We planned that our financial systems should be done in the same way for the next 3 big targets.
  • #16 We aim to realize the system which is sustainable, flexibility and transparent to catch some errors immediately.And these are not only the new architecture, but the requirements.
  • #17 Then let&apos;s see the typical usage of Java EE 6 specs.Almost all enterprise systems requires data source, and each source type requires suitable framework, JPA, JMS, RMI-IIOP and JAX, and Java Mail. And these data connectivity framework operated transactionaly by EJB.Finally front-end frameworks like JSF &amp; JavaFX call EJB. These are the basic Java EE structure.
  • #18 And the EJB interfacescan be considered as the &apos;services&apos;, or &apos;web API&apos;.It doesn&apos;t have any user interface, only has pure data interfaces.
  • #19 And some interface must be re-used by another interface, view, or functions. Called &apos;Shared functions&apos;.We called these design as &apos;API-nization&apos;.This is a required basic strategy for the enterprise systems to re-use business logics.
  • #20 Next shows enterprise transactional model.This is a very basic model for the transaction processes, begin (or start) &amp; commit.
  • #21 If some error occurred, all processing data must be roll backed completely and safely.It means one or zero, or all or nothing.These basic operations must be implemented to core financial systems completely, or some financial data, especially some money data, must be broken.
  • #22 Next, consider the real financial systems. It has many data sources, including some databases, message queue servers, and other transactional systems.When a transactional service which is calling some transactional services called, the local transactions must be gathered.It is called global transaction.
  • #23 Of course this complex model also has transactional abilities.If some database or MQ or services fails with some error, all data source must be roll backed.This is the huge financial requirements.
  • #24 And the Java EE supports this big structures.Each data source calling supported by JPA, JMS and RMI-IIOP, and operated by EJB and JTA.As you might know, Java EE core specification is still EJB, not Servlet or JSPs.
  • #25 Next, the last part, how to apply Java EE 6 to real financial systems.
  • #26 I planned the Java EE to real financial systems, with these 5 big issues.1st, policies, 2nd, education, 3rd, architecture, 4th, environment, and 5th, test.
  • #27 1st, policies. In the case of Rakuten, we have a policy, &quot;internal development first&quot;. Of course, financial systems also. No basic policies to throw external vendors.We must clear this core policies, and consider the next solutions to run.
  • #28 2nd, educational issues. Read, read, and read.There&apos;s many good Java EE books in book stores, but English book only, not Japanese.Fortunately, we already changed our standard language to English, and many programmer can read them.
  • #29 And there are many useful articles in world wide web.Thanks to the NetBeans team, nice tutorial are still in the web site.Refer to this site if you want to start Java EE development.
  • #30 3rd, I designed to apply Java EE 6 specs to the new architecture.Basic structure is obeyed to standard architecture, and applied front-end to JSF.And due to the no rich client requirement, I skipped JavaFX spec.
  • #31 We had some older systems to integrate to the new architecture.In the PHP case, we designed each from PHP business logics to the EJB API codes. Full rewriting, 100% API-nized for re-use &amp; collaborating services in the future.
  • #32 We also re-designed the application module blocks. Center API-nized logics, with many front-ends. All business logic designed as API, with SOAP, REST, and IIOP protocol access enabled for future service-oriented architectures to simplify.
  • #33 For the ease of development, we adopt the new IDE, NetBeans 7 with Apache maven automatic building systems. And we build full local programming environment to easy coding &amp; run for rapid programming.
  • #34 We made the easy startup environment to reduce startup costs.If some programmer attends the project, 2. just download from git server, 3. install tools, and 4. refer to JIRA for his or her for today&apos;s task management.
  • #35 And to educate the accurate programming manners,we introduced Jenkins auto-building server with static security analyzers, Sonar &amp; VeraCode. And we achieved zero violations before the new system release.
  • #36 Ok, we have some additional time to talk to the real Java EE 6 world. Unveiled.
  • #37 Is the Java EE 6 useful? for real project?My answer is for the backend, it is so-so, but for the web front-end, it is difficult. I want to say &quot;wait the Java EE 7&quot;.
  • #38 The reasons. 2 big problems found in our real projects.First, JSF backing bean conflict CDI managed bean specifications.Second, JSF HTML-styled tags were changed in JSF 2.2.
  • #39 1st issue, JSF backing bean defectively. When some facelet or managed bean set to the session scoped bean, the filter cannot access to the session scoped bean directly.
  • #40 Some blogs and web sites shows these codes to access backing bean from non-JSF objects, but not worked properly in JSF 2.So we must override phase listeners for filtering, but very harmful and uncertain codes required.
  • #41 Of course you can switch the backing bean from JSF managed bean to CDI bean.But unfortunately, Java EE 6 CDI didn&apos;t have @ViewScoped annotations, so we cannot use one-by-one style with facelets.I cannot understand this conflicted situation in EE 6.
  • #42 In EE 7, these conflicts are already cleared and well integrated with JSF and CDI.CDI added @ViewScoped annotation to access one-by-one style with facelet.This strategy must be considered in the first JSF, but achieved in Java EE 7. It&apos;s too late for us!So wait for the Java EE 7 if you can.
  • #43 Java EE 6 has some irregular tags named &apos;jsfc&apos;.Java EE 7 JSF 2.2 changed these silly tags to XML schema compliant style. It&apos;s good for applying standards, but there&apos;s many cost required for updating from JSF 2.1.So, you should start from Java EE 7 if you can.
  • #44 In the contrary, back-end side of java EE 6 seems almost been completed as its requirement for enterprise systems. EJB, JTA, JPA, JMS are already established the basic style, and just a small improvements in EE 7. Please start right away from EE 6 for background!
  • #45 Last, here&apos;s my conclusion.
  • #46 Java EE 6 is suitable for huge financial systems.And we made new financial architecture with many education and measurements.Make our enterprise future with Java EE.
  • #47 That&apos;s all. Thanks for listening, have a good day.