SlideShare ist ein Scribd-Unternehmen logo
1 von 113
Downloaden Sie, um offline zu lesen
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.

Weitere ähnliche Inhalte

Was ist angesagt?

Care and Feeding of Catalyst Optimizer
Care and Feeding of Catalyst OptimizerCare and Feeding of Catalyst Optimizer
Care and Feeding of Catalyst OptimizerDatabricks
 
分散ストレージソフトウェアCeph・アーキテクチャー概要
分散ストレージソフトウェアCeph・アーキテクチャー概要分散ストレージソフトウェアCeph・アーキテクチャー概要
分散ストレージソフトウェアCeph・アーキテクチャー概要Etsuji Nakai
 
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...NTT DATA Technology & Innovation
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computeAngelo Corsaro
 
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...PROIDEA
 
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介オラクルエンジニア通信
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...NTT DATA Technology & Innovation
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...NTT DATA Technology & Innovation
 
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」Hibino Hisashi
 
コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...
コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...
コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...NTT DATA Technology & Innovation
 
Apache Spark Data Validation
Apache Spark Data ValidationApache Spark Data Validation
Apache Spark Data ValidationDatabricks
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれからksk_ha
 
DevOps - Interview Question.pdf
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdfMinhTrnNht7
 
Productionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job ServerProductionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job ServerEvan Chan
 
Network architecture design for microservices on GCP
Network architecture design for microservices on GCPNetwork architecture design for microservices on GCP
Network architecture design for microservices on GCPRaphaël FRAYSSE
 

Was ist angesagt? (20)

Care and Feeding of Catalyst Optimizer
Care and Feeding of Catalyst OptimizerCare and Feeding of Catalyst Optimizer
Care and Feeding of Catalyst Optimizer
 
分散ストレージソフトウェアCeph・アーキテクチャー概要
分散ストレージソフトウェアCeph・アーキテクチャー概要分散ストレージソフトウェアCeph・アーキテクチャー概要
分散ストレージソフトウェアCeph・アーキテクチャー概要
 
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
 
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
 
Running Apache Spark & Apache Zeppelin in Production
Running Apache Spark & Apache Zeppelin in ProductionRunning Apache Spark & Apache Zeppelin in Production
Running Apache Spark & Apache Zeppelin in Production
 
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
 
Spring notes
Spring notesSpring notes
Spring notes
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
 
OpenStack入門 2016/06/27
OpenStack入門 2016/06/27OpenStack入門 2016/06/27
OpenStack入門 2016/06/27
 
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
 
コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...
コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...
コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
 
Apache Spark Data Validation
Apache Spark Data ValidationApache Spark Data Validation
Apache Spark Data Validation
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
 
Wireguard 実践入門
Wireguard 実践入門Wireguard 実践入門
Wireguard 実践入門
 
DevOps - Interview Question.pdf
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdf
 
Productionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job ServerProductionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job Server
 
Network architecture design for microservices on GCP
Network architecture design for microservices on GCPNetwork architecture design for microservices on GCP
Network architecture design for microservices on GCP
 

Ähnlich wie TERASOLUNA Framework on the Spring IO Platform

ODA Target Markets – Partnering to Win
ODA Target Markets – Partnering to WinODA Target Markets – Partnering to Win
ODA Target Markets – Partnering to WinMarketingArrowECS_CZ
 
The Cloud Foundry Story
The Cloud Foundry StoryThe Cloud Foundry Story
The Cloud Foundry StoryVMware 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 Keynotecornelia davis
 
Let's Talk Mobile
Let's Talk MobileLet's Talk Mobile
Let's Talk MobileChris Muir
 
Final business intelligence in the cloud
Final   business intelligence in the cloudFinal   business intelligence in the cloud
Final business intelligence in the cloudHossam 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 OpenStackBob 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 SOASoftware 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 economyInSync 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 APEXDavidPeake15
 
Cloud Native Application Framework
Cloud Native Application FrameworkCloud Native Application Framework
Cloud Native Application FrameworkVMware 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 OnlineWebWorks
 
Modern App Development with Oracle Cloud
Modern App Development with Oracle CloudModern App Development with Oracle Cloud
Modern App Development with Oracle CloudJuan Carlos Ruiz Rico
 
Oracle Primavera Roadmap 2015
Oracle Primavera Roadmap 2015Oracle Primavera Roadmap 2015
Oracle Primavera Roadmap 2015p6academy
 
Effective IoT System on Openstack
Effective IoT System on OpenstackEffective IoT System on Openstack
Effective IoT System on OpenstackTakashi 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 AppPaulo Alberto Simoes ∴
 

Ähnlich wie TERASOLUNA Framework on the Spring IO Platform (20)

Korejanai Story
Korejanai StoryKorejanai Story
Korejanai Story
 
ODA Target Markets – Partnering to Win
ODA Target Markets – Partnering to WinODA Target Markets – Partnering to Win
ODA Target Markets – Partnering to Win
 
The Cloud Foundry Story
The Cloud Foundry StoryThe Cloud Foundry Story
The Cloud Foundry Story
 
Why cloud?
Why cloud?Why cloud?
Why cloud?
 
Pivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow KeynotePivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow Keynote
 
Let's Talk Mobile
Let's Talk MobileLet's Talk Mobile
Let's Talk Mobile
 
Final business intelligence in the cloud
Final   business intelligence in the cloudFinal   business intelligence in the cloud
Final business intelligence in the cloud
 
Oracle Mobile Cloud Service
Oracle Mobile Cloud ServiceOracle Mobile Cloud Service
Oracle Mobile Cloud Service
 
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
 
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...
 
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
 
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
 
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
 
Cloud Native Application Framework
Cloud Native Application FrameworkCloud Native Application Framework
Cloud Native Application Framework
 
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
 
Modern App Development with Oracle Cloud
Modern App Development with Oracle CloudModern App Development with Oracle Cloud
Modern App Development with Oracle Cloud
 
Oracle Primavera Roadmap 2015
Oracle Primavera Roadmap 2015Oracle Primavera Roadmap 2015
Oracle Primavera Roadmap 2015
 
Effective IoT System on Openstack
Effective IoT System on OpenstackEffective IoT System on Openstack
Effective IoT System on Openstack
 
3.1 oracle salonika
3.1 oracle salonika3.1 oracle salonika
3.1 oracle salonika
 
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
 

Mehr von 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 Netflixapkiban
 
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
 

Mehr von apkiban (12)

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

Kürzlich hochgeladen

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 

Kürzlich hochgeladen (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 

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.