SlideShare a Scribd company logo
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Configuration for Java EE
and the Cloud
Dmitry Kornilov
dmitry.kornilov@oracle.com
@m0mus
September 21, 2016
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Safe Harbor Statement
The following is intended to outline our general product direction. It is intended for
information purposes only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon
in making purchasing decisions. The development, release, and timing of any features or
functionality described for Oracle’s products remains at the sole discretion of Oracle.
2
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
Introduction
Problem Definition
JSR Proposal & Features
Sample Use Case
Q & A
1
2
3
4
3
5
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Introduction
4
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
History & Introduction
• 2003 – Apache Commons Configuration
• 2009 – Spring 3.0
• 2011 – Apache DeltaSpike
• 2013 – Mike Keith on JavaOne
• 2014 – Java EE 8 Survey
• 2014 – Netflix Archaius
• 2015 – Attempt to submit a JSR
• 2015 – Apache Tamaya
5
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
History & Introduction
• 2003 – Apache Commons Configuration
• 2009 – Spring 3.0
• 2011 – Apache DeltaSpike
• 2013 – Mike Keith on JavaOne
• 2014 – Java EE 8 Survey
• 2014 – Netflix Archaius
• 2015 – Attempt to submit a JSR
• 2015 – Apache Tamaya
6
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
History & Introduction
• 2003 – Apache Commons Configuration
• 2009 – Spring 3.0
• 2011 – Apache DeltaSpike
• 2013 – Mike Keith on JavaOne
• 2014 – Java EE 8 Survey
• 2014 – Netflix Archaius
• 2015 – Attempt to submit a JSR
• 2015 – Apache Tamaya
7
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
History & Introduction
• 2003 – Apache Commons Configuration
• 2009 – Spring 3.0
• 2011 – Apache DeltaSpike
• 2013 – Mike Keith on JavaOne
• 2014 – Java EE 8 Survey
• 2014 – Netflix Archaius
• 2015 – Attempt to submit a JSR
• 2015 – Apache Tamaya
8
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
History & Introduction
• 2003 – Apache Commons Configuration
• 2009 – Spring 3.0
• 2011 – Apache DeltaSpike
• 2013 – Mike Keith on JavaOne
• 2014 – Java EE 8 Survey
• 2014 – Netflix Archaius
• 2015 – Attempt to submit a JSR
• 2015 – Apache Tamaya
9
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
History & Introduction
• 2003 – Apache Commons Configuration
• 2009 – Spring 3.0
• 2011 – Apache DeltaSpike
• 2013 – Mike Keith on JavaOne
• 2014 – Java EE 8 Survey
• 2014 – Netflix Archaius
• 2015 – Attempt to submit a JSR
• 2015 – Apache Tamaya
10
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
History & Introduction
• 2003 – Apache Commons Configuration
• 2009 – Spring 3.0
• 2011 – Apache DeltaSpike
• 2013 – Mike Keith on JavaOne
• 2014 – Java EE 8 Survey
• 2014 – Netflix Archaius
• 2015 – Attempt to submit a JSR
• 2015 – Apache Tamaya
11
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
History & Introduction
• 2003 – Apache Commons Configuration
• 2009 – Spring 3.0
• 2011 – Apache DeltaSpike
• 2013 – Mike Keith on JavaOne
• 2014 – Java EE 8 Survey
• 2014 – Netflix Archaius
• 2015 – Attempt to submit a JSR
• 2015 – Apache Tamaya
12
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
History & Introduction
• 2003 – Apache Commons Configuration
• 2009 – Spring 3.0
• 2011 – Apache DeltaSpike
• 2013 – Mike Keith at JavaOne
• 2014 – Java EE 8 Survey
• 2014 – Netflix Archaius
• 2015 – Attempt to submit a JSR
• 2015 – Apache Tamaya
13
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 14
DZone and Java EE Guardians Survey Results
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Problem Definition
15
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
What is Configuration?
16
Application server setup?
Runtime parameters?
Deployment descriptors?
Parameters of used frameworks?
Deployment scripts? Used resources?
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Problems
• Lack of standard configuration API
• Configuring multiple instances
• Deploying on different environments
• Change configuration without
redeployment
• Configuration of decoupled
microservices
17
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Problems
• Lack of standard configuration API
• Configuring multiple instances
• Deploying on different environments
• Change configuration without
redeployment
• Configuration of decoupled
microservices
18
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Problems
• Lack of standard configuration API
• Configuring multiple instances
• Deploying on different environments
• Change configuration without
redeployment
• Configuration of decoupled
microservices
19
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Problems
• Lack of standard configuration API
• Configuring multiple instances
• Deploying on different environments
• Change configuration without
redeployment
• Configuration of decoupled
microservices
20
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Problems
• Lack of standard configuration API
• Configuring multiple instances
• Deploying on different environments
• Change configuration without
redeployment
• Configuration of decoupled
microservices
21
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
JSR Proposal
22
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Configuration Definition
• Application centric
• Not modifiable by application
• Consists of key/value pairs
• Keys and values are strings
• Flat structure
23
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Java EE Configuration
• Unified API
• Externalized configuration
• Support of multiple configuration sources
– Properties, xml and json formats support out of the box
• Layering and overrides
• Optional configuration descriptor
• Dynamic configuration
• Integration with other Java EE frameworks
24
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Java EE Configuration
• Unified API
• Externalized configuration
• Support of multiple configuration sources
– Properties, xml and json formats support out of the box
• Layering and overrides
25
Java EE 8
• Optional configuration descriptor
• Dynamic configuration
• Integration with other Java EE frameworks
Java EE Next
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Roadmap
26
Submit JSR
Review JSR
Expert Group Formation
Sep
2016
Oct
2016
Nov
2016
Dec
2016
Jan
2017
Feb
2017
Mar
2017
Apr
2017
May
2017
June
2017
July
2017
Aug
2017
Sep
2017
Early Draft
Public Draft
Proposed
Final Draft
Final Release
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
JSR Features (Java EE 8)
27
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
API
28
a=JavaOne
b=9
c=2016
Config config = ConfigProvider.getConfig();
// Returns "JavaOne"
String foo = config.getProperty("a");
// Returns string "9"
String fooBar = config.getProperty("b");
// Returns null
String notExists = config.getProperty("not.exist");
// Returns string "default"
String notExistsDefault = config.getProperty("not.exist","default");
// Returns number 2016
Long fooBarBaz = config.getProperty("c", Long.class);
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Converters
29
• Type safe access to values
• Built-in converters for:
– Primitive Wrappers
– BigDecimal, BigInteger, URL, URI
– Date, Calendar
– java.time.*
public interface Converter<Target> {
Target convert(String value);
}
public class FooConverter
implements Converter<Foo> {
public Foo convert(String value) {
...
}
}
Config cfg = ConfigProvider.builder()
.withConverters(new FooConverter())
.build();
Foo foo = cfg.getProperty("foo", Foo.class);
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Configuration Sources
30
• Multiple configuration sources
• Supported configuration sources:
– System properties
– Runtime parameters
– File (Properties, xml, json)
– Resource on a web server
• Pluggable architecture
– Custom sources (like DB)
• Configuration sources are ordered
Java EE
Config
XML JSONprop
DBweb
Application
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Layering and Overrides
31
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Default Configuration Sources
32
Java EE Config
• System properties (ordinal=400)
• Environment properties (ordinal=300)
• /META-INF/config.properties (ordinal=100)
• /META-INF/config.xml (ordinal=100)
• /META-INF/config.json (ordinal=100)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Defining Configuration Sources
33
• Using config.sources runtime parameter
• Using API
• Using config-sources.xml file
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Customizing Configuration Sources
34
Using config.sources runtime parameter
# Single file source with default ordinal (200)
java –jar my.jar –Dconfig.source=/conf/myconfig.properties
# Web source with default ordinal (200)
java –jar my.jar –Dconfig.source=http://shared/global.xml
# Two sources. Ordinals are 200 and 199
java –jar my.jar –Dconfig.source=http://shared/global.xml,/conf/my.json
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Customizing Configuration Sources
35
Using API
Config config = ConfigProvider.builder()
.addSource(new EnvSource(), 300)
.addSource(new FileSource("/cfg/config.properties"), 200)
.addSource(new WebSource("http://localhost:8080/config.xml"), 100)
.addSource(new MyCustomSource())
.build();
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
config-sources.xml
36
• File with defined schema using to define configuration sources and their
metadata
• Default location /META-INF/config-sources.xml
• Can be placed outside of the application package
• Define using runtime parameter
• Define using API
java –jar my.jar –Dconfig.sources=http://sharedhost/config-sources.xml
Config c = ConfigProvider.builder()
.withSources("/cfg/config-sources.xml")
.build();
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Sample config-sources.xml
37
Simple
With ordinals
<config-sources>
<source>http://shared:8080/config.xml</source>
<source>/cfg/myconf.json</source>
</config-sources>
<config-sources>
<source ordinal="500">http://shared:8080/config.xml</source>
<source ordinal="450">/cfg/myconf.json</source>
</config-sources>
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Sample config-sources.xml
38
Custom
<config-sources>
<source>http://shared:8080/config.xml</source>
<source type="com.oracle.config.CloudConfig">
<user>user</user>
<password>secret</password>
</source>
</config-sources>
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
JSR Features (Java EE Next)
39
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Integration With Other Java EE Frameworks
• Read configuration from
Java EE Config
• Store configuration as part of
whole application configuration
• Use standard API
40
Java EE
Config
Application
Configuration
Application
JPA
Configuration
JAX-RS
Configuration
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Configuration Descriptor
41
• File with defined format
• Defines all configurable properties
and metadata
• Optional
• It’s not XML-Schema!
<config-descriptor>
<property name="a"/>
<property name="b" default=”valueB"/>
<property name="c" mutable="false"/>
<property name="d"/>
</config-descriptor>
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Immutability
42
Mutable Immutable
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Dynamic Configuration
43
• Polling framework
• Expressions
• Property Resolvers
• Configuration Context
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Polling
44
// Defining polling using API
Config cfg = ConfigProvider.builder()
.withSource(new FileSource("/cfg/config.xml"), 200, Duration.ofSeconds(30))
.withSource(new WebSource("http://shared/config.xml"), 100, Duration.ofMinutes(1))
.build();
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Polling
45
// Defining polling using API
Config cfg = ConfigProvider.builder()
.withSource(new FileSource("/cfg/config.xml"), 200, Duration.ofSeconds(30))
.withSource(new WebSource("http://shared/config.xml"), 100, Duration.ofMinutes(1))
.build();
Ordinal Refresh IntervalLocation
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Polling
46
<config-sources refresh-rate="300000">
<source ordinal="200" refresh-rate="30000">/cfg/config.xml</source>
<source ordinal="100" refresh-rate="60000">http://shared/config.xml</source>
</config-sources>
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Polling
47
<config-sources refresh-rate="300000">
<source ordinal="200" refresh-rate="30000">/cfg/config.xml</source>
<source ordinal="100" refresh-rate="60000">http://shared/config.xml</source>
</config-sources>
Sources list
refresh interval
(5 min)
Source 1 refresh
interval (30 sec) Source 2 refresh
interval (1 min)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Expressions
48
• EL like expressions evaluated at runtime to a property value
• Property substitution
• Conditional configuration sources
foo=${some.other.value}
bar=${foo + 10}
baz=${foo * bar}
<config-sources>
<source>//cfg/config.properties</source>
<source enabled=”${app==‘ios’}”>
//cfg/cust_ios.properties
</source>
</config-sources>
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Property Resolvers
49
• Flexible mechanism allowing
executing user code in configuration
expressions
• Can be used to inject cloud
resources
rating.service.url=${eureka:rating.url}
cust.db=${cloud:cust.db}
<config-sources>
<resolvers>
<resolver name=”cloud”>
<class>com.example.CloudResolver</class>
<username>user</username>
<password>secret</password>
</resolver>
</resolvers>
<!-- ... -->
</config-sources>
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Configuration Context
50
• Allows application setting variables which can be used in configuration
expressions
• Example: geographical zone, application type, etc.
<config-sources>
<source>//cfg/config.properties</source>
<source enabled=”${app==‘ios’}”>
//cfg/cust_ios.properties
</source>
</config-sources>
Config config = ConfigProvider.getConfig();
ConfigContext context = ConfigContext.builder().addProperty("app", "ios").build();
Long prop = config.getPropertyWithContext("prop", context);
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Sample Use Case
51
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Blacklist Service
Financial Records
Service
Public
Registry
DBBlacklist Service
Financial Records
Service
Public
Registry
DB
Client Rating
Confidential – Oracle Internal/Restricted/Highly Restricted 52
Customer
Service
Rating Service
• https://github.com/psplinakis/ClientRating
• Consists of 4 microservices communicating to each other using RESTful API
• Each microservice is developed by different team which define its
configuration and responsible for its deployment
DB
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Client Rating
Confidential – Oracle Internal/Restricted/Highly Restricted 53
Customer
Service
Rating ServiceDB
GET http://custhost/custservice/web/getCustomers
[
{cust_id: 1, rating: 9},
{cust_id: 2, rating: 5}
]
GET http://ratinghost/ratingservice/getRating/1
rating: 9
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Client Rating
Confidential – Oracle Internal/Restricted/Highly Restricted 54
cust-db
rating-url
records-count
log-level
blacklist-url
findata-url
log-level
Customer
Service
Rating ServiceDB
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Client Rating
Confidential – Oracle Internal/Restricted/Highly Restricted 55
<config-descriptor>
<context-property name=”app”/>
<property name=”cust-db” mutable="false"/>
<property name=”rating-url"/>
<property name=”records-count" default=”100"/>
<property name=”log-level" default=”INFO"/>
</config-descriptor>
<config-descriptor>
<property name=”blacklist-url”/>
<property name=”findata-url"/>
<property name=”log-level" default=”INFO"/>
</config-descriptor>
Customer
Service
Rating ServiceDB
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Client Rating
<config-descriptor>
<context-property name=”app”/>
<property name=”cust-db” mutable="false"/>
<property name=”rating-url"/>
<property name=”records-count" default=”100"/>
<property name=”log-level" default=”INFO"/>
</config-descriptor>
<config-descriptor>
<property name=”blacklist-url”/>
<property name=”findata-url"/>
<property name=”log-level" default=”INFO"/>
</config-descriptor>
cust-db=mysql://dbhost:3306/cust_db
rating-url=http://ratinghost/ratingservice"
blacklist-url=http://blhost/blservice
findata-url=http://findatahost/ratingservice
log-level=INFO
records-count=30
log-level=WARN
Global configuration (global.properties)
Microservice configuration (cust_svc.properties) Microservice configuration (rating_svc.properties)
Override only for iOS application (cust_ios.properties)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Client Rating
Confidential – Oracle Internal/Restricted/Highly Restricted 57
<config-sources>
<source refresh-rate=”6000” enabled=”${app==‘ios’}”>
//cfg/cust_ios.properties
</source>
<source>
//cfg/cust_svc.properties
</source>
<source refresh-rate=”6000”>
http://globalhost/global.properties
</source>
</config-sources>
<config-sources>
<source>
//cfg/rating_svc.properties
</source>
<source refresh-rate=”6000”>
http://globalhost/global.properties
</source>
</config-sources>
Customer
Service
Rating ServiceDB
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Client Rating
Confidential – Oracle Internal/Restricted/Highly Restricted 58
global.properties rating_svc.propertiescust_svc.propertiescust_ios.properties
Customer
Service
Rating ServiceDB
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Cloud Configuration Service Idea
Confidential – Oracle Internal/Restricted/Highly Restricted 59
Customer
Service
Rating Service
DB
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Cloud Configuration Service
60
• Service in the cloud
• Distributed and high-available
configuration storage
• Pluggable to Java EE Config
• Integration with other cloud services
• REST and web API
• Versioning, history, security
Customer
Service
Rating Service
DB
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Next Steps
• Take the survey
– http://glassfish.org/survey
• Send technical comments to
– users@javaee-spec.java.net
• Join the JCP – come to Hackergarden in Java Hub
– https://jcp.org/en/participation/membership_drive
• Join or track the JSRs as they progress
– https://java.net/projects/javaee-spec/pages/Specifications
• Adopt-a-JSR
– https://community.oracle.com/community/java/jcp/adopt-a-jsr
Give us your feedback
61
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Where to Learn More at JavaOne
62
Session Number Session Title Day / Time
CON7977 Java EE Next – HTTP/2 and REST Wednesday 1:00 p.m.
CON6077 The Illusion of Statelessness Wednesday 4:30 p.m.
CON 7981 JSF 2.3 Thursday 11:30 a.m.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Q & A
63
Configuration for Java EE and the Cloud

More Related Content

What's hot

What’s new in JSR 367 Java API for JSON Binding
What’s new in JSR 367 Java API for JSON BindingWhat’s new in JSR 367 Java API for JSON Binding
What’s new in JSR 367 Java API for JSON Binding
Dmitry Kornilov
 
Configure Your Projects with Apache Tamaya
Configure Your Projects with Apache TamayaConfigure Your Projects with Apache Tamaya
Configure Your Projects with Apache Tamaya
Anatole Tresch
 
JSONB introduction and comparison with other frameworks
JSONB introduction and comparison with other frameworksJSONB introduction and comparison with other frameworks
JSONB introduction and comparison with other frameworks
Dmitry Kornilov
 
Aneez Hasan_Resume
Aneez Hasan_ResumeAneez Hasan_Resume
Aneez Hasan_Resume
Aneez Hasan Mohamed Rafi
 
Node.js und die Oracle-Datenbank
Node.js und die Oracle-DatenbankNode.js und die Oracle-Datenbank
Node.js und die Oracle-Datenbank
Carsten Czarski
 
APEX Office Hours Interactive Grid Deep Dive
APEX Office Hours Interactive Grid Deep DiveAPEX Office Hours Interactive Grid Deep Dive
APEX Office Hours Interactive Grid Deep Dive
JohnSnyders
 
A first Draft to Java Configuration
A first Draft to Java ConfigurationA first Draft to Java Configuration
A first Draft to Java Configuration
Anatole Tresch
 
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management CloudeProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
Marco Gralike
 
Introduction to MySQL Document Store
Introduction to MySQL Document StoreIntroduction to MySQL Document Store
Introduction to MySQL Document Store
Frederic Descamps
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
Logico
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
David Delabassee
 
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonJAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
Arun Gupta
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
Logico
 
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Frederic Descamps
 
JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?
Arun Gupta
 
Websocket 1.0
Websocket 1.0Websocket 1.0
Websocket 1.0
Arun Gupta
 
Oracle RAC 12c Rel. 2 Under the Hood and Best Practices
Oracle RAC 12c Rel. 2 Under the Hood and Best PracticesOracle RAC 12c Rel. 2 Under the Hood and Best Practices
Oracle RAC 12c Rel. 2 Under the Hood and Best Practices
Markus Michalewicz
 
Oracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG EditionOracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG Edition
Jeff Smith
 
The Evolution of Java Persistence
The Evolution of Java PersistenceThe Evolution of Java Persistence
The Evolution of Java Persistence
Shaun Smith
 
Practical RESTful Persistence
Practical RESTful PersistencePractical RESTful Persistence
Practical RESTful Persistence
Shaun Smith
 

What's hot (20)

What’s new in JSR 367 Java API for JSON Binding
What’s new in JSR 367 Java API for JSON BindingWhat’s new in JSR 367 Java API for JSON Binding
What’s new in JSR 367 Java API for JSON Binding
 
Configure Your Projects with Apache Tamaya
Configure Your Projects with Apache TamayaConfigure Your Projects with Apache Tamaya
Configure Your Projects with Apache Tamaya
 
JSONB introduction and comparison with other frameworks
JSONB introduction and comparison with other frameworksJSONB introduction and comparison with other frameworks
JSONB introduction and comparison with other frameworks
 
Aneez Hasan_Resume
Aneez Hasan_ResumeAneez Hasan_Resume
Aneez Hasan_Resume
 
Node.js und die Oracle-Datenbank
Node.js und die Oracle-DatenbankNode.js und die Oracle-Datenbank
Node.js und die Oracle-Datenbank
 
APEX Office Hours Interactive Grid Deep Dive
APEX Office Hours Interactive Grid Deep DiveAPEX Office Hours Interactive Grid Deep Dive
APEX Office Hours Interactive Grid Deep Dive
 
A first Draft to Java Configuration
A first Draft to Java ConfigurationA first Draft to Java Configuration
A first Draft to Java Configuration
 
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management CloudeProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
 
Introduction to MySQL Document Store
Introduction to MySQL Document StoreIntroduction to MySQL Document Store
Introduction to MySQL Document Store
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
 
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonJAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
 
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
 
JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?
 
Websocket 1.0
Websocket 1.0Websocket 1.0
Websocket 1.0
 
Oracle RAC 12c Rel. 2 Under the Hood and Best Practices
Oracle RAC 12c Rel. 2 Under the Hood and Best PracticesOracle RAC 12c Rel. 2 Under the Hood and Best Practices
Oracle RAC 12c Rel. 2 Under the Hood and Best Practices
 
Oracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG EditionOracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG Edition
 
The Evolution of Java Persistence
The Evolution of Java PersistenceThe Evolution of Java Persistence
The Evolution of Java Persistence
 
Practical RESTful Persistence
Practical RESTful PersistencePractical RESTful Persistence
Practical RESTful Persistence
 

Viewers also liked

20161119 java one-feedback_osaka
20161119 java one-feedback_osaka20161119 java one-feedback_osaka
20161119 java one-feedback_osaka
Takashi Ito
 
20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka
Takashi Ito
 
Nanoservices and Microservices with Java
Nanoservices and Microservices with JavaNanoservices and Microservices with Java
Nanoservices and Microservices with Java
Eberhard Wolff
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 Recipes
Josh Juneau
 
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurJava EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil Gaur
Takashi Ito
 
Cloud Native Application Framework
Cloud Native Application FrameworkCloud Native Application Framework
Cloud Native Application Framework
VMware Tanzu
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedback
Takashi Ito
 
Salesforce Einstein - SaaS企業のAI戦略とテクノロジ -
Salesforce Einstein - SaaS企業のAI戦略とテクノロジ - Salesforce Einstein - SaaS企業のAI戦略とテクノロジ -
Salesforce Einstein - SaaS企業のAI戦略とテクノロジ -
Mitch Okamoto
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for Microservices
Eberhard Wolff
 
Serverless Revolution
Serverless RevolutionServerless Revolution
Serverless Revolution
Keisuke Nishitani
 
Introduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application ArchitectureIntroduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application Architecture
David Currie
 
AWS Re:Invent - High Availability Architecture at Netflix
AWS Re:Invent - High Availability Architecture at NetflixAWS Re:Invent - High Availability Architecture at Netflix
AWS Re:Invent - High Availability Architecture at Netflix
Adrian Cockcroft
 
再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜
再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜
再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜
Mitch Okamoto
 
Distributed architecture in a cloud native microservices ecosystem
Distributed architecture in a cloud native microservices ecosystemDistributed architecture in a cloud native microservices ecosystem
Distributed architecture in a cloud native microservices ecosystem
Zhenzhong Xu
 
Patterns of Cloud Native Architecture
Patterns of Cloud Native ArchitecturePatterns of Cloud Native Architecture
Patterns of Cloud Native Architecture
Andrew Shafer
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
Etsuji Nakai
 

Viewers also liked (16)

20161119 java one-feedback_osaka
20161119 java one-feedback_osaka20161119 java one-feedback_osaka
20161119 java one-feedback_osaka
 
20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka
 
Nanoservices and Microservices with Java
Nanoservices and Microservices with JavaNanoservices and Microservices with Java
Nanoservices and Microservices with Java
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 Recipes
 
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurJava EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil Gaur
 
Cloud Native Application Framework
Cloud Native Application FrameworkCloud Native Application Framework
Cloud Native Application Framework
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedback
 
Salesforce Einstein - SaaS企業のAI戦略とテクノロジ -
Salesforce Einstein - SaaS企業のAI戦略とテクノロジ - Salesforce Einstein - SaaS企業のAI戦略とテクノロジ -
Salesforce Einstein - SaaS企業のAI戦略とテクノロジ -
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for Microservices
 
Serverless Revolution
Serverless RevolutionServerless Revolution
Serverless Revolution
 
Introduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application ArchitectureIntroduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application Architecture
 
AWS Re:Invent - High Availability Architecture at Netflix
AWS Re:Invent - High Availability Architecture at NetflixAWS Re:Invent - High Availability Architecture at Netflix
AWS Re:Invent - High Availability Architecture at Netflix
 
再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜
再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜
再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜
 
Distributed architecture in a cloud native microservices ecosystem
Distributed architecture in a cloud native microservices ecosystemDistributed architecture in a cloud native microservices ecosystem
Distributed architecture in a cloud native microservices ecosystem
 
Patterns of Cloud Native Architecture
Patterns of Cloud Native ArchitecturePatterns of Cloud Native Architecture
Patterns of Cloud Native Architecture
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 

Similar to Configuration for Java EE and the Cloud

Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The Cloud
Bruno Borges
 
MySQL Fabric
MySQL FabricMySQL Fabric
MySQL Fabric
Mark Swarbrick
 
Java API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateJava API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and update
Martin Grebac
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQL
Ted Wennmark
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and Architecture
JavaDayUA
 
A-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator OverviewA-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator Overview
Steven Davelaar
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future Keynote
Simon Ritter
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevilla
Trisha Gee
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth Slides
Edward Burns
 
Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl
Jeff Smith
 
KSCOPE Cloud Services and the Self Service Portal
KSCOPE Cloud Services  and the Self Service PortalKSCOPE Cloud Services  and the Self Service Portal
KSCOPE Cloud Services and the Self Service Portal
Kellyn Pot'Vin-Gorman
 
Oracle Database Cloud Service
Oracle Database Cloud ServiceOracle Database Cloud Service
Oracle Database Cloud Service
Jean-Philippe PINTE
 
MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014
Sanjay Manwani
 
Oracle Cloud
Oracle CloudOracle Cloud
Oracle Cloud
MarketingArrowECS_CZ
 
MySQL Fabric - High Availability & Automated Sharding for MySQL
MySQL Fabric - High Availability & Automated Sharding for MySQLMySQL Fabric - High Availability & Automated Sharding for MySQL
MySQL Fabric - High Availability & Automated Sharding for MySQL
Ted Wennmark
 
Japanese Introduction to Oracle JET
Japanese Introduction to Oracle JETJapanese Introduction to Oracle JET
Japanese Introduction to Oracle JET
Geertjan Wielenga
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
Wolfgang Weigend
 
OOW16 - Oracle E-Business Suite Information Discovery: Your Journey to the Cl...
OOW16 - Oracle E-Business Suite Information Discovery: Your Journey to the Cl...OOW16 - Oracle E-Business Suite Information Discovery: Your Journey to the Cl...
OOW16 - Oracle E-Business Suite Information Discovery: Your Journey to the Cl...
vasuballa
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
CodeOps Technologies LLP
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
Wolfgang Weigend
 

Similar to Configuration for Java EE and the Cloud (20)

Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The Cloud
 
MySQL Fabric
MySQL FabricMySQL Fabric
MySQL Fabric
 
Java API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateJava API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and update
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQL
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and Architecture
 
A-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator OverviewA-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator Overview
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future Keynote
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevilla
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth Slides
 
Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl
 
KSCOPE Cloud Services and the Self Service Portal
KSCOPE Cloud Services  and the Self Service PortalKSCOPE Cloud Services  and the Self Service Portal
KSCOPE Cloud Services and the Self Service Portal
 
Oracle Database Cloud Service
Oracle Database Cloud ServiceOracle Database Cloud Service
Oracle Database Cloud Service
 
MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014
 
Oracle Cloud
Oracle CloudOracle Cloud
Oracle Cloud
 
MySQL Fabric - High Availability & Automated Sharding for MySQL
MySQL Fabric - High Availability & Automated Sharding for MySQLMySQL Fabric - High Availability & Automated Sharding for MySQL
MySQL Fabric - High Availability & Automated Sharding for MySQL
 
Japanese Introduction to Oracle JET
Japanese Introduction to Oracle JETJapanese Introduction to Oracle JET
Japanese Introduction to Oracle JET
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 
OOW16 - Oracle E-Business Suite Information Discovery: Your Journey to the Cl...
OOW16 - Oracle E-Business Suite Information Discovery: Your Journey to the Cl...OOW16 - Oracle E-Business Suite Information Discovery: Your Journey to the Cl...
OOW16 - Oracle E-Business Suite Information Discovery: Your Journey to the Cl...
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
 

More from Dmitry Kornilov

Helidon Nima - Loom based microserfice framework.pptx
Helidon Nima - Loom based microserfice framework.pptxHelidon Nima - Loom based microserfice framework.pptx
Helidon Nima - Loom based microserfice framework.pptx
Dmitry Kornilov
 
Jakarta EE: Today and Tomorrow
Jakarta EE: Today and TomorrowJakarta EE: Today and Tomorrow
Jakarta EE: Today and Tomorrow
Dmitry Kornilov
 
Building Cloud-Native Applications with Helidon
Building Cloud-Native Applications with HelidonBuilding Cloud-Native Applications with Helidon
Building Cloud-Native Applications with Helidon
Dmitry Kornilov
 
Nonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SENonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SE
Dmitry Kornilov
 
JSON Support in Jakarta EE: Present and Future
JSON Support in Jakarta EE: Present and FutureJSON Support in Jakarta EE: Present and Future
JSON Support in Jakarta EE: Present and Future
Dmitry Kornilov
 
Building cloud native microservices with project Helidon
Building cloud native microservices with project HelidonBuilding cloud native microservices with project Helidon
Building cloud native microservices with project Helidon
Dmitry Kornilov
 
Developing cloud-native microservices using project Helidon
Developing cloud-native microservices using project HelidonDeveloping cloud-native microservices using project Helidon
Developing cloud-native microservices using project Helidon
Dmitry Kornilov
 
From Java EE to Jakarta EE
From Java EE to Jakarta EEFrom Java EE to Jakarta EE
From Java EE to Jakarta EE
Dmitry Kornilov
 
Helidon: Java Libraries for Writing Microservices
Helidon: Java Libraries for Writing MicroservicesHelidon: Java Libraries for Writing Microservices
Helidon: Java Libraries for Writing Microservices
Dmitry Kornilov
 
Introduction to Yasson
Introduction to YassonIntroduction to Yasson
Introduction to Yasson
Dmitry Kornilov
 
JSON Support in Java EE 8
JSON Support in Java EE 8JSON Support in Java EE 8
JSON Support in Java EE 8
Dmitry Kornilov
 

More from Dmitry Kornilov (11)

Helidon Nima - Loom based microserfice framework.pptx
Helidon Nima - Loom based microserfice framework.pptxHelidon Nima - Loom based microserfice framework.pptx
Helidon Nima - Loom based microserfice framework.pptx
 
Jakarta EE: Today and Tomorrow
Jakarta EE: Today and TomorrowJakarta EE: Today and Tomorrow
Jakarta EE: Today and Tomorrow
 
Building Cloud-Native Applications with Helidon
Building Cloud-Native Applications with HelidonBuilding Cloud-Native Applications with Helidon
Building Cloud-Native Applications with Helidon
 
Nonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SENonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SE
 
JSON Support in Jakarta EE: Present and Future
JSON Support in Jakarta EE: Present and FutureJSON Support in Jakarta EE: Present and Future
JSON Support in Jakarta EE: Present and Future
 
Building cloud native microservices with project Helidon
Building cloud native microservices with project HelidonBuilding cloud native microservices with project Helidon
Building cloud native microservices with project Helidon
 
Developing cloud-native microservices using project Helidon
Developing cloud-native microservices using project HelidonDeveloping cloud-native microservices using project Helidon
Developing cloud-native microservices using project Helidon
 
From Java EE to Jakarta EE
From Java EE to Jakarta EEFrom Java EE to Jakarta EE
From Java EE to Jakarta EE
 
Helidon: Java Libraries for Writing Microservices
Helidon: Java Libraries for Writing MicroservicesHelidon: Java Libraries for Writing Microservices
Helidon: Java Libraries for Writing Microservices
 
Introduction to Yasson
Introduction to YassonIntroduction to Yasson
Introduction to Yasson
 
JSON Support in Java EE 8
JSON Support in Java EE 8JSON Support in Java EE 8
JSON Support in Java EE 8
 

Recently uploaded

在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
kalichargn70th171
 
Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
Massimo Artizzu
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.
AnkitaPandya11
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 

Recently uploaded (20)

在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
 
Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 

Configuration for Java EE and the Cloud

  • 1. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Configuration for Java EE and the Cloud Dmitry Kornilov dmitry.kornilov@oracle.com @m0mus September 21, 2016
  • 2. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 2
  • 3. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Program Agenda Introduction Problem Definition JSR Proposal & Features Sample Use Case Q & A 1 2 3 4 3 5
  • 4. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Introduction 4
  • 5. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | History & Introduction • 2003 – Apache Commons Configuration • 2009 – Spring 3.0 • 2011 – Apache DeltaSpike • 2013 – Mike Keith on JavaOne • 2014 – Java EE 8 Survey • 2014 – Netflix Archaius • 2015 – Attempt to submit a JSR • 2015 – Apache Tamaya 5
  • 6. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | History & Introduction • 2003 – Apache Commons Configuration • 2009 – Spring 3.0 • 2011 – Apache DeltaSpike • 2013 – Mike Keith on JavaOne • 2014 – Java EE 8 Survey • 2014 – Netflix Archaius • 2015 – Attempt to submit a JSR • 2015 – Apache Tamaya 6
  • 7. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | History & Introduction • 2003 – Apache Commons Configuration • 2009 – Spring 3.0 • 2011 – Apache DeltaSpike • 2013 – Mike Keith on JavaOne • 2014 – Java EE 8 Survey • 2014 – Netflix Archaius • 2015 – Attempt to submit a JSR • 2015 – Apache Tamaya 7
  • 8. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | History & Introduction • 2003 – Apache Commons Configuration • 2009 – Spring 3.0 • 2011 – Apache DeltaSpike • 2013 – Mike Keith on JavaOne • 2014 – Java EE 8 Survey • 2014 – Netflix Archaius • 2015 – Attempt to submit a JSR • 2015 – Apache Tamaya 8
  • 9. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | History & Introduction • 2003 – Apache Commons Configuration • 2009 – Spring 3.0 • 2011 – Apache DeltaSpike • 2013 – Mike Keith on JavaOne • 2014 – Java EE 8 Survey • 2014 – Netflix Archaius • 2015 – Attempt to submit a JSR • 2015 – Apache Tamaya 9
  • 10. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | History & Introduction • 2003 – Apache Commons Configuration • 2009 – Spring 3.0 • 2011 – Apache DeltaSpike • 2013 – Mike Keith on JavaOne • 2014 – Java EE 8 Survey • 2014 – Netflix Archaius • 2015 – Attempt to submit a JSR • 2015 – Apache Tamaya 10
  • 11. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | History & Introduction • 2003 – Apache Commons Configuration • 2009 – Spring 3.0 • 2011 – Apache DeltaSpike • 2013 – Mike Keith on JavaOne • 2014 – Java EE 8 Survey • 2014 – Netflix Archaius • 2015 – Attempt to submit a JSR • 2015 – Apache Tamaya 11
  • 12. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | History & Introduction • 2003 – Apache Commons Configuration • 2009 – Spring 3.0 • 2011 – Apache DeltaSpike • 2013 – Mike Keith on JavaOne • 2014 – Java EE 8 Survey • 2014 – Netflix Archaius • 2015 – Attempt to submit a JSR • 2015 – Apache Tamaya 12
  • 13. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | History & Introduction • 2003 – Apache Commons Configuration • 2009 – Spring 3.0 • 2011 – Apache DeltaSpike • 2013 – Mike Keith at JavaOne • 2014 – Java EE 8 Survey • 2014 – Netflix Archaius • 2015 – Attempt to submit a JSR • 2015 – Apache Tamaya 13
  • 14. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 14 DZone and Java EE Guardians Survey Results
  • 15. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Problem Definition 15
  • 16. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | What is Configuration? 16 Application server setup? Runtime parameters? Deployment descriptors? Parameters of used frameworks? Deployment scripts? Used resources?
  • 17. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Problems • Lack of standard configuration API • Configuring multiple instances • Deploying on different environments • Change configuration without redeployment • Configuration of decoupled microservices 17
  • 18. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Problems • Lack of standard configuration API • Configuring multiple instances • Deploying on different environments • Change configuration without redeployment • Configuration of decoupled microservices 18
  • 19. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Problems • Lack of standard configuration API • Configuring multiple instances • Deploying on different environments • Change configuration without redeployment • Configuration of decoupled microservices 19
  • 20. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Problems • Lack of standard configuration API • Configuring multiple instances • Deploying on different environments • Change configuration without redeployment • Configuration of decoupled microservices 20
  • 21. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Problems • Lack of standard configuration API • Configuring multiple instances • Deploying on different environments • Change configuration without redeployment • Configuration of decoupled microservices 21
  • 22. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | JSR Proposal 22
  • 23. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Configuration Definition • Application centric • Not modifiable by application • Consists of key/value pairs • Keys and values are strings • Flat structure 23
  • 24. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Java EE Configuration • Unified API • Externalized configuration • Support of multiple configuration sources – Properties, xml and json formats support out of the box • Layering and overrides • Optional configuration descriptor • Dynamic configuration • Integration with other Java EE frameworks 24
  • 25. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Java EE Configuration • Unified API • Externalized configuration • Support of multiple configuration sources – Properties, xml and json formats support out of the box • Layering and overrides 25 Java EE 8 • Optional configuration descriptor • Dynamic configuration • Integration with other Java EE frameworks Java EE Next
  • 26. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Roadmap 26 Submit JSR Review JSR Expert Group Formation Sep 2016 Oct 2016 Nov 2016 Dec 2016 Jan 2017 Feb 2017 Mar 2017 Apr 2017 May 2017 June 2017 July 2017 Aug 2017 Sep 2017 Early Draft Public Draft Proposed Final Draft Final Release
  • 27. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | JSR Features (Java EE 8) 27
  • 28. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | API 28 a=JavaOne b=9 c=2016 Config config = ConfigProvider.getConfig(); // Returns "JavaOne" String foo = config.getProperty("a"); // Returns string "9" String fooBar = config.getProperty("b"); // Returns null String notExists = config.getProperty("not.exist"); // Returns string "default" String notExistsDefault = config.getProperty("not.exist","default"); // Returns number 2016 Long fooBarBaz = config.getProperty("c", Long.class);
  • 29. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Converters 29 • Type safe access to values • Built-in converters for: – Primitive Wrappers – BigDecimal, BigInteger, URL, URI – Date, Calendar – java.time.* public interface Converter<Target> { Target convert(String value); } public class FooConverter implements Converter<Foo> { public Foo convert(String value) { ... } } Config cfg = ConfigProvider.builder() .withConverters(new FooConverter()) .build(); Foo foo = cfg.getProperty("foo", Foo.class);
  • 30. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Configuration Sources 30 • Multiple configuration sources • Supported configuration sources: – System properties – Runtime parameters – File (Properties, xml, json) – Resource on a web server • Pluggable architecture – Custom sources (like DB) • Configuration sources are ordered Java EE Config XML JSONprop DBweb Application
  • 31. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Layering and Overrides 31
  • 32. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Default Configuration Sources 32 Java EE Config • System properties (ordinal=400) • Environment properties (ordinal=300) • /META-INF/config.properties (ordinal=100) • /META-INF/config.xml (ordinal=100) • /META-INF/config.json (ordinal=100)
  • 33. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Defining Configuration Sources 33 • Using config.sources runtime parameter • Using API • Using config-sources.xml file
  • 34. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Customizing Configuration Sources 34 Using config.sources runtime parameter # Single file source with default ordinal (200) java –jar my.jar –Dconfig.source=/conf/myconfig.properties # Web source with default ordinal (200) java –jar my.jar –Dconfig.source=http://shared/global.xml # Two sources. Ordinals are 200 and 199 java –jar my.jar –Dconfig.source=http://shared/global.xml,/conf/my.json
  • 35. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Customizing Configuration Sources 35 Using API Config config = ConfigProvider.builder() .addSource(new EnvSource(), 300) .addSource(new FileSource("/cfg/config.properties"), 200) .addSource(new WebSource("http://localhost:8080/config.xml"), 100) .addSource(new MyCustomSource()) .build();
  • 36. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | config-sources.xml 36 • File with defined schema using to define configuration sources and their metadata • Default location /META-INF/config-sources.xml • Can be placed outside of the application package • Define using runtime parameter • Define using API java –jar my.jar –Dconfig.sources=http://sharedhost/config-sources.xml Config c = ConfigProvider.builder() .withSources("/cfg/config-sources.xml") .build();
  • 37. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Sample config-sources.xml 37 Simple With ordinals <config-sources> <source>http://shared:8080/config.xml</source> <source>/cfg/myconf.json</source> </config-sources> <config-sources> <source ordinal="500">http://shared:8080/config.xml</source> <source ordinal="450">/cfg/myconf.json</source> </config-sources>
  • 38. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Sample config-sources.xml 38 Custom <config-sources> <source>http://shared:8080/config.xml</source> <source type="com.oracle.config.CloudConfig"> <user>user</user> <password>secret</password> </source> </config-sources>
  • 39. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | JSR Features (Java EE Next) 39
  • 40. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Integration With Other Java EE Frameworks • Read configuration from Java EE Config • Store configuration as part of whole application configuration • Use standard API 40 Java EE Config Application Configuration Application JPA Configuration JAX-RS Configuration
  • 41. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Configuration Descriptor 41 • File with defined format • Defines all configurable properties and metadata • Optional • It’s not XML-Schema! <config-descriptor> <property name="a"/> <property name="b" default=”valueB"/> <property name="c" mutable="false"/> <property name="d"/> </config-descriptor>
  • 42. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Immutability 42 Mutable Immutable
  • 43. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Dynamic Configuration 43 • Polling framework • Expressions • Property Resolvers • Configuration Context
  • 44. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Polling 44 // Defining polling using API Config cfg = ConfigProvider.builder() .withSource(new FileSource("/cfg/config.xml"), 200, Duration.ofSeconds(30)) .withSource(new WebSource("http://shared/config.xml"), 100, Duration.ofMinutes(1)) .build();
  • 45. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Polling 45 // Defining polling using API Config cfg = ConfigProvider.builder() .withSource(new FileSource("/cfg/config.xml"), 200, Duration.ofSeconds(30)) .withSource(new WebSource("http://shared/config.xml"), 100, Duration.ofMinutes(1)) .build(); Ordinal Refresh IntervalLocation
  • 46. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Polling 46 <config-sources refresh-rate="300000"> <source ordinal="200" refresh-rate="30000">/cfg/config.xml</source> <source ordinal="100" refresh-rate="60000">http://shared/config.xml</source> </config-sources>
  • 47. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Polling 47 <config-sources refresh-rate="300000"> <source ordinal="200" refresh-rate="30000">/cfg/config.xml</source> <source ordinal="100" refresh-rate="60000">http://shared/config.xml</source> </config-sources> Sources list refresh interval (5 min) Source 1 refresh interval (30 sec) Source 2 refresh interval (1 min)
  • 48. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Expressions 48 • EL like expressions evaluated at runtime to a property value • Property substitution • Conditional configuration sources foo=${some.other.value} bar=${foo + 10} baz=${foo * bar} <config-sources> <source>//cfg/config.properties</source> <source enabled=”${app==‘ios’}”> //cfg/cust_ios.properties </source> </config-sources>
  • 49. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Property Resolvers 49 • Flexible mechanism allowing executing user code in configuration expressions • Can be used to inject cloud resources rating.service.url=${eureka:rating.url} cust.db=${cloud:cust.db} <config-sources> <resolvers> <resolver name=”cloud”> <class>com.example.CloudResolver</class> <username>user</username> <password>secret</password> </resolver> </resolvers> <!-- ... --> </config-sources>
  • 50. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Configuration Context 50 • Allows application setting variables which can be used in configuration expressions • Example: geographical zone, application type, etc. <config-sources> <source>//cfg/config.properties</source> <source enabled=”${app==‘ios’}”> //cfg/cust_ios.properties </source> </config-sources> Config config = ConfigProvider.getConfig(); ConfigContext context = ConfigContext.builder().addProperty("app", "ios").build(); Long prop = config.getPropertyWithContext("prop", context);
  • 51. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Sample Use Case 51
  • 52. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Blacklist Service Financial Records Service Public Registry DBBlacklist Service Financial Records Service Public Registry DB Client Rating Confidential – Oracle Internal/Restricted/Highly Restricted 52 Customer Service Rating Service • https://github.com/psplinakis/ClientRating • Consists of 4 microservices communicating to each other using RESTful API • Each microservice is developed by different team which define its configuration and responsible for its deployment DB
  • 53. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Client Rating Confidential – Oracle Internal/Restricted/Highly Restricted 53 Customer Service Rating ServiceDB GET http://custhost/custservice/web/getCustomers [ {cust_id: 1, rating: 9}, {cust_id: 2, rating: 5} ] GET http://ratinghost/ratingservice/getRating/1 rating: 9
  • 54. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Client Rating Confidential – Oracle Internal/Restricted/Highly Restricted 54 cust-db rating-url records-count log-level blacklist-url findata-url log-level Customer Service Rating ServiceDB
  • 55. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Client Rating Confidential – Oracle Internal/Restricted/Highly Restricted 55 <config-descriptor> <context-property name=”app”/> <property name=”cust-db” mutable="false"/> <property name=”rating-url"/> <property name=”records-count" default=”100"/> <property name=”log-level" default=”INFO"/> </config-descriptor> <config-descriptor> <property name=”blacklist-url”/> <property name=”findata-url"/> <property name=”log-level" default=”INFO"/> </config-descriptor> Customer Service Rating ServiceDB
  • 56. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Client Rating <config-descriptor> <context-property name=”app”/> <property name=”cust-db” mutable="false"/> <property name=”rating-url"/> <property name=”records-count" default=”100"/> <property name=”log-level" default=”INFO"/> </config-descriptor> <config-descriptor> <property name=”blacklist-url”/> <property name=”findata-url"/> <property name=”log-level" default=”INFO"/> </config-descriptor> cust-db=mysql://dbhost:3306/cust_db rating-url=http://ratinghost/ratingservice" blacklist-url=http://blhost/blservice findata-url=http://findatahost/ratingservice log-level=INFO records-count=30 log-level=WARN Global configuration (global.properties) Microservice configuration (cust_svc.properties) Microservice configuration (rating_svc.properties) Override only for iOS application (cust_ios.properties)
  • 57. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Client Rating Confidential – Oracle Internal/Restricted/Highly Restricted 57 <config-sources> <source refresh-rate=”6000” enabled=”${app==‘ios’}”> //cfg/cust_ios.properties </source> <source> //cfg/cust_svc.properties </source> <source refresh-rate=”6000”> http://globalhost/global.properties </source> </config-sources> <config-sources> <source> //cfg/rating_svc.properties </source> <source refresh-rate=”6000”> http://globalhost/global.properties </source> </config-sources> Customer Service Rating ServiceDB
  • 58. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Client Rating Confidential – Oracle Internal/Restricted/Highly Restricted 58 global.properties rating_svc.propertiescust_svc.propertiescust_ios.properties Customer Service Rating ServiceDB
  • 59. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Cloud Configuration Service Idea Confidential – Oracle Internal/Restricted/Highly Restricted 59 Customer Service Rating Service DB
  • 60. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Cloud Configuration Service 60 • Service in the cloud • Distributed and high-available configuration storage • Pluggable to Java EE Config • Integration with other cloud services • REST and web API • Versioning, history, security Customer Service Rating Service DB
  • 61. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Next Steps • Take the survey – http://glassfish.org/survey • Send technical comments to – users@javaee-spec.java.net • Join the JCP – come to Hackergarden in Java Hub – https://jcp.org/en/participation/membership_drive • Join or track the JSRs as they progress – https://java.net/projects/javaee-spec/pages/Specifications • Adopt-a-JSR – https://community.oracle.com/community/java/jcp/adopt-a-jsr Give us your feedback 61
  • 62. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Where to Learn More at JavaOne 62 Session Number Session Title Day / Time CON7977 Java EE Next – HTTP/2 and REST Wednesday 1:00 p.m. CON6077 The Illusion of Statelessness Wednesday 4:30 p.m. CON 7981 JSF 2.3 Thursday 11:30 a.m.
  • 63. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Q & A 63