SlideShare a Scribd company logo
TERASOLUNA Framework
on the Spring IO Platform
Toshiaki Maki
About me
• Toshiaki Maki
–Leader of TERASOLUNA Framework
–Spring enthusiast for 6 years
–Author of a book about Spring Boot
Copyright © 2015 NTT DATA Corporation
2015-04-29
Toshiaki Maki @ Spring I/O 2015
TERASOLUNA Framework
on the Spring IO Platform
Copyright © 2015 NTT DATA Corporation 4
About me
Toshiaki Maki
• Leader of TERASOLUNA Framework
• Spring enthusiast for 6 years
• Author of a book about Spring Boot
Copyright © 2015 NTT DATA Corporation 5
About NTTDATA
• NTT DATA Corporation is the 6th
largest global IT services company
• Headquartered in Tokyo
• Sales above ¥1.5 trillion
• 75,000 professionals in 40 countries.
Copyright © 2015 NTT DATA Corporation 6
Our Business Domains
Public Sector Education Transportation and
Logistics
Healthcare and
Life Sciences
Energy and Utilities
Wholesale and
Distribution
Banking and
Financial Services
Natural Resources Retail Insurance
Manufacturing Service Providers Telecommunication Automotive Fundamental
Technologies
Media and
Entertainment
Electronics and
High Tech
Consumer Products
http://www.nttdata.com/global/en/investor/library/annual-reports/pdf/2015/fy2014_ar.pdf
Copyright © 2015 NTT DATA Corporation 7
Agenda
• What is TERASOLUNA Framework
• How we use Spring IO Platform
• How TERASOLUNA solved traditional problems
• How we solved maintenance problems
• Where TERASOLUNA is actually used
• Contributions to Spring
• Q&A
Copyright © 2015 NTT DATA Corporation 8
What is
TERASOLUNA Framework
9Copyright © 2015 NTT DATA Corporation
What is TERASOLUNA?
Process
Environment
Support
NTT DATA standard
process of development
and project management
Software Framework
Automation Tools
Standard Process
Support Service
Development Environment
The integrated solution of best practices in NTT Data Japan for
developing open systems
 Standard technologies, Methodologies,
and Technical training /support.
Tech Support
Training Service
10Copyright © 2015 NTT DATA Corporation
What is TERASOLUNA?
Process
Environment
Support
NTT DATA standard
process of development
and project management
Software Framework
Automation Tools
Standard Process
Support Service
Development Environment
The integrated solution of best practices in NTT Data Japan for
developing open systems
 Standard technologies, Methodologies,
and Technical training /support.
Tech Support
Training Service
Today’s Topic
11Copyright © 2015 NTT DATA Corporation
Customers
System Integration Business in Japan
Project Project Project … ProjectProjectProject
+100 PRJ
Every year
12Copyright © 2015 NTT DATA Corporation
Customers
System Integration Business in Japan
Project Project Project … ProjectProjectProject
+100 PRJ
Every year
TERASOLUNA team has been
providing
dedicated supports &
consistent stable solutions
13Copyright © 2015 NTT DATA Corporation
What “was” TERASOLUNA FW?
Spring
Unique Glue Code
Enterprise Application
Application Server
http://www.terasoluna.jp/
Spring
1 (2004-)
2 (2007-)
3 (2012-)
Struts1
Developers can
just focus on
business logic
TERASOLUNA Framework started from 2004
and has been used in 1000+ projects.
14Copyright © 2015 NTT DATA Corporation
What “was” TERASOLUNA FW?
Supported by Automation tools
Generate source
code/configurations
related to screen
Generate source
code/configurations
related to business
logic
15Copyright © 2015 NTT DATA Corporation
Customers
System Integration Business in Japan
Project Project Project … ProjectProjectProject
In general, large projects have
1-2 years developing phase and
6-8 years maintenance phase
16Copyright © 2015 NTT DATA Corporation
Customers
System Integration Business in Japan
Project Project Project … ProjectProjectProject
In general, large projects have
1-2 years developing phase and
6-8 years maintenance phase
We have to provide
long term support.
17Copyright © 2015 NTT DATA Corporation
EOL & Security Vulnerability
http://www.ipa.go.jp/security/ciadr/vul/20140417-struts.html
2014-04
ClassLoader Manipulation Vulnerability
CVE-2014-0114
Struts1 had been already EOL
since 2013
2015-03
Multi Page Validator Vulnerability
CVE-2015-0899
http://sourceforge.jp/projects/terasoluna/wiki/StrutsPatch1-JP
http://sourceforge.jp/projects/terasoluna/wiki/StrutsPatch2-JP
We patched !!
We reported.
18Copyright © 2015 NTT DATA Corporation
EOL & Security Vulnerability
http://www.ipa.go.jp/security/ciadr/vul/20140417-struts.html
2014-04
ClassLoader Manipulation Vulnerability
CVE-2014-0114
2015-03
Multi Page Validator Vulnerability
CVE-2015-0899
http://sourceforge.jp/projects/terasoluna/wiki/StrutsPatch1-JP
http://sourceforge.jp/projects/terasoluna/wiki/StrutsPatch2-JP
We patched !!
We reported.
Struts1 had been already EOL
since 2013
Some Japanese customers
show concern of continuing
Struts1.
19Copyright © 2015 NTT DATA Corporation
History of TERASOLUNA FW
TERASOLUNA Server
FW for Java(Web)1.X
TERASOLUNA Server
FW for Java 5.X
2013
Homegrown FW based on Struts
Homegrown FW based on Struts+Spring
Spring MVC 3.2
For Japan(Web)
For Global
For Japan (XML) Homegrown FW based on old Spring MVC
2004 20072006
For Japan
2015
Based on Global FW
TERASOLUNA Server
FW for Java(Rich)1.X
TERASOLUNA
Global FW 1.X
TERASOLUNA Server
FW for Java(Web)2.X
TERASOLUNA Server
FW for Java(Rich)2.X
Spring MVC 4.1+
We have started to
use Spring MVC
for global projects
20Copyright © 2015 NTT DATA Corporation
What “is” TERASOLUNA FW?
TERASOLUNA FW is like a “Packaged Spring”
for Enterprise Application.
No longer an isolated framework.
Spring
Enterprise Application
Application Server
Spring MVC
No Glue!
Just Spring!
Spring Data JPA
Spring
Security
http://terasoluna.org
Copyright © 2015 NTT DATA Corporation 21
2000~ 2015
Creating a framework
itself is valuable
Frameworks are
commoditized
Too many
Java Frameworks
Spring or Java EE
TrendsOurApproach
Developed as a
unique Framework
OSS(Spring) as it is
Previous TERASOLUNA
(TERASOLUNA Server FW for Java 2)
New TERASOLUNA
(TERASOLUNA Server FW for Java 5)
Enterprise Support
Enterprise Support
& Guideline
Concept of TERASOLUNA Framework
Copyright © 2015 NTT DATA Corporation 22
Spring continues new feature enhancement and expected the rapid
new technology in future.
Since Java EE takes lot of time from specification confirmation to
implementation of the AP server vendor.
Since we are using Spring technology from past 10 years,
our company have good knowledge of development,
implementation and development resources.
Since there are considerable implementation differences in
Java EE compliant AP server, it is difficult to provide a
generic trouble shooting and support for multiple AP server
Many application projects and developers,
security aspects have been actively implemented.
The adoption of security measures such as OOS Spring
Security can enhance the security aspects.
 No.1 share in global market, exists good number of
engineers and information, easy to gather information and
resources
Develop
ment
resource
s
Support
to
change
Strong
Security
In-house
Know-
how
Java EE
Adoption
barriers
Spring
Why Spring?
23Copyright © 2015 NTT DATA Corporation
Components in TERASOLUNA
•OSS like Spring, JPA, MyBatis,
Apache commons…
Software Framework
•A little utilities for enterprise
application
Common Library
•Best Practice Document for
enterprise application development
Guideline
•Materials to learn basic knowledge for
Application development
Tutorials
•Sample application based on the
guideline
Sample Application
•Quick start project based on the
guideline
Blank Project
DevelopedbyNTTDATA
24Copyright © 2015 NTT DATA Corporation
Components in TERASOLUNA
•OSS like Spring, JPA, MyBatis,
Apache commons…
Software Framework
•A little utilities for enterprise
application
Common Library
•Best Practice Document for
enterprise application development
Guideline
•Materials to learn basic knowledge for
Application development
Tutorials
•Sample application based on the
guideline
Sample Application
•Quick start project based on the
guideline
Blank Project
DevelopedbyNTTDATA
Published on GithHub
http://terasoluna.org
25Copyright © 2015 NTT DATA Corporation
Current Software Stack
26Copyright © 2015 NTT DATA Corporation
Current Software Stack
27Copyright © 2015 NTT DATA Corporation
Common Library
Small library of useful and obtrusive common functionalities
https://github.com/terasolunaorg/terasoluna-gfw
http://terasolunaorg.github.io/guideline/5.0.x/en/Overview/FrameworkStack.html#building-blocks-of-common-library
Exception Handling Provide general exception
classes/logger/interceptor and exception handler of
Spring MVC.
System Date Factory Provide classes for retrieving the system date time
for test.
Double Submit
Protection
Provide mechanism (classes) for protecting Web
Application from double submitting of request.
Tag Libs Provide JSP tags for pagination link, showing
message panels.
… …
28Copyright © 2015 NTT DATA Corporation
General Problems in Java development
Complex Spring Combinations
& Configurations
Poor Exception
Handling/Logging
Messy Project Structure
Inaccuracy of
how to implement
29Copyright © 2015 NTT DATA Corporation
General Problems in Java development
Complex Spring Combinations
& Configurations
Poor Exception
Handling/Logging
Messy Project Structure
Inaccuracy of
how to implement
Software Framework
Common Library
Guideline
Tutorials
Sample Application
Blank Project
30Copyright © 2015 NTT DATA Corporation
General Problems in Java development
Complex Spring Combinations
& Configurations
Poor Exception
Handling/Logging
Messy Project Structure
Inaccuracy of
how to implement
Software Framework
Common Library
Guideline
Tutorials
Sample Application
Blank Project
Our outputs resolve
general problems
(explained later)
31Copyright © 2015 NTT DATA Corporation
History of TERASOLUNA
TERASOLUNA Server
FW for Java(Web)1.X
TERASOLUNA Server
FW for Java 5.X
2013
Homegrown FW based on Struts
Homegrown FW based on Struts+Spring
Spring MVC 3.2
For Japan(Web)
For Global
For Japan (XML) Homegrown FW based on old Spring MVC
2004 20072006
For Japan
2015
TERASOLUNA Server
FW for Java(Rich)1.X
TERASOLUNA
Global FW 1.X
TERASOLUNA Server
FW for Java(Web)2.X
TERASOLUNA Server
FW for Java(Rich)2.X
Spring MVC 4.1+
32Copyright © 2015 NTT DATA Corporation
History of TERASOLUNA
TERASOLUNA Server
FW for Java(Web)1.X
TERASOLUNA Server
FW for Java 5.X
2013
Homegrown FW based on Struts
Homegrown FW based on Struts+Spring
Spring MVC 3.2
For Japan(Web)
For Global
For Japan (XML) Homegrown FW based on old Spring MVC
2004 20072006
For Japan
2015
TERASOLUNA Server
FW for Java(Rich)1.X
TERASOLUNA
Global FW 1.X
TERASOLUNA Server
FW for Java(Web)2.X
TERASOLUNA Server
FW for Java(Rich)2.X
Spring MVC 4.1+
33Copyright © 2015 NTT DATA Corporation
History of TERASOLUNA
TERASOLUNA Server
FW for Java(Web)1.X
TERASOLUNA Server
FW for Java 5.X
2013
Homegrown FW based on Struts
Homegrown FW based on Struts+Spring
Spring MVC 3.2
For Japan(Web)
For Global
For Japan (XML) Homegrown FW based on old Spring MVC
2004 20072006
For Japan
2015
TERASOLUNA Server
FW for Java(Rich)1.X
TERASOLUNA
Global FW 1.X
TERASOLUNA Server
FW for Java(Web)2.X
TERASOLUNA Server
FW for Java(Rich)2.X
Spring MVC 4.1+
Already released
since 2013
34Copyright © 2015 NTT DATA Corporation
History of TERASOLUNA
TERASOLUNA Server
FW for Java(Web)1.X
TERASOLUNA Server
FW for Java 5.X
2013
Homegrown FW based on Struts
Homegrown FW based on Struts+Spring
Spring MVC 3.2
For Japan(Web)
For Global
For Japan (XML) Homegrown FW based on old Spring MVC
2004 20072006
For Japan
2015
TERASOLUNA Server
FW for Java(Rich)1.X
TERASOLUNA
Global FW 1.X
TERASOLUNA Server
FW for Java(Web)2.X
TERASOLUNA Server
FW for Java(Rich)2.X
Spring MVC 4.1+
What’s the
difference??
Already released
since 2013
35Copyright © 2015 NTT DATA Corporation
Current Software Stack
36Copyright © 2015 NTT DATA Corporation
Current Software StackVersion management
between Spring sub-
projects is complicated
37Copyright © 2015 NTT DATA Corporation
Current Software StackVersion management
between Spring sub-
projects is complicated
Version management between
Spring and 3rd parties
is also complicated
38Copyright © 2015 NTT DATA Corporation
Current Software StackVersion management
between Spring sub-
projects is complicated
Version management between
Spring and 3rd parties
is complicated
Updating cost
increases!
39Copyright © 2015 NTT DATA Corporation
Current Software Stack
40Copyright © 2015 NTT DATA Corporation
Current Software Stack
We meet
Spring IO Platform
Copyright © 2015 NTT DATA Corporation 41
How we use
Spring IO Platform
42Copyright © 2015 NTT DATA Corporation
What is Spring IO Platform
https://spring.io/platform
43Copyright © 2015 NTT DATA Corporation
Managed Dependencies
http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions
https://pivotal.io/agile/press-release/pivotal-releases-spring-io-platform
44Copyright © 2015 NTT DATA Corporation
Managed Dependencies
http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions
https://pivotal.io/agile/press-release/pivotal-releases-spring-io-platform
“With a set of components all tested to work
together, it saves weeks of tedious developer
efforts to build and test a stack of compatible
Spring and third-party technologies, thereby
helping enterprises bring new applications to
market more rapidly.”
45Copyright © 2015 NTT DATA Corporation
Merits of Spring IO Platform
Spring IO Platform provides a
set of dependency/version
managed by Spring Team
Enjoy
• Reducing maintenance cost
• Sharing use cases all over the
world
46Copyright © 2015 NTT DATA Corporation
Spring IO Platform in the TERASOLUNA
Our parent chooses
some dependencies in
Spring IO Platform
io.spring.platform
platform-bom
org.terasoluna.gfw
terasoluna-gfw-parent
org.springframework.boot
spring-boot-starter-parent
org.springframework.boot
spring-boot-dependencies
Your project
parent
parent
Import the dependency management
parent
47Copyright © 2015 NTT DATA Corporation
How to use Spring IO Platform
https://github.com/terasolunaorg/terasoluna-gfw/blob/master/terasoluna-gfw-parent/pom.xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>${io.spring.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- … -->
</dependencies>
</dependencyManagement>
terasoluna-gfw-parent/pom.xml
Our parent pom
48Copyright © 2015 NTT DATA Corporation
In common libraryhttps://github.com/terasolunaorg/terasoluna-gfw/blob/master/terasoluna-gfw-common/pom.xml
<parent>
<artifactId>terasoluna-gfw-parent</artifactId>
<groupId>org.terasoluna.gfw</groupId>
<version>5.0.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<!-- ... -->
</dependencies>
terasoluna-gfw-common/pom.xml
Choose dependencies
managed by Spring IO Platform
Choose dependencies
managed by Spring IO Platform
Choose dependencies
managed by Spring IO
Platform
49Copyright © 2015 NTT DATA Corporation
Your Project
<parent>
<artifactId>terasoluna-gfw-parent</artifactId>
<groupId>org.terasoluna.gfw</groupId>
<version>5.0.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.terasoluna.gfw</groupId>
<artifactId>terasoluna-gfw-web</artifactId>
</dependency>
<!-- ... -->
</dependencies>
Use common library
Copyright © 2015 NTT DATA Corporation 50
How TERASOLUNA solved
traditional problems
51Copyright © 2015 NTT DATA Corporation
Traditional Problems
Complex Spring Combinations
& Configurations
Poor Exception
Handling/Logging
Messy Project Structure
Inaccuracy of
how to implement
And so on …
52Copyright © 2015 NTT DATA Corporation
Complex Spring Combinations & Configuration
Complex Spring Combinations
& Configurations
Have to consider
which libraries to use
Have to consider
initial configurations/
best practiceHave to consider
which version to use
✓
Resolved by
Spring IO Platform
53Copyright © 2015 NTT DATA Corporation
Complex Spring Combinations & Configuration
Complex Spring Combinations
& Configurations
Have to consider
which libraries to use
Have to consider
initial configurations/
best practiceHave to consider
which version to use
✓
web.xml?
Log
configuration?
How
logger?
Which
validation?
How divide the
configuration?
Environment
specific?
Which Spring
project?
54Copyright © 2015 NTT DATA Corporation
Complex Spring Combinations & Configuration
Complex Spring Combinations
& Configurations
Have to consider
which libraries to use
Have to consider
initial configurations/
best practiceHave to consider
which version to use
✓
web.xml?
Log
configuration?
How
logger?
Which
validation?
How divide the
configuration?
Environment
specific?
Which Spring
project?
It takes a lot of time
to start up :-(
55Copyright © 2015 NTT DATA Corporation
Messy Project Structure
Messy Project Structure
• Inconsistent
• Considered every time at each project
• System testing is not considered
• Illegal object access beyond the layer
(ex. HttpSession in Service class!)
56Copyright © 2015 NTT DATA Corporation
Poor Exception Handling/Logging
try {
// …
} catch (Exception e) {// ← Catch widely everywhere
e.printStackTrace();
}
try {
// …
} catch (Exception e) {
throw new RuntimeException(" Nice catch ! ;)", e);
}
Poor Exception
Handling/Logging
57Copyright © 2015 NTT DATA Corporation
TERASOLUNA Provides…
• Recommended library & configuration
• Proper project structure based on
layered architecture
• Default Exception Handling/Error・
Trace Logging
All features are pre-configured
in a maven archetype project
58Copyright © 2015 NTT DATA Corporation
Maven archetype
Single Project
Archetype
Simple one
For a trial use
https://github.com/terasolunaorg/terasoluna-gfw-web-blank
Multi Project
Archetype
Production ready
Multi-layered
Strongly recommended
https://github.com/terasolunaorg/terasoluna-gfw-web-multi-blank
Our archetype provides
pre-configured production-ready
blank project
59Copyright © 2015 NTT DATA Corporation
Generate a blank project
mvn archetype:generate -B¥
-DarchetypeCatalog=http://repo.terasoluna.org/nexus/content/repositories/terasoluna-gfw-releases¥
-DarchetypeGroupId=org.terasoluna.gfw.blank¥
-DarchetypeArtifactId=terasoluna-gfw-multi-web-blank-mybatis3-archetype¥
-DarchetypeVersion=5.0.0.RELEASE¥
-DgroupId=com.example¥
-DartifactId=springio-demo
2 persistence of archetype(archetypeArtifactId) are prepared.
1terasoluna-gfw-multi-web-blank-mybatis3-archetype
2 terasoluna-gfw-multi-web-blank-jpa-archetype
60Copyright © 2015 NTT DATA Corporation
Generate a blank project
Multi Module Project
Project for
domain layer
Project with
environment dependencies
Project for
application layer
61Copyright © 2015 NTT DATA Corporation
Generate a blank project
Preconfigured
libraries
62Copyright © 2015 NTT DATA Corporation
Layered Architecture
Application Layer
Controller Form
View
Domain Layer
Service
Domain
Object
Repository
Infrastructure Layer
O/R
Mapper
Repository
Impl
Integration System
Connector
depends depends
Helper
63Copyright © 2015 NTT DATA Corporation
Layered Architecture
Application Layer
Controller Form
View
Domain Layer
Service
Domain
Object
Repository
Infrastructure Layer
O/R
Mapper
Repository
Impl
Integration System
Connector
depends depends
Helper
Typical Layered Architecture
similar to DDD
64Copyright © 2015 NTT DATA Corporation
Generate a blank project
Domain Layer
Infrastructure Layer
65Copyright © 2015 NTT DATA Corporation
Generate a blank project
Application Layer
66Copyright © 2015 NTT DATA Corporation
Generate a blank project
Configurations depends on
the environment
like logging, datasource…
67Copyright © 2015 NTT DATA Corporation
Generate a blank project
Domain Layer
Application Layer
68Copyright © 2015 NTT DATA Corporation
Generate a blank project
Domain Layer
Application Layer Can’t access
Servlet APIs
and so on
69Copyright © 2015 NTT DATA Corporation
Generate a blank project
Domain Layer
Application Layer
Avoid violations of the layering rule
70Copyright © 2015 NTT DATA Corporation
Run the Application
71Copyright © 2015 NTT DATA Corporation
Sample project
Tour reservation application
•MyBatis3 version
• https://github.com/terasolunaorg/terasoluna-tourreservation-mybatis3
•JPA version
• https://github.com/terasolunaorg/terasoluna-tourreservation
These samples follow the structure
72Copyright © 2015 NTT DATA Corporation
Traditional Problems
Complex Spring Combinations
& Configurations
Messy Project Structure
Poor Exception
Handling/Logging
Inaccuracy of
how to implement
✓
✓
73Copyright © 2015 NTT DATA Corporation
Traditional Problems
Complex Spring Combinations
& Configurations
Messy Project Structure
Poor Exception
Handling/Logging
Inaccuracy of
how to implement
✓
✓
74Copyright © 2015 NTT DATA Corporation
Common Library (recap)
Small library of useful and obtrusive common functionalities
https://github.com/terasolunaorg/terasoluna-gfw
http://terasolunaorg.github.io/guideline/5.0.x/en/Overview/FrameworkStack.html#building-blocks-of-common-library
Exception Handling Provide general exception
classes/logger/interceptor and exception handler of
Spring MVC.
System Date Factory Provide classes for retrieving the system date time
for test.
Double Submit
Protection
Provide mechanism (classes) for protecting Web
Application from double submitting of request.
Tag Libs Provide JSP tags for pagination link, showing
message panels.
… …
75Copyright © 2015 NTT DATA Corporation
Prepared Exception
@Service @Transactional
public class OrderServiceImpl implements OrderSerivce {
public OrderResult order(Order o) {
// …
if (orderQuantity > stockQuantity) {
ResultMessages msg = ResultMessages.error()
.add("ORDER.STOCK.OVER", orderQuantity);
throw new BusinessException(msg);
}
// …
}
}
Message Key
76Copyright © 2015 NTT DATA Corporation
Fine Exception Handling
• when the Controller class handles the
exception at request level
• when the Controller class handles the
exception at use case level
• when the framework handles the exception
at servlet level
• when the servlet container handles the
exception at web application level
4 basic flows of exception handling are considered
http://terasolunaorg.github.io/guideline/5.0.x/en/ArchitectureInDetail/ExceptionHandling.html
77Copyright © 2015 NTT DATA Corporation
1. Controller class handles the exception at request level
Xxx
screen
<Spring MVC>
Dispatcher
Servlet
Controller Service
1 2 3
4
7
catch
BusinessException
6’
8
9
<Spring MVC>
Model
xxx.jsp
<jsp tag library>
Messages
PanelTag
Xxx
screen
Result
Message.
Result
Message
6
Monitoring
log
<AOP>
ResultMessages
LoggingInterceptor
5
applicationContext.xml
Application
log
defile bean & AOPException
Loggerwarn
4’5’
10 Business
Exception
Result
Message
78Copyright © 2015 NTT DATA Corporation
Xxx
screen
<Spring MVC>
Dispatcher
Servlet
Controller Service
1 2 3
4
7
catch
BusinessException
6’
8
9
<Spring MVC>
Model
xxx.jsp
<jsp tag library>
Messages
PanelTag
Xxx
screen
Result
Message.
Result
Message
6
Monitoring
log
<AOP>
ResultMessages
LoggingInterceptor
5
applicationContext.xml
Application
log
defile bean & AOPException
Loggerwarn
4’5’
10 Business
Exception
Result
Message
1. Controller class handles the exception at request level
date:2015-04-23 13:30:05 thread:tomcat-http--18 X-
Track:b613ef3d281d4e018eadeb62bae308d5 level:WARN
logger:o.t.gfw.common.exception.ExceptionLogger message:[e.xx.fw.8001]
ResultMessages [type=error, list=[ResultMessage
[code=ORDER.STOCK.OVER, args=[100], text=null]]]
org.terasoluna.gfw.common.exception.BusinessException: ResultMessages [type=error,
list=[ResultMessage [code=ORDER.STOCK.OVER, args=[100], text=null]]]
at com.example.domain.service.demo.DemoService.doSomething(DemoService.java:13)
~[springio-demo-domain-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
at
com.example.domain.service.demo.DemoService$$FastClassBySpringCGLIB$$c614e7b9.inv
oke(<generated>) ~[spring-core-4.1.4.RELEASE.jar:1.0-SNAPSHOT]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
~[spring-core-4.1.4.RELEASE.jar:4.1.4.RELEASE]
…
79Copyright © 2015 NTT DATA Corporation
1. Controller class handles the exception at request level
Xxx
screen
<Spring MVC>
Dispatcher
Servlet
Controller Service
1 2 3
4
7
catch
BusinessException
6’
8
9
<Spring MVC>
Model
xxx.jsp
<jsp tag library>
Messages
PanelTag
Xxx
screen
Result
Message.
Result
Message
6
Monitoring
log
<AOP>
ResultMessages
LoggingInterceptor
5
applicationContext.xml
Application
log
defile bean & AOPException
Loggerwarn
4’5’
10 Business
Exception
Result
Message
ORDER.STOCK.OVER=The requested
order is out of stock!
(quantity={0})
80Copyright © 2015 NTT DATA Corporation
2. Controller class handles the exception at use case level
Xxx
screen
<Spring MVC>
Dispatcher
Servlet
Controller Service
1 2 3
6
7
11
12
<Spring MVC>
Model
4
yyy.jsp
<jsp tag library>
Messages
PanelTag
Result
Message
Yyy
screen
Result
Message.
5
<Spring MVC>
ExceptionHandler
ExceptionResolver
<AOP>
HandlerExceptionResolver
LoggingInterceptor
Monitoring
log
Application
log
9
8
10
spring-
mvc.xmldefile bean & AOP
3’3’
13
Define
@ExceptionHandler(
XyzException.class)
Xyz
Exception
error
warn
Info
Exception
Logger
81Copyright © 2015 NTT DATA Corporation
3. Framework handles the exception at servlet level
Xxx
screen
<Spring MVC>
Dispatcher
Servlet
Controller
<Spring MVC Extention>
SystemException
ResolverSystem Error
screen
System
Exception.jsp
Service
1 2 3
10
5
<Servlet API>
HttpServlet
Request
exception code
(error code)
exception code
+
Message.
4
6
6’
9
11
message is get from
message resources
Monitoring
log
8
spring-
mvc.xml
Application
log
define bean &
exception
handling rule
<AOP>
HandlerExceptionResolver
LoggingInterceptor
7
spring-
mvc.xml
defile bean & AOP
4’4’
12
error
warn
Info
Exception
Logger
System
Exception
82Copyright © 2015 NTT DATA Corporation
4. Servlet container handles the exception
at web application level
Xxx
screen
<Spring MVC>
Dispatcher
Servlet
Controller
System Error
screen
error.html
Service
1 2 3
7
Message.
<Application Server>
Servlet
Container
Server
log
6
XyzError is
wrapped in
ServletException.
4
web.xml
<error-page>
Monitoring
log
Application
log
5
5’
4’
define exception
handling rule.
Exception
Logger
<Servlet Filter>
Exception
LoggingFilter
web.xml
applicationContext.xml
defile bean
& filter
3’3’
8
Servlet
Exception
XyzError
XyzError
error
warn
Info
83Copyright © 2015 NTT DATA Corporation
All configurations are prepared
<!-- Exception Code Resolver. -->
<bean id="exceptionCodeResolver"
class="org.terasoluna.gfw.common.exception.SimpleMappingExceptionCodeResolver">
<!-- omitted... -->
</bean>
<!-- Exception Logger. -->
<bean id="exceptionLogger"
class="org.terasoluna.gfw.common.exception.ExceptionLogger">
<property name="exceptionCodeResolver" ref="exceptionCodeResolver" />
</bean>
<!-- Setting Exception Handling. -->
<!-- Exception Resolver. -->
<bean class="org.terasoluna.gfw.web.exception.SystemExceptionResolver">
<property name="exceptionCodeResolver" ref="exceptionCodeResolver" />
<!-- omitted... -->
</bean>
<!-- Setting AOP. -->
<bean id="handlerExceptionResolverLoggingInterceptor"
class="org.terasoluna.gfw.web.exception.HandlerExceptionResolverLoggingInterceptor">
<property name="exceptionLogger" ref="exceptionLogger" />
</bean>
<aop:config>
<aop:advisor advice-ref="handlerExceptionResolverLoggingInterceptor"
pointcut="execution(* org.springframework.web.servlet.HandlerExceptionResolver.resolveException(..))" />
</aop:config>
<!-- AOP. -->
<bean id="resultMessagesLoggingInterceptor"
class="org.terasoluna.gfw.common.exception.ResultMessagesLoggingInterceptor">
<property name="exceptionLogger" ref="exceptionLogger" />
</bean>
<aop:config>
<aop:advisor advice-ref="resultMessagesLoggingInterceptor"
pointcut="@within(org.springframework.stereotype.Service)" />
</aop:config>
applicationContext.xml
spring-mvc.xml
spring-demo-domain.xml
84Copyright © 2015 NTT DATA Corporation
Traditional Problems
Complex Spring Combinations
& Configurations
Messy Project Structure
Poor Exception
Handling/Logging
Inaccuracy of
how to implement
✓
✓
✓
85Copyright © 2015 NTT DATA Corporation
Traditional Problems
Complex Spring Combinations
& Configurations
Messy Project Structure
Poor Exception
Handling/Logging
Inaccuracy of
how to implement
✓
✓
✓
Not solved by
Maven Archetype
86Copyright © 2015 NTT DATA Corporation
Inaccuracy of how to implement
There are lot of sample codes
available on internet.
Not understood on which
should I trust :S
87Copyright © 2015 NTT DATA Corporation
Inaccuracy of how to implement
There are lot of sample codes
available on internet.
Not understood on which
should I trust :S
We need
production ready samples!
Copyright © 2015 NTT DATA Corporation 88
Guideline
• Detailed instructions for each feature
• Tutorials (learning content)
Described number
of diagrams for easy
understanding
• Sample code
• Best practices of verified secured development
Listed number of sample
code allow you to develop
your app
Explanation of sample
code also given
• Sample code
• Practical development know-how for the enterprise
・・・
How to extend the
features are also
described
Note, Tip, Warning, Hint related
number of practical development know-
how also described
Also described idea
how to implement
①Basic knowledge, study of AP
foundation
③Extension policy of the FW ④Design & Development of AP
②Feasibility study
 Guidelines leverage example in work of architect
Japanese/English
http://terasolunaorg.github.io/guideline
89Copyright © 2015 NTT DATA Corporation
Providing lot of samples
A variety of contents are covered !!
1700+ pages!
90Copyright © 2015 NTT DATA Corporation
Traditional Problems
Complex Spring Combinations
& Configurations
Messy Project Structure
Poor Exception
Handling/Logging
Inclarity of
how to implement
✓
✓
✓
✓
91Copyright © 2015 NTT DATA Corporation
Another possible solution…
You can guess, Spring Boot can
also resolve similar problems.
But we started from 2012...
92Copyright © 2015 NTT DATA Corporation
Comparison
Dependency
Management
Prepared
Configuration
Best Practices
Spring Boot Spring IO Platform
+ Starters
Auto Configure Auto Configure?
TERASOLUNA Spring IO Platform
+ common library
Maven Archetype Guideline
93Copyright © 2015 NTT DATA Corporation
Comparison
Dependency
Management
Prepared
Configuration
Best Practices
Spring Boot Spring IO Platform
+ Starters
Auto Configure Auto Configure?
TERASOLUNA Spring IO Platform
+ common library
Maven Archetype Guideline
Spring users should use
Spring Boot or TERASOLUNA 
Copyright © 2015 NTT DATA Corporation 94
How we solved
maintenance problems
95Copyright © 2015 NTT DATA Corporation
How do we assure the guideline?
A lot of samples
are explained
How about backward
compatibility??
96Copyright © 2015 NTT DATA Corporation
All contents are tested !!
Selenium test cases
for each sample code!!
700+ test cases.
97Copyright © 2015 NTT DATA Corporation
Continuous Testing
Everyday
700+ test cases
are running.
Test Application
& Test Cases
deploy
test
98Copyright © 2015 NTT DATA Corporation
Continuous Testing
Everyday
700+ test cases
are running.
Test Application
& Test Cases
deploy
test
Performance
Test is also
executed using
Apache JMeter
99Copyright © 2015 NTT DATA Corporation
Customers
System Integration Business in Japan (recap)
Project Project Project … ProjectProjectProject
100Copyright © 2015 NTT DATA Corporation
Customers
System Integration Business in Japan (recap)
Project Project Project … ProjectProjectProject
A number of environments
demand support!!!
101Copyright © 2015 NTT DATA Corporation
Customers
System Integration Business in Japan (recap)
Project Project Project … ProjectProjectProject
A number of environments
are demanded to support!!!
Oracle JDK
Apache
Tomcat
Oracle WebLogic
Server
Oracle
Database PostgreSQL
102Copyright © 2015 NTT DATA Corporation
Customers
System Integration Business in Japan (recap)
Project Project Project … ProjectProjectProject
A number of environments
are demanded to support!!!
OpenJDK
Oracle JDK
Apache
Tomcat
IBM WebSphere
Application Server
Fujitsu Interstage
Application Server
Oracle WebLogic
Server
JBoss Enterprise
Application Platform
NEC WebOTX
Application Server
Cosminexus: Hitachi
Application Server
Caucho Resin
Oracle
Database
IBM DB2
PostgreSQL
MySQL
IBM JDK
103Copyright © 2015 NTT DATA Corporation
Customers
System Integration Business in Japan (recap)
Project Project Project … ProjectProjectProject
A number of environments
are demanded to support!!!
OpenJDK
Oracle JDK
Apache
Tomcat
IBM WebSphere
Application Server
Fujitsu Interstage
Application Server
Oracle WebLogic
Server
JBoss Enterprise
Application Platform
NEC WebOTX
Application Server
Cosminexus: Hitachi
Application Server
Caucho Resin
Oracle
Database
IBM DB2
PostgreSQL
MySQL
IBM JDK
Too hard to test and
maintain multiple
environments
104Copyright © 2015 NTT DATA Corporation
Test environment by Vagrant
PostgreSQL
Oracle
DB2
Tomcat
+ Oracle JDK 7
Tomcat
+ Open JDK 7
WebLogic
+ Oracle JDK 7
JBoss EAP
+ Open JDK 7
Tomcat
+ Oracle JDK 8
WebLogic
+ Oracle JDK 8
Tomcat
+ Open JDK 8
WAS
+ IBM JDK 7
JBoss EAP
+ Open JDK 8
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
…
…
Git
All environments are
reproducible!
105Copyright © 2015 NTT DATA Corporation
Test environment by Vagrant
PostgreSQL
Oracle
DB2
Tomcat
+ Oracle JDK 7
Tomcat
+ Open JDK 7
WebLogic
+ Oracle JDK 7
JBoss EAP
+ Open JDK 7
Tomcat
+ Oracle JDK 8
WebLogic
+ Oracle JDK 8
Tomcat
+ Open JDK 8
WAS
+ IBM JDK 7
JBoss EAP
+ Open JDK 8
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
Vagrantfile
…
…
Git
Tested at the combination of
each environment before release
All environments are
reproducible!
Copyright © 2015 NTT DATA Corporation 106
Where TERASOLUNA is
actually used
Copyright © 2015 NTT DATA Corporation 107
Use cases
Domain Project
Financial Mission critical system of a bank
Financial Admission system for credit card member shops
Public Sector Mission critical system of a public sector
Entertainment User management system
Package Package of attendance management system
…
Current Framework has been already used by 15+ projects
Example
Copyright © 2015 NTT DATA Corporation 108
Contributions to Spring
109Copyright © 2015 NTT DATA Corporation
Our contributions to Spring
Spring Framework (16) Spring Security (10) Spring Data (4)
SPR-11074 (Resolved)
SPR-11669
SPR-11670 (Resolved)
SPR-11810 (Resolved)
SPR-11821 (Resolved)
SPR-11826
SPR-11970 (Resolved)
SPR-12229 (Resolved)
SPR-12265 (Resolved)
SPR-12354 (Resolved)
SPR-12442 (Resolved)
SPR-12509 (Resolved)
SPR-12510 (Resolved)
SPR-12743 (Resolved)
SPR-12792 (Resolved)
SPR-12819 (Resolved)
SEC-2403
SEC-2826 (Resolved)
SEC-2834 (Resolved)
SEC-2835 (Resolved)
SEC-2836
SEC-2840 (Resolved)
SEC-2880 (Resolved)
SEC-2903
SEC-2905
SEC-2910
DATACMNS-377 (Resolved)
DATACMSN-379 (Resolved)
DATACMNS-408 (Resolved)
DATAJPA-473 (Resolved)
Vulnerability Reports
Bug Reports @ JIRA (~ 2015-04-22)
CVE-2014-3625 Directory Traversal in Spring Framework
110Copyright © 2015 NTT DATA Corporation
Our contributions to Spring
Spring Framework (16) Spring Security (10) Spring Data (4)
SPR-11074 (Resolved)
SPR-11669
SPR-11670 (Resolved)
SPR-11810 (Resolved)
SPR-11821 (Resolved)
SPR-11826
SPR-11970 (Resolved)
SPR-12229 (Resolved)
SPR-12265 (Resolved)
SPR-12354 (Resolved)
SPR-12442 (Resolved)
SPR-12509 (Resolved)
SPR-12510 (Resolved)
SPR-12743 (Resolved)
SPR-12792 (Resolved)
SPR-12819 (Resolved)
SEC-2403
SEC-2826 (Resolved)
SEC-2834 (Resolved)
SEC-2835 (Resolved)
SEC-2836
SEC-2840 (Resolved)
SEC-2880 (Resolved)
SEC-2903
SEC-2905
SEC-2910
DATACMNS-377 (Resolved)
DATACMSN-379 (Resolved)
DATACMNS-408 (Resolved)
DATAJPA-473 (Resolved)
Vulnerability Reports
Bug Reports @ JIRA (~ 2015-04-22)
CVE-2014-3625 Directory Traversal in Spring Framework
We are contributing
Copyright © 2015 NTT DATA Corporation 111
Wrap up
112Copyright © 2015 NTT DATA Corporation
Wrap up
• We have been using Spring Framework.
• TERASOLUNA Framework is like a “Packaged
Spring”.
 Software Stack
 Blank Project(Maven Archetype)
 Guideline
• Spring IO Platform supports TERASOLUNA.
• TERASOLUNA solves general development
problems.
http://terasoluna.org
Copyright © 2011 NTT DATA Corporation
Copyright © 2015 NTT DATA Corporation
TERASOLUNA and "TERASOLuNA" logo are trademarks or registered trademarks of NTT DATA Corporation in Japan and the
People's Republic of China.
Ad

More Related Content

What's hot (20)

Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with Terraform
DevOps.com
 
db tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New Featuresdb tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New Features
Noriyoshi Shinoda
 
Spark
SparkSpark
Spark
Amir Payberah
 
Core Concept: Software Defined Everything
Core Concept: Software Defined EverythingCore Concept: Software Defined Everything
Core Concept: Software Defined Everything
Thanakrit Lersmethasakul
 
Flink Streaming
Flink StreamingFlink Streaming
Flink Streaming
Gyula Fóra
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as Code
Martin Schütte
 
Helm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesHelm - Application deployment management for Kubernetes
Helm - Application deployment management for Kubernetes
Alexei Ledenev
 
OpenTelemetry Introduction
OpenTelemetry Introduction OpenTelemetry Introduction
OpenTelemetry Introduction
DimitrisFinas1
 
Apache NiFi in the Hadoop Ecosystem
Apache NiFi in the Hadoop Ecosystem Apache NiFi in the Hadoop Ecosystem
Apache NiFi in the Hadoop Ecosystem
DataWorks Summit/Hadoop Summit
 
Terraform
TerraformTerraform
Terraform
Adam Vincze
 
Scalable Architectures - Taming the Twitter Firehose
Scalable Architectures - Taming the Twitter FirehoseScalable Architectures - Taming the Twitter Firehose
Scalable Architectures - Taming the Twitter Firehose
Lorenzo Alberton
 
Hadoop File system (HDFS)
Hadoop File system (HDFS)Hadoop File system (HDFS)
Hadoop File system (HDFS)
Prashant Gupta
 
Terraform
TerraformTerraform
Terraform
Pathum Fernando ☁
 
Révolution eBPF - un noyau dynamique
Révolution eBPF - un noyau dynamiqueRévolution eBPF - un noyau dynamique
Révolution eBPF - un noyau dynamique
Raphaël PINSON
 
Terraform
TerraformTerraform
Terraform
Diego Pacheco
 
Building infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps KrakowBuilding infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps Krakow
Anton Babenko
 
Kafka/SMM Crash Course
Kafka/SMM Crash CourseKafka/SMM Crash Course
Kafka/SMM Crash Course
DataWorks Summit
 
Building Reliable Data Lakes at Scale with Delta Lake
Building Reliable Data Lakes at Scale with Delta LakeBuilding Reliable Data Lakes at Scale with Delta Lake
Building Reliable Data Lakes at Scale with Delta Lake
Databricks
 
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Simplilearn
 
Expert Day 2019 - SUSE Linux Enterprise 15
Expert Day 2019 - SUSE Linux Enterprise 15Expert Day 2019 - SUSE Linux Enterprise 15
Expert Day 2019 - SUSE Linux Enterprise 15
SUSE
 
Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with Terraform
DevOps.com
 
db tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New Featuresdb tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New Features
Noriyoshi Shinoda
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as Code
Martin Schütte
 
Helm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesHelm - Application deployment management for Kubernetes
Helm - Application deployment management for Kubernetes
Alexei Ledenev
 
OpenTelemetry Introduction
OpenTelemetry Introduction OpenTelemetry Introduction
OpenTelemetry Introduction
DimitrisFinas1
 
Scalable Architectures - Taming the Twitter Firehose
Scalable Architectures - Taming the Twitter FirehoseScalable Architectures - Taming the Twitter Firehose
Scalable Architectures - Taming the Twitter Firehose
Lorenzo Alberton
 
Hadoop File system (HDFS)
Hadoop File system (HDFS)Hadoop File system (HDFS)
Hadoop File system (HDFS)
Prashant Gupta
 
Révolution eBPF - un noyau dynamique
Révolution eBPF - un noyau dynamiqueRévolution eBPF - un noyau dynamique
Révolution eBPF - un noyau dynamique
Raphaël PINSON
 
Building infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps KrakowBuilding infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps Krakow
Anton Babenko
 
Building Reliable Data Lakes at Scale with Delta Lake
Building Reliable Data Lakes at Scale with Delta LakeBuilding Reliable Data Lakes at Scale with Delta Lake
Building Reliable Data Lakes at Scale with Delta Lake
Databricks
 
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Simplilearn
 
Expert Day 2019 - SUSE Linux Enterprise 15
Expert Day 2019 - SUSE Linux Enterprise 15Expert Day 2019 - SUSE Linux Enterprise 15
Expert Day 2019 - SUSE Linux Enterprise 15
SUSE
 

Similar to TERASOLUNA Framework on the Spring IO Platform (20)

Korejanai Story
Korejanai StoryKorejanai Story
Korejanai Story
Kentaro Takeda
 
ODA Target Markets – Partnering to Win
ODA Target Markets – Partnering to WinODA Target Markets – Partnering to Win
ODA Target Markets – Partnering to Win
MarketingArrowECS_CZ
 
The Cloud Foundry Story
The Cloud Foundry StoryThe Cloud Foundry Story
The Cloud Foundry Story
VMware Tanzu
 
Why cloud?
Why cloud?Why cloud?
Why cloud?
Lilly V.
 
Pivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow KeynotePivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow Keynote
cornelia davis
 
Let's Talk Mobile
Let's Talk MobileLet's Talk Mobile
Let's Talk Mobile
Chris Muir
 
Final business intelligence in the cloud
Final   business intelligence in the cloudFinal   business intelligence in the cloud
Final business intelligence in the cloud
Hossam Hassanien
 
Oracle Mobile Cloud Service
Oracle Mobile Cloud ServiceOracle Mobile Cloud Service
Oracle Mobile Cloud Service
Juan Carlos Ruiz Rico
 
Accelerating the Software Delivery Pipelinewith Mirantis OpenStack
Accelerating the Software Delivery Pipelinewith Mirantis OpenStackAccelerating the Software Delivery Pipelinewith Mirantis OpenStack
Accelerating the Software Delivery Pipelinewith Mirantis OpenStack
Bob Sokol
 
The Programmable Telecom Network, Doug Tait, Oracle, Enzo Amorino, Telecom It...
The Programmable Telecom Network, Doug Tait, Oracle, Enzo Amorino, Telecom It...The Programmable Telecom Network, Doug Tait, Oracle, Enzo Amorino, Telecom It...
The Programmable Telecom Network, Doug Tait, Oracle, Enzo Amorino, Telecom It...
Alan Quayle
 
Beneficios de la coexistencia de ambientes híbridos utilizando SOA
Beneficios de la coexistencia de ambientes híbridos utilizando SOABeneficios de la coexistencia de ambientes híbridos utilizando SOA
Beneficios de la coexistencia de ambientes híbridos utilizando SOA
Software Guru
 
Pythian MySQL - database for the web based economy
Pythian   MySQL - database for the web based economyPythian   MySQL - database for the web based economy
Pythian MySQL - database for the web based economy
InSync Conference
 
Why citizen developers should be your new best friend - Oracle APEX
Why citizen developers should be your new best friend - Oracle APEXWhy citizen developers should be your new best friend - Oracle APEX
Why citizen developers should be your new best friend - Oracle APEX
DavidPeake15
 
Cloud Native Application Framework
Cloud Native Application FrameworkCloud Native Application Framework
Cloud Native Application Framework
VMware Tanzu
 
DITA PUBLISHING: The True Cost of Taking your DITA Content Online
DITA PUBLISHING: The True Cost of Taking your DITA Content OnlineDITA PUBLISHING: The True Cost of Taking your DITA Content Online
DITA PUBLISHING: The True Cost of Taking your DITA Content Online
WebWorks
 
Modern App Development with Oracle Cloud
Modern App Development with Oracle CloudModern App Development with Oracle Cloud
Modern App Development with Oracle Cloud
Juan Carlos Ruiz Rico
 
Oracle Primavera Roadmap 2015
Oracle Primavera Roadmap 2015Oracle Primavera Roadmap 2015
Oracle Primavera Roadmap 2015
p6academy
 
Effective IoT System on Openstack
Effective IoT System on OpenstackEffective IoT System on Openstack
Effective IoT System on Openstack
Takashi Kajinami
 
3.1 oracle salonika
3.1 oracle salonika3.1 oracle salonika
3.1 oracle salonika
technology_forum
 
Oracle Modern AppDev Approach to Cloud & Container Native App
Oracle Modern AppDev Approach to Cloud & Container Native AppOracle Modern AppDev Approach to Cloud & Container Native App
Oracle Modern AppDev Approach to Cloud & Container Native App
Paulo Alberto Simoes ∴
 
ODA Target Markets – Partnering to Win
ODA Target Markets – Partnering to WinODA Target Markets – Partnering to Win
ODA Target Markets – Partnering to Win
MarketingArrowECS_CZ
 
The Cloud Foundry Story
The Cloud Foundry StoryThe Cloud Foundry Story
The Cloud Foundry Story
VMware Tanzu
 
Why cloud?
Why cloud?Why cloud?
Why cloud?
Lilly V.
 
Pivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow KeynotePivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow Keynote
cornelia davis
 
Let's Talk Mobile
Let's Talk MobileLet's Talk Mobile
Let's Talk Mobile
Chris Muir
 
Final business intelligence in the cloud
Final   business intelligence in the cloudFinal   business intelligence in the cloud
Final business intelligence in the cloud
Hossam Hassanien
 
Accelerating the Software Delivery Pipelinewith Mirantis OpenStack
Accelerating the Software Delivery Pipelinewith Mirantis OpenStackAccelerating the Software Delivery Pipelinewith Mirantis OpenStack
Accelerating the Software Delivery Pipelinewith Mirantis OpenStack
Bob Sokol
 
The Programmable Telecom Network, Doug Tait, Oracle, Enzo Amorino, Telecom It...
The Programmable Telecom Network, Doug Tait, Oracle, Enzo Amorino, Telecom It...The Programmable Telecom Network, Doug Tait, Oracle, Enzo Amorino, Telecom It...
The Programmable Telecom Network, Doug Tait, Oracle, Enzo Amorino, Telecom It...
Alan Quayle
 
Beneficios de la coexistencia de ambientes híbridos utilizando SOA
Beneficios de la coexistencia de ambientes híbridos utilizando SOABeneficios de la coexistencia de ambientes híbridos utilizando SOA
Beneficios de la coexistencia de ambientes híbridos utilizando SOA
Software Guru
 
Pythian MySQL - database for the web based economy
Pythian   MySQL - database for the web based economyPythian   MySQL - database for the web based economy
Pythian MySQL - database for the web based economy
InSync Conference
 
Why citizen developers should be your new best friend - Oracle APEX
Why citizen developers should be your new best friend - Oracle APEXWhy citizen developers should be your new best friend - Oracle APEX
Why citizen developers should be your new best friend - Oracle APEX
DavidPeake15
 
Cloud Native Application Framework
Cloud Native Application FrameworkCloud Native Application Framework
Cloud Native Application Framework
VMware Tanzu
 
DITA PUBLISHING: The True Cost of Taking your DITA Content Online
DITA PUBLISHING: The True Cost of Taking your DITA Content OnlineDITA PUBLISHING: The True Cost of Taking your DITA Content Online
DITA PUBLISHING: The True Cost of Taking your DITA Content Online
WebWorks
 
Modern App Development with Oracle Cloud
Modern App Development with Oracle CloudModern App Development with Oracle Cloud
Modern App Development with Oracle Cloud
Juan Carlos Ruiz Rico
 
Oracle Primavera Roadmap 2015
Oracle Primavera Roadmap 2015Oracle Primavera Roadmap 2015
Oracle Primavera Roadmap 2015
p6academy
 
Effective IoT System on Openstack
Effective IoT System on OpenstackEffective IoT System on Openstack
Effective IoT System on Openstack
Takashi Kajinami
 
Oracle Modern AppDev Approach to Cloud & Container Native App
Oracle Modern AppDev Approach to Cloud & Container Native AppOracle Modern AppDev Approach to Cloud & Container Native App
Oracle Modern AppDev Approach to Cloud & Container Native App
Paulo Alberto Simoes ∴
 
Ad

More from apkiban (12)

システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
apkiban
 
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗くSpring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
apkiban
 
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用
大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用
apkiban
 
What happens in Spring Cloud Netflix
What happens in Spring Cloud NetflixWhat happens in Spring Cloud Netflix
What happens in Spring Cloud Netflix
apkiban
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
 
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
apkiban
 
新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとは新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとは
apkiban
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
apkiban
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
apkiban
 
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
apkiban
 
バッチは地味だが役に立つ
バッチは地味だが役に立つバッチは地味だが役に立つ
バッチは地味だが役に立つ
apkiban
 
Spring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わるSpring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わる
apkiban
 
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
apkiban
 
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗くSpring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
apkiban
 
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用
大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用
apkiban
 
What happens in Spring Cloud Netflix
What happens in Spring Cloud NetflixWhat happens in Spring Cloud Netflix
What happens in Spring Cloud Netflix
apkiban
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
 
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
apkiban
 
新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとは新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとは
apkiban
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
apkiban
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
apkiban
 
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
apkiban
 
バッチは地味だが役に立つ
バッチは地味だが役に立つバッチは地味だが役に立つ
バッチは地味だが役に立つ
apkiban
 
Spring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わるSpring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わる
apkiban
 
Ad

Recently uploaded (20)

How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 

TERASOLUNA Framework on the Spring IO Platform

  • 1. TERASOLUNA Framework on the Spring IO Platform Toshiaki Maki
  • 2. About me • Toshiaki Maki –Leader of TERASOLUNA Framework –Spring enthusiast for 6 years –Author of a book about Spring Boot
  • 3. Copyright © 2015 NTT DATA Corporation 2015-04-29 Toshiaki Maki @ Spring I/O 2015 TERASOLUNA Framework on the Spring IO Platform
  • 4. Copyright © 2015 NTT DATA Corporation 4 About me Toshiaki Maki • Leader of TERASOLUNA Framework • Spring enthusiast for 6 years • Author of a book about Spring Boot
  • 5. Copyright © 2015 NTT DATA Corporation 5 About NTTDATA • NTT DATA Corporation is the 6th largest global IT services company • Headquartered in Tokyo • Sales above ¥1.5 trillion • 75,000 professionals in 40 countries.
  • 6. Copyright © 2015 NTT DATA Corporation 6 Our Business Domains Public Sector Education Transportation and Logistics Healthcare and Life Sciences Energy and Utilities Wholesale and Distribution Banking and Financial Services Natural Resources Retail Insurance Manufacturing Service Providers Telecommunication Automotive Fundamental Technologies Media and Entertainment Electronics and High Tech Consumer Products http://www.nttdata.com/global/en/investor/library/annual-reports/pdf/2015/fy2014_ar.pdf
  • 7. Copyright © 2015 NTT DATA Corporation 7 Agenda • What is TERASOLUNA Framework • How we use Spring IO Platform • How TERASOLUNA solved traditional problems • How we solved maintenance problems • Where TERASOLUNA is actually used • Contributions to Spring • Q&A
  • 8. Copyright © 2015 NTT DATA Corporation 8 What is TERASOLUNA Framework
  • 9. 9Copyright © 2015 NTT DATA Corporation What is TERASOLUNA? Process Environment Support NTT DATA standard process of development and project management Software Framework Automation Tools Standard Process Support Service Development Environment The integrated solution of best practices in NTT Data Japan for developing open systems  Standard technologies, Methodologies, and Technical training /support. Tech Support Training Service
  • 10. 10Copyright © 2015 NTT DATA Corporation What is TERASOLUNA? Process Environment Support NTT DATA standard process of development and project management Software Framework Automation Tools Standard Process Support Service Development Environment The integrated solution of best practices in NTT Data Japan for developing open systems  Standard technologies, Methodologies, and Technical training /support. Tech Support Training Service Today’s Topic
  • 11. 11Copyright © 2015 NTT DATA Corporation Customers System Integration Business in Japan Project Project Project … ProjectProjectProject +100 PRJ Every year
  • 12. 12Copyright © 2015 NTT DATA Corporation Customers System Integration Business in Japan Project Project Project … ProjectProjectProject +100 PRJ Every year TERASOLUNA team has been providing dedicated supports & consistent stable solutions
  • 13. 13Copyright © 2015 NTT DATA Corporation What “was” TERASOLUNA FW? Spring Unique Glue Code Enterprise Application Application Server http://www.terasoluna.jp/ Spring 1 (2004-) 2 (2007-) 3 (2012-) Struts1 Developers can just focus on business logic TERASOLUNA Framework started from 2004 and has been used in 1000+ projects.
  • 14. 14Copyright © 2015 NTT DATA Corporation What “was” TERASOLUNA FW? Supported by Automation tools Generate source code/configurations related to screen Generate source code/configurations related to business logic
  • 15. 15Copyright © 2015 NTT DATA Corporation Customers System Integration Business in Japan Project Project Project … ProjectProjectProject In general, large projects have 1-2 years developing phase and 6-8 years maintenance phase
  • 16. 16Copyright © 2015 NTT DATA Corporation Customers System Integration Business in Japan Project Project Project … ProjectProjectProject In general, large projects have 1-2 years developing phase and 6-8 years maintenance phase We have to provide long term support.
  • 17. 17Copyright © 2015 NTT DATA Corporation EOL & Security Vulnerability http://www.ipa.go.jp/security/ciadr/vul/20140417-struts.html 2014-04 ClassLoader Manipulation Vulnerability CVE-2014-0114 Struts1 had been already EOL since 2013 2015-03 Multi Page Validator Vulnerability CVE-2015-0899 http://sourceforge.jp/projects/terasoluna/wiki/StrutsPatch1-JP http://sourceforge.jp/projects/terasoluna/wiki/StrutsPatch2-JP We patched !! We reported.
  • 18. 18Copyright © 2015 NTT DATA Corporation EOL & Security Vulnerability http://www.ipa.go.jp/security/ciadr/vul/20140417-struts.html 2014-04 ClassLoader Manipulation Vulnerability CVE-2014-0114 2015-03 Multi Page Validator Vulnerability CVE-2015-0899 http://sourceforge.jp/projects/terasoluna/wiki/StrutsPatch1-JP http://sourceforge.jp/projects/terasoluna/wiki/StrutsPatch2-JP We patched !! We reported. Struts1 had been already EOL since 2013 Some Japanese customers show concern of continuing Struts1.
  • 19. 19Copyright © 2015 NTT DATA Corporation History of TERASOLUNA FW TERASOLUNA Server FW for Java(Web)1.X TERASOLUNA Server FW for Java 5.X 2013 Homegrown FW based on Struts Homegrown FW based on Struts+Spring Spring MVC 3.2 For Japan(Web) For Global For Japan (XML) Homegrown FW based on old Spring MVC 2004 20072006 For Japan 2015 Based on Global FW TERASOLUNA Server FW for Java(Rich)1.X TERASOLUNA Global FW 1.X TERASOLUNA Server FW for Java(Web)2.X TERASOLUNA Server FW for Java(Rich)2.X Spring MVC 4.1+ We have started to use Spring MVC for global projects
  • 20. 20Copyright © 2015 NTT DATA Corporation What “is” TERASOLUNA FW? TERASOLUNA FW is like a “Packaged Spring” for Enterprise Application. No longer an isolated framework. Spring Enterprise Application Application Server Spring MVC No Glue! Just Spring! Spring Data JPA Spring Security http://terasoluna.org
  • 21. Copyright © 2015 NTT DATA Corporation 21 2000~ 2015 Creating a framework itself is valuable Frameworks are commoditized Too many Java Frameworks Spring or Java EE TrendsOurApproach Developed as a unique Framework OSS(Spring) as it is Previous TERASOLUNA (TERASOLUNA Server FW for Java 2) New TERASOLUNA (TERASOLUNA Server FW for Java 5) Enterprise Support Enterprise Support & Guideline Concept of TERASOLUNA Framework
  • 22. Copyright © 2015 NTT DATA Corporation 22 Spring continues new feature enhancement and expected the rapid new technology in future. Since Java EE takes lot of time from specification confirmation to implementation of the AP server vendor. Since we are using Spring technology from past 10 years, our company have good knowledge of development, implementation and development resources. Since there are considerable implementation differences in Java EE compliant AP server, it is difficult to provide a generic trouble shooting and support for multiple AP server Many application projects and developers, security aspects have been actively implemented. The adoption of security measures such as OOS Spring Security can enhance the security aspects.  No.1 share in global market, exists good number of engineers and information, easy to gather information and resources Develop ment resource s Support to change Strong Security In-house Know- how Java EE Adoption barriers Spring Why Spring?
  • 23. 23Copyright © 2015 NTT DATA Corporation Components in TERASOLUNA •OSS like Spring, JPA, MyBatis, Apache commons… Software Framework •A little utilities for enterprise application Common Library •Best Practice Document for enterprise application development Guideline •Materials to learn basic knowledge for Application development Tutorials •Sample application based on the guideline Sample Application •Quick start project based on the guideline Blank Project DevelopedbyNTTDATA
  • 24. 24Copyright © 2015 NTT DATA Corporation Components in TERASOLUNA •OSS like Spring, JPA, MyBatis, Apache commons… Software Framework •A little utilities for enterprise application Common Library •Best Practice Document for enterprise application development Guideline •Materials to learn basic knowledge for Application development Tutorials •Sample application based on the guideline Sample Application •Quick start project based on the guideline Blank Project DevelopedbyNTTDATA Published on GithHub http://terasoluna.org
  • 25. 25Copyright © 2015 NTT DATA Corporation Current Software Stack
  • 26. 26Copyright © 2015 NTT DATA Corporation Current Software Stack
  • 27. 27Copyright © 2015 NTT DATA Corporation Common Library Small library of useful and obtrusive common functionalities https://github.com/terasolunaorg/terasoluna-gfw http://terasolunaorg.github.io/guideline/5.0.x/en/Overview/FrameworkStack.html#building-blocks-of-common-library Exception Handling Provide general exception classes/logger/interceptor and exception handler of Spring MVC. System Date Factory Provide classes for retrieving the system date time for test. Double Submit Protection Provide mechanism (classes) for protecting Web Application from double submitting of request. Tag Libs Provide JSP tags for pagination link, showing message panels. … …
  • 28. 28Copyright © 2015 NTT DATA Corporation General Problems in Java development Complex Spring Combinations & Configurations Poor Exception Handling/Logging Messy Project Structure Inaccuracy of how to implement
  • 29. 29Copyright © 2015 NTT DATA Corporation General Problems in Java development Complex Spring Combinations & Configurations Poor Exception Handling/Logging Messy Project Structure Inaccuracy of how to implement Software Framework Common Library Guideline Tutorials Sample Application Blank Project
  • 30. 30Copyright © 2015 NTT DATA Corporation General Problems in Java development Complex Spring Combinations & Configurations Poor Exception Handling/Logging Messy Project Structure Inaccuracy of how to implement Software Framework Common Library Guideline Tutorials Sample Application Blank Project Our outputs resolve general problems (explained later)
  • 31. 31Copyright © 2015 NTT DATA Corporation History of TERASOLUNA TERASOLUNA Server FW for Java(Web)1.X TERASOLUNA Server FW for Java 5.X 2013 Homegrown FW based on Struts Homegrown FW based on Struts+Spring Spring MVC 3.2 For Japan(Web) For Global For Japan (XML) Homegrown FW based on old Spring MVC 2004 20072006 For Japan 2015 TERASOLUNA Server FW for Java(Rich)1.X TERASOLUNA Global FW 1.X TERASOLUNA Server FW for Java(Web)2.X TERASOLUNA Server FW for Java(Rich)2.X Spring MVC 4.1+
  • 32. 32Copyright © 2015 NTT DATA Corporation History of TERASOLUNA TERASOLUNA Server FW for Java(Web)1.X TERASOLUNA Server FW for Java 5.X 2013 Homegrown FW based on Struts Homegrown FW based on Struts+Spring Spring MVC 3.2 For Japan(Web) For Global For Japan (XML) Homegrown FW based on old Spring MVC 2004 20072006 For Japan 2015 TERASOLUNA Server FW for Java(Rich)1.X TERASOLUNA Global FW 1.X TERASOLUNA Server FW for Java(Web)2.X TERASOLUNA Server FW for Java(Rich)2.X Spring MVC 4.1+
  • 33. 33Copyright © 2015 NTT DATA Corporation History of TERASOLUNA TERASOLUNA Server FW for Java(Web)1.X TERASOLUNA Server FW for Java 5.X 2013 Homegrown FW based on Struts Homegrown FW based on Struts+Spring Spring MVC 3.2 For Japan(Web) For Global For Japan (XML) Homegrown FW based on old Spring MVC 2004 20072006 For Japan 2015 TERASOLUNA Server FW for Java(Rich)1.X TERASOLUNA Global FW 1.X TERASOLUNA Server FW for Java(Web)2.X TERASOLUNA Server FW for Java(Rich)2.X Spring MVC 4.1+ Already released since 2013
  • 34. 34Copyright © 2015 NTT DATA Corporation History of TERASOLUNA TERASOLUNA Server FW for Java(Web)1.X TERASOLUNA Server FW for Java 5.X 2013 Homegrown FW based on Struts Homegrown FW based on Struts+Spring Spring MVC 3.2 For Japan(Web) For Global For Japan (XML) Homegrown FW based on old Spring MVC 2004 20072006 For Japan 2015 TERASOLUNA Server FW for Java(Rich)1.X TERASOLUNA Global FW 1.X TERASOLUNA Server FW for Java(Web)2.X TERASOLUNA Server FW for Java(Rich)2.X Spring MVC 4.1+ What’s the difference?? Already released since 2013
  • 35. 35Copyright © 2015 NTT DATA Corporation Current Software Stack
  • 36. 36Copyright © 2015 NTT DATA Corporation Current Software StackVersion management between Spring sub- projects is complicated
  • 37. 37Copyright © 2015 NTT DATA Corporation Current Software StackVersion management between Spring sub- projects is complicated Version management between Spring and 3rd parties is also complicated
  • 38. 38Copyright © 2015 NTT DATA Corporation Current Software StackVersion management between Spring sub- projects is complicated Version management between Spring and 3rd parties is complicated Updating cost increases!
  • 39. 39Copyright © 2015 NTT DATA Corporation Current Software Stack
  • 40. 40Copyright © 2015 NTT DATA Corporation Current Software Stack We meet Spring IO Platform
  • 41. Copyright © 2015 NTT DATA Corporation 41 How we use Spring IO Platform
  • 42. 42Copyright © 2015 NTT DATA Corporation What is Spring IO Platform https://spring.io/platform
  • 43. 43Copyright © 2015 NTT DATA Corporation Managed Dependencies http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions https://pivotal.io/agile/press-release/pivotal-releases-spring-io-platform
  • 44. 44Copyright © 2015 NTT DATA Corporation Managed Dependencies http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions https://pivotal.io/agile/press-release/pivotal-releases-spring-io-platform “With a set of components all tested to work together, it saves weeks of tedious developer efforts to build and test a stack of compatible Spring and third-party technologies, thereby helping enterprises bring new applications to market more rapidly.”
  • 45. 45Copyright © 2015 NTT DATA Corporation Merits of Spring IO Platform Spring IO Platform provides a set of dependency/version managed by Spring Team Enjoy • Reducing maintenance cost • Sharing use cases all over the world
  • 46. 46Copyright © 2015 NTT DATA Corporation Spring IO Platform in the TERASOLUNA Our parent chooses some dependencies in Spring IO Platform io.spring.platform platform-bom org.terasoluna.gfw terasoluna-gfw-parent org.springframework.boot spring-boot-starter-parent org.springframework.boot spring-boot-dependencies Your project parent parent Import the dependency management parent
  • 47. 47Copyright © 2015 NTT DATA Corporation How to use Spring IO Platform https://github.com/terasolunaorg/terasoluna-gfw/blob/master/terasoluna-gfw-parent/pom.xml <dependencyManagement> <dependencies> <dependency> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>${io.spring.platform.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- … --> </dependencies> </dependencyManagement> terasoluna-gfw-parent/pom.xml Our parent pom
  • 48. 48Copyright © 2015 NTT DATA Corporation In common libraryhttps://github.com/terasolunaorg/terasoluna-gfw/blob/master/terasoluna-gfw-common/pom.xml <parent> <artifactId>terasoluna-gfw-parent</artifactId> <groupId>org.terasoluna.gfw</groupId> <version>5.0.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> </dependency> <!-- ... --> </dependencies> terasoluna-gfw-common/pom.xml Choose dependencies managed by Spring IO Platform Choose dependencies managed by Spring IO Platform Choose dependencies managed by Spring IO Platform
  • 49. 49Copyright © 2015 NTT DATA Corporation Your Project <parent> <artifactId>terasoluna-gfw-parent</artifactId> <groupId>org.terasoluna.gfw</groupId> <version>5.0.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.terasoluna.gfw</groupId> <artifactId>terasoluna-gfw-web</artifactId> </dependency> <!-- ... --> </dependencies> Use common library
  • 50. Copyright © 2015 NTT DATA Corporation 50 How TERASOLUNA solved traditional problems
  • 51. 51Copyright © 2015 NTT DATA Corporation Traditional Problems Complex Spring Combinations & Configurations Poor Exception Handling/Logging Messy Project Structure Inaccuracy of how to implement And so on …
  • 52. 52Copyright © 2015 NTT DATA Corporation Complex Spring Combinations & Configuration Complex Spring Combinations & Configurations Have to consider which libraries to use Have to consider initial configurations/ best practiceHave to consider which version to use ✓ Resolved by Spring IO Platform
  • 53. 53Copyright © 2015 NTT DATA Corporation Complex Spring Combinations & Configuration Complex Spring Combinations & Configurations Have to consider which libraries to use Have to consider initial configurations/ best practiceHave to consider which version to use ✓ web.xml? Log configuration? How logger? Which validation? How divide the configuration? Environment specific? Which Spring project?
  • 54. 54Copyright © 2015 NTT DATA Corporation Complex Spring Combinations & Configuration Complex Spring Combinations & Configurations Have to consider which libraries to use Have to consider initial configurations/ best practiceHave to consider which version to use ✓ web.xml? Log configuration? How logger? Which validation? How divide the configuration? Environment specific? Which Spring project? It takes a lot of time to start up :-(
  • 55. 55Copyright © 2015 NTT DATA Corporation Messy Project Structure Messy Project Structure • Inconsistent • Considered every time at each project • System testing is not considered • Illegal object access beyond the layer (ex. HttpSession in Service class!)
  • 56. 56Copyright © 2015 NTT DATA Corporation Poor Exception Handling/Logging try { // … } catch (Exception e) {// ← Catch widely everywhere e.printStackTrace(); } try { // … } catch (Exception e) { throw new RuntimeException(" Nice catch ! ;)", e); } Poor Exception Handling/Logging
  • 57. 57Copyright © 2015 NTT DATA Corporation TERASOLUNA Provides… • Recommended library & configuration • Proper project structure based on layered architecture • Default Exception Handling/Error・ Trace Logging All features are pre-configured in a maven archetype project
  • 58. 58Copyright © 2015 NTT DATA Corporation Maven archetype Single Project Archetype Simple one For a trial use https://github.com/terasolunaorg/terasoluna-gfw-web-blank Multi Project Archetype Production ready Multi-layered Strongly recommended https://github.com/terasolunaorg/terasoluna-gfw-web-multi-blank Our archetype provides pre-configured production-ready blank project
  • 59. 59Copyright © 2015 NTT DATA Corporation Generate a blank project mvn archetype:generate -B¥ -DarchetypeCatalog=http://repo.terasoluna.org/nexus/content/repositories/terasoluna-gfw-releases¥ -DarchetypeGroupId=org.terasoluna.gfw.blank¥ -DarchetypeArtifactId=terasoluna-gfw-multi-web-blank-mybatis3-archetype¥ -DarchetypeVersion=5.0.0.RELEASE¥ -DgroupId=com.example¥ -DartifactId=springio-demo 2 persistence of archetype(archetypeArtifactId) are prepared. 1terasoluna-gfw-multi-web-blank-mybatis3-archetype 2 terasoluna-gfw-multi-web-blank-jpa-archetype
  • 60. 60Copyright © 2015 NTT DATA Corporation Generate a blank project Multi Module Project Project for domain layer Project with environment dependencies Project for application layer
  • 61. 61Copyright © 2015 NTT DATA Corporation Generate a blank project Preconfigured libraries
  • 62. 62Copyright © 2015 NTT DATA Corporation Layered Architecture Application Layer Controller Form View Domain Layer Service Domain Object Repository Infrastructure Layer O/R Mapper Repository Impl Integration System Connector depends depends Helper
  • 63. 63Copyright © 2015 NTT DATA Corporation Layered Architecture Application Layer Controller Form View Domain Layer Service Domain Object Repository Infrastructure Layer O/R Mapper Repository Impl Integration System Connector depends depends Helper Typical Layered Architecture similar to DDD
  • 64. 64Copyright © 2015 NTT DATA Corporation Generate a blank project Domain Layer Infrastructure Layer
  • 65. 65Copyright © 2015 NTT DATA Corporation Generate a blank project Application Layer
  • 66. 66Copyright © 2015 NTT DATA Corporation Generate a blank project Configurations depends on the environment like logging, datasource…
  • 67. 67Copyright © 2015 NTT DATA Corporation Generate a blank project Domain Layer Application Layer
  • 68. 68Copyright © 2015 NTT DATA Corporation Generate a blank project Domain Layer Application Layer Can’t access Servlet APIs and so on
  • 69. 69Copyright © 2015 NTT DATA Corporation Generate a blank project Domain Layer Application Layer Avoid violations of the layering rule
  • 70. 70Copyright © 2015 NTT DATA Corporation Run the Application
  • 71. 71Copyright © 2015 NTT DATA Corporation Sample project Tour reservation application •MyBatis3 version • https://github.com/terasolunaorg/terasoluna-tourreservation-mybatis3 •JPA version • https://github.com/terasolunaorg/terasoluna-tourreservation These samples follow the structure
  • 72. 72Copyright © 2015 NTT DATA Corporation Traditional Problems Complex Spring Combinations & Configurations Messy Project Structure Poor Exception Handling/Logging Inaccuracy of how to implement ✓ ✓
  • 73. 73Copyright © 2015 NTT DATA Corporation Traditional Problems Complex Spring Combinations & Configurations Messy Project Structure Poor Exception Handling/Logging Inaccuracy of how to implement ✓ ✓
  • 74. 74Copyright © 2015 NTT DATA Corporation Common Library (recap) Small library of useful and obtrusive common functionalities https://github.com/terasolunaorg/terasoluna-gfw http://terasolunaorg.github.io/guideline/5.0.x/en/Overview/FrameworkStack.html#building-blocks-of-common-library Exception Handling Provide general exception classes/logger/interceptor and exception handler of Spring MVC. System Date Factory Provide classes for retrieving the system date time for test. Double Submit Protection Provide mechanism (classes) for protecting Web Application from double submitting of request. Tag Libs Provide JSP tags for pagination link, showing message panels. … …
  • 75. 75Copyright © 2015 NTT DATA Corporation Prepared Exception @Service @Transactional public class OrderServiceImpl implements OrderSerivce { public OrderResult order(Order o) { // … if (orderQuantity > stockQuantity) { ResultMessages msg = ResultMessages.error() .add("ORDER.STOCK.OVER", orderQuantity); throw new BusinessException(msg); } // … } } Message Key
  • 76. 76Copyright © 2015 NTT DATA Corporation Fine Exception Handling • when the Controller class handles the exception at request level • when the Controller class handles the exception at use case level • when the framework handles the exception at servlet level • when the servlet container handles the exception at web application level 4 basic flows of exception handling are considered http://terasolunaorg.github.io/guideline/5.0.x/en/ArchitectureInDetail/ExceptionHandling.html
  • 77. 77Copyright © 2015 NTT DATA Corporation 1. Controller class handles the exception at request level Xxx screen <Spring MVC> Dispatcher Servlet Controller Service 1 2 3 4 7 catch BusinessException 6’ 8 9 <Spring MVC> Model xxx.jsp <jsp tag library> Messages PanelTag Xxx screen Result Message. Result Message 6 Monitoring log <AOP> ResultMessages LoggingInterceptor 5 applicationContext.xml Application log defile bean & AOPException Loggerwarn 4’5’ 10 Business Exception Result Message
  • 78. 78Copyright © 2015 NTT DATA Corporation Xxx screen <Spring MVC> Dispatcher Servlet Controller Service 1 2 3 4 7 catch BusinessException 6’ 8 9 <Spring MVC> Model xxx.jsp <jsp tag library> Messages PanelTag Xxx screen Result Message. Result Message 6 Monitoring log <AOP> ResultMessages LoggingInterceptor 5 applicationContext.xml Application log defile bean & AOPException Loggerwarn 4’5’ 10 Business Exception Result Message 1. Controller class handles the exception at request level date:2015-04-23 13:30:05 thread:tomcat-http--18 X- Track:b613ef3d281d4e018eadeb62bae308d5 level:WARN logger:o.t.gfw.common.exception.ExceptionLogger message:[e.xx.fw.8001] ResultMessages [type=error, list=[ResultMessage [code=ORDER.STOCK.OVER, args=[100], text=null]]] org.terasoluna.gfw.common.exception.BusinessException: ResultMessages [type=error, list=[ResultMessage [code=ORDER.STOCK.OVER, args=[100], text=null]]] at com.example.domain.service.demo.DemoService.doSomething(DemoService.java:13) ~[springio-demo-domain-1.0-SNAPSHOT.jar:1.0-SNAPSHOT] at com.example.domain.service.demo.DemoService$$FastClassBySpringCGLIB$$c614e7b9.inv oke(<generated>) ~[spring-core-4.1.4.RELEASE.jar:1.0-SNAPSHOT] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.1.4.RELEASE.jar:4.1.4.RELEASE] …
  • 79. 79Copyright © 2015 NTT DATA Corporation 1. Controller class handles the exception at request level Xxx screen <Spring MVC> Dispatcher Servlet Controller Service 1 2 3 4 7 catch BusinessException 6’ 8 9 <Spring MVC> Model xxx.jsp <jsp tag library> Messages PanelTag Xxx screen Result Message. Result Message 6 Monitoring log <AOP> ResultMessages LoggingInterceptor 5 applicationContext.xml Application log defile bean & AOPException Loggerwarn 4’5’ 10 Business Exception Result Message ORDER.STOCK.OVER=The requested order is out of stock! (quantity={0})
  • 80. 80Copyright © 2015 NTT DATA Corporation 2. Controller class handles the exception at use case level Xxx screen <Spring MVC> Dispatcher Servlet Controller Service 1 2 3 6 7 11 12 <Spring MVC> Model 4 yyy.jsp <jsp tag library> Messages PanelTag Result Message Yyy screen Result Message. 5 <Spring MVC> ExceptionHandler ExceptionResolver <AOP> HandlerExceptionResolver LoggingInterceptor Monitoring log Application log 9 8 10 spring- mvc.xmldefile bean & AOP 3’3’ 13 Define @ExceptionHandler( XyzException.class) Xyz Exception error warn Info Exception Logger
  • 81. 81Copyright © 2015 NTT DATA Corporation 3. Framework handles the exception at servlet level Xxx screen <Spring MVC> Dispatcher Servlet Controller <Spring MVC Extention> SystemException ResolverSystem Error screen System Exception.jsp Service 1 2 3 10 5 <Servlet API> HttpServlet Request exception code (error code) exception code + Message. 4 6 6’ 9 11 message is get from message resources Monitoring log 8 spring- mvc.xml Application log define bean & exception handling rule <AOP> HandlerExceptionResolver LoggingInterceptor 7 spring- mvc.xml defile bean & AOP 4’4’ 12 error warn Info Exception Logger System Exception
  • 82. 82Copyright © 2015 NTT DATA Corporation 4. Servlet container handles the exception at web application level Xxx screen <Spring MVC> Dispatcher Servlet Controller System Error screen error.html Service 1 2 3 7 Message. <Application Server> Servlet Container Server log 6 XyzError is wrapped in ServletException. 4 web.xml <error-page> Monitoring log Application log 5 5’ 4’ define exception handling rule. Exception Logger <Servlet Filter> Exception LoggingFilter web.xml applicationContext.xml defile bean & filter 3’3’ 8 Servlet Exception XyzError XyzError error warn Info
  • 83. 83Copyright © 2015 NTT DATA Corporation All configurations are prepared <!-- Exception Code Resolver. --> <bean id="exceptionCodeResolver" class="org.terasoluna.gfw.common.exception.SimpleMappingExceptionCodeResolver"> <!-- omitted... --> </bean> <!-- Exception Logger. --> <bean id="exceptionLogger" class="org.terasoluna.gfw.common.exception.ExceptionLogger"> <property name="exceptionCodeResolver" ref="exceptionCodeResolver" /> </bean> <!-- Setting Exception Handling. --> <!-- Exception Resolver. --> <bean class="org.terasoluna.gfw.web.exception.SystemExceptionResolver"> <property name="exceptionCodeResolver" ref="exceptionCodeResolver" /> <!-- omitted... --> </bean> <!-- Setting AOP. --> <bean id="handlerExceptionResolverLoggingInterceptor" class="org.terasoluna.gfw.web.exception.HandlerExceptionResolverLoggingInterceptor"> <property name="exceptionLogger" ref="exceptionLogger" /> </bean> <aop:config> <aop:advisor advice-ref="handlerExceptionResolverLoggingInterceptor" pointcut="execution(* org.springframework.web.servlet.HandlerExceptionResolver.resolveException(..))" /> </aop:config> <!-- AOP. --> <bean id="resultMessagesLoggingInterceptor" class="org.terasoluna.gfw.common.exception.ResultMessagesLoggingInterceptor"> <property name="exceptionLogger" ref="exceptionLogger" /> </bean> <aop:config> <aop:advisor advice-ref="resultMessagesLoggingInterceptor" pointcut="@within(org.springframework.stereotype.Service)" /> </aop:config> applicationContext.xml spring-mvc.xml spring-demo-domain.xml
  • 84. 84Copyright © 2015 NTT DATA Corporation Traditional Problems Complex Spring Combinations & Configurations Messy Project Structure Poor Exception Handling/Logging Inaccuracy of how to implement ✓ ✓ ✓
  • 85. 85Copyright © 2015 NTT DATA Corporation Traditional Problems Complex Spring Combinations & Configurations Messy Project Structure Poor Exception Handling/Logging Inaccuracy of how to implement ✓ ✓ ✓ Not solved by Maven Archetype
  • 86. 86Copyright © 2015 NTT DATA Corporation Inaccuracy of how to implement There are lot of sample codes available on internet. Not understood on which should I trust :S
  • 87. 87Copyright © 2015 NTT DATA Corporation Inaccuracy of how to implement There are lot of sample codes available on internet. Not understood on which should I trust :S We need production ready samples!
  • 88. Copyright © 2015 NTT DATA Corporation 88 Guideline • Detailed instructions for each feature • Tutorials (learning content) Described number of diagrams for easy understanding • Sample code • Best practices of verified secured development Listed number of sample code allow you to develop your app Explanation of sample code also given • Sample code • Practical development know-how for the enterprise ・・・ How to extend the features are also described Note, Tip, Warning, Hint related number of practical development know- how also described Also described idea how to implement ①Basic knowledge, study of AP foundation ③Extension policy of the FW ④Design & Development of AP ②Feasibility study  Guidelines leverage example in work of architect Japanese/English http://terasolunaorg.github.io/guideline
  • 89. 89Copyright © 2015 NTT DATA Corporation Providing lot of samples A variety of contents are covered !! 1700+ pages!
  • 90. 90Copyright © 2015 NTT DATA Corporation Traditional Problems Complex Spring Combinations & Configurations Messy Project Structure Poor Exception Handling/Logging Inclarity of how to implement ✓ ✓ ✓ ✓
  • 91. 91Copyright © 2015 NTT DATA Corporation Another possible solution… You can guess, Spring Boot can also resolve similar problems. But we started from 2012...
  • 92. 92Copyright © 2015 NTT DATA Corporation Comparison Dependency Management Prepared Configuration Best Practices Spring Boot Spring IO Platform + Starters Auto Configure Auto Configure? TERASOLUNA Spring IO Platform + common library Maven Archetype Guideline
  • 93. 93Copyright © 2015 NTT DATA Corporation Comparison Dependency Management Prepared Configuration Best Practices Spring Boot Spring IO Platform + Starters Auto Configure Auto Configure? TERASOLUNA Spring IO Platform + common library Maven Archetype Guideline Spring users should use Spring Boot or TERASOLUNA 
  • 94. Copyright © 2015 NTT DATA Corporation 94 How we solved maintenance problems
  • 95. 95Copyright © 2015 NTT DATA Corporation How do we assure the guideline? A lot of samples are explained How about backward compatibility??
  • 96. 96Copyright © 2015 NTT DATA Corporation All contents are tested !! Selenium test cases for each sample code!! 700+ test cases.
  • 97. 97Copyright © 2015 NTT DATA Corporation Continuous Testing Everyday 700+ test cases are running. Test Application & Test Cases deploy test
  • 98. 98Copyright © 2015 NTT DATA Corporation Continuous Testing Everyday 700+ test cases are running. Test Application & Test Cases deploy test Performance Test is also executed using Apache JMeter
  • 99. 99Copyright © 2015 NTT DATA Corporation Customers System Integration Business in Japan (recap) Project Project Project … ProjectProjectProject
  • 100. 100Copyright © 2015 NTT DATA Corporation Customers System Integration Business in Japan (recap) Project Project Project … ProjectProjectProject A number of environments demand support!!!
  • 101. 101Copyright © 2015 NTT DATA Corporation Customers System Integration Business in Japan (recap) Project Project Project … ProjectProjectProject A number of environments are demanded to support!!! Oracle JDK Apache Tomcat Oracle WebLogic Server Oracle Database PostgreSQL
  • 102. 102Copyright © 2015 NTT DATA Corporation Customers System Integration Business in Japan (recap) Project Project Project … ProjectProjectProject A number of environments are demanded to support!!! OpenJDK Oracle JDK Apache Tomcat IBM WebSphere Application Server Fujitsu Interstage Application Server Oracle WebLogic Server JBoss Enterprise Application Platform NEC WebOTX Application Server Cosminexus: Hitachi Application Server Caucho Resin Oracle Database IBM DB2 PostgreSQL MySQL IBM JDK
  • 103. 103Copyright © 2015 NTT DATA Corporation Customers System Integration Business in Japan (recap) Project Project Project … ProjectProjectProject A number of environments are demanded to support!!! OpenJDK Oracle JDK Apache Tomcat IBM WebSphere Application Server Fujitsu Interstage Application Server Oracle WebLogic Server JBoss Enterprise Application Platform NEC WebOTX Application Server Cosminexus: Hitachi Application Server Caucho Resin Oracle Database IBM DB2 PostgreSQL MySQL IBM JDK Too hard to test and maintain multiple environments
  • 104. 104Copyright © 2015 NTT DATA Corporation Test environment by Vagrant PostgreSQL Oracle DB2 Tomcat + Oracle JDK 7 Tomcat + Open JDK 7 WebLogic + Oracle JDK 7 JBoss EAP + Open JDK 7 Tomcat + Oracle JDK 8 WebLogic + Oracle JDK 8 Tomcat + Open JDK 8 WAS + IBM JDK 7 JBoss EAP + Open JDK 8 Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile … … Git All environments are reproducible!
  • 105. 105Copyright © 2015 NTT DATA Corporation Test environment by Vagrant PostgreSQL Oracle DB2 Tomcat + Oracle JDK 7 Tomcat + Open JDK 7 WebLogic + Oracle JDK 7 JBoss EAP + Open JDK 7 Tomcat + Oracle JDK 8 WebLogic + Oracle JDK 8 Tomcat + Open JDK 8 WAS + IBM JDK 7 JBoss EAP + Open JDK 8 Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile Vagrantfile … … Git Tested at the combination of each environment before release All environments are reproducible!
  • 106. Copyright © 2015 NTT DATA Corporation 106 Where TERASOLUNA is actually used
  • 107. Copyright © 2015 NTT DATA Corporation 107 Use cases Domain Project Financial Mission critical system of a bank Financial Admission system for credit card member shops Public Sector Mission critical system of a public sector Entertainment User management system Package Package of attendance management system … Current Framework has been already used by 15+ projects Example
  • 108. Copyright © 2015 NTT DATA Corporation 108 Contributions to Spring
  • 109. 109Copyright © 2015 NTT DATA Corporation Our contributions to Spring Spring Framework (16) Spring Security (10) Spring Data (4) SPR-11074 (Resolved) SPR-11669 SPR-11670 (Resolved) SPR-11810 (Resolved) SPR-11821 (Resolved) SPR-11826 SPR-11970 (Resolved) SPR-12229 (Resolved) SPR-12265 (Resolved) SPR-12354 (Resolved) SPR-12442 (Resolved) SPR-12509 (Resolved) SPR-12510 (Resolved) SPR-12743 (Resolved) SPR-12792 (Resolved) SPR-12819 (Resolved) SEC-2403 SEC-2826 (Resolved) SEC-2834 (Resolved) SEC-2835 (Resolved) SEC-2836 SEC-2840 (Resolved) SEC-2880 (Resolved) SEC-2903 SEC-2905 SEC-2910 DATACMNS-377 (Resolved) DATACMSN-379 (Resolved) DATACMNS-408 (Resolved) DATAJPA-473 (Resolved) Vulnerability Reports Bug Reports @ JIRA (~ 2015-04-22) CVE-2014-3625 Directory Traversal in Spring Framework
  • 110. 110Copyright © 2015 NTT DATA Corporation Our contributions to Spring Spring Framework (16) Spring Security (10) Spring Data (4) SPR-11074 (Resolved) SPR-11669 SPR-11670 (Resolved) SPR-11810 (Resolved) SPR-11821 (Resolved) SPR-11826 SPR-11970 (Resolved) SPR-12229 (Resolved) SPR-12265 (Resolved) SPR-12354 (Resolved) SPR-12442 (Resolved) SPR-12509 (Resolved) SPR-12510 (Resolved) SPR-12743 (Resolved) SPR-12792 (Resolved) SPR-12819 (Resolved) SEC-2403 SEC-2826 (Resolved) SEC-2834 (Resolved) SEC-2835 (Resolved) SEC-2836 SEC-2840 (Resolved) SEC-2880 (Resolved) SEC-2903 SEC-2905 SEC-2910 DATACMNS-377 (Resolved) DATACMSN-379 (Resolved) DATACMNS-408 (Resolved) DATAJPA-473 (Resolved) Vulnerability Reports Bug Reports @ JIRA (~ 2015-04-22) CVE-2014-3625 Directory Traversal in Spring Framework We are contributing
  • 111. Copyright © 2015 NTT DATA Corporation 111 Wrap up
  • 112. 112Copyright © 2015 NTT DATA Corporation Wrap up • We have been using Spring Framework. • TERASOLUNA Framework is like a “Packaged Spring”.  Software Stack  Blank Project(Maven Archetype)  Guideline • Spring IO Platform supports TERASOLUNA. • TERASOLUNA solves general development problems. http://terasoluna.org
  • 113. Copyright © 2011 NTT DATA Corporation Copyright © 2015 NTT DATA Corporation TERASOLUNA and "TERASOLuNA" logo are trademarks or registered trademarks of NTT DATA Corporation in Japan and the People's Republic of China.