Microservices To-Go mit Dropwizard

Size: px
Start display at page:

Download "Microservices To-Go mit Dropwizard"

Transcription

1 Microservices To-Go mit Dropwizard Mario Goller Software Engineer, Swisscom AG Java Forum Stuttgart 2017

2 Excursion: Architecture Comparison Monolith: multiple modules in the same container / process Microservices: Modules running in di!erent processes

3 Dropwizard is a Java framework for developing opsfriendly, high-performance, RESTful web services

4 History Created by Yammer Yammer was migrating IT infrastructure to mircoservices -> common patterns where extracted in one framework First Release: ( Dropwizard 0.1.0) Independent project since 2014 ( Dropwizard 0.7.0) Current Release: Dropwizard 1.1.2

5 How the Dropwizard Framework can help us to easily build microservices...

6 Dropwizard... pulls together stable, mature libraries from the Java ecosystem into a simple, lightweight package that lets you focus on getting things done

7 Dropwizard's Library set Jetty for HTTP servin' Jersey for REST modelin' Jackson for JSON parsin' and generatin' Logback for loggin' Hibernate Validator for validatin' Metrics for "gurin' out what your application is doin' in production JDBI and Hibernate for databasin' Liquibase for migratin'

8 How to get started...? Use existing Maven archetype to generate simple Dropwizard project this is setting up the required base implementation (already executable) mvn archetype:generate -DarchetypeGroupId=io.dropwizard.archetypes -DarchetypeArtifactId=java-simple -DarchetypeVersion=1.1.2

9 Dropwizard Components Overview

10 Application main() - starts app (Jetty server) initialize() - bundles, con"guration options, etc. run() - register Jersey resources & servlet "lters and more public class MyApplication extends Application<MyConfiguration> { public static void main(string[] args) throws Exception { new public void initialize(bootstrap<addressmoduleconfiguration> bootstrap) public void run(final AddressModuleConfiguration configuration, final Environment environment) throws Exception { environment.jersey().register(...); environment.lifecycle().manage(...); environment.healthchecks().register(...); environment.admin().addtask(...);

11 Configuration public class MyConfiguration extends Configuration private String hellomessage; public void setcustomsetting(string message) { this.hellomessage = message; public String gethellomessage() { return hellomessage; Con"guration "le (Yaml)# server: applicationcontextpath: /myapplication rootpath: /rest applicationconnectors: - type: http port: 8080 adminconnectors: - type: http port: 8082 hellomessage: 'Hello Dropwizard!' logging: level: INFO appenders: - type: console threshold: ALL target: stdout

12 Creating a REST Resource using "plain" JAX-RS 2.0 to create resources or = public class HelloResource { private final MyConfiguration conf; public HelloResource(MessagesConfiguration conf) { this.conf = public String sayhello() { return conf.gethellomaessage();

13 How it works together

14 Full Application Class Example public class MyApplication extends Application<MyConfiguration> { public static void main(string[] args) throws Exception { new public String getname() { return "My public void initialize(bootstrap<addressmoduleconfiguration> bootstrap) { bootstrap.addbundle(new AssetsBundle("/frontend-assets/", "/", "index.html", "frontend-assets")); bootstrap.addbundle(new public void run(final AddressModuleConfiguration configuration, final Environment environment) throws Exception { environment.jersey().register(constraintviolationexceptionmapper.class); environment.jersey().register(new JsonProcessingExceptionMapper()); environment.jersey().packages("org.jfs.dw.rest"); environment.servlets().addfilter("mdcloggingservletfilter",mdcloggingservletfilter.class).addmappingforurlpatterns(of(dispatchertype.request, DispatcherType.FORWARD, DispatcherType.ASYNC), false, "/*"); environment.servlets().addservletlisteners(new RequestResponseHolderListener());

15 Build the Application Fat Jar with Maven <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-shade-plugin</artifactid> <configuration> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>meta-inf/*.sf</exclude> <exclude>meta-inf/*.dsa</exclude> <exclude>meta-inf/*.rsa</exclude> </excludes> </filter> </filters> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> </execution> </executions> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-enforcer-plugin</artifactid> <configuration> <rules> <DependencyConvergence/> </rules> </configuration> <executions> <execution> <id>enforce</id> <configuration> <rules> <DependencyConvergence/> </rules> </configuration> <goals> <goal>enforce</goal> </goals> <phase>package</phase> </execution> </executions> </plugin> Use also maven enforcer plugin! <transformer implementation="org.apache.maven.plugins.shade.resource.servicesresourcetransformer"/> <transformer implementation="org.apache.maven.plugins.shade.resource.manifestresourcetransformer"> <mainclass>org.jfs.dw.myapplication</mainclass> </transformer> </transformers> </configuration> $ mvn package

16 Running the Application Jar java -jar myapplication.jar server myconfig.yaml Two arguments are needed in order to run the JAR server which instructs Dropwizard to run as server. path to YAML con"guration "le. INFO org.eclipse.jetty.util.log - Logging INFO io.dropwizard.server.defaultserverfactory - Registering jersey handler with root path prefix: /myapp INFO io.dropwizard.server.defaultserverfactory - Registering admin handler with root path prefix: / INFO io.dropwizard.assets.assetsbundle - Registering AssetBundle with name: frontend-assets for path /* INFO io.dropwizard.server.defaultserverfactory - Registering jersey handler with root path prefix: /myapp INFO io.dropwizard.server.defaultserverfactory - Registering admin handler with root path prefix: / INFO io.dropwizard.server.serverfactory - Starting My fancy Application INFO org.eclipse.jetty.setuid.setuidlistener - Opened application@4905c46b{http/1.1,[http/1.1]{ :8080 INFO org.eclipse.jetty.setuid.setuidlistener - Opened application@17ae7628{ssl,[ssl, http/1.1]{ :8443 INFO org.eclipse.jetty.setuid.setuidlistener - Opened admin@1136b469{http/1.1,[http/1.1]{ :8082 INFO org.eclipse.jetty.setuid.setuidlistener - Opened admin@6579c3d9{ssl,[ssl, http/1.1]{ :8444 INFO org.eclipse.jetty.server.server - jetty v INFO org.eclipse.jetty.server.handler.contexthandler - Started i.d.j.mutableservletcontexthandler@7a364e1c{/,null,ava INFO org.eclipse.jetty.server.abstractconnector - Started application@4905c46b{http/1.1,[http/1.1]{ :8080 INFO org.eclipse.jetty.server.abstractconnector - Started application@17ae7628{ssl,[ssl, http/1.1]{ :8443 INFO org.eclipse.jetty.server.abstractconnector - Started admin@1136b469{http/1.1,[http/1.1]{ :8082 INFO org.eclipse.jetty.server.abstractconnector - Started admin@6579c3d9{ssl,[ssl, http/1.1]{ :8444

17 Bundles reusable group of functionality, used to de"ne blocks of an application s behavior public interface Bundle { void initialize(bootstrap<?> bootstrap); void run(environment environment); public interface ConfiguredBundle<T> { void initialize(bootstrap<?> bootstrap); void run(t configuration, Environment environment) throws public void initialize(final Bootstrap<BeachBarClientConfiguration> bootstrap) { VersionSupplier supplier = new MavenVersionSupplier("org.jfs.dw", "my-appication"); bootstrap.addbundle(new VersionBundle(supplier));

18 Using Databases you can chose your preferred API: Hibernate ORM JDBI Data Access #DataSource con"guration via YAML database: driverclass : org.postgresql.driver url: 'jdbc:postgresql://db.example.com/db-prod' user: pg-user password: iams00persecreet

19 JDBI the "dropwizard-jdbi" module allows us to create a database connections and Data Access Objects (DAO) through which we will query the database making use of the API provided by the JDBI project ( ) public void run(exampleconfiguration config, Environment environment) { final DBIFactory factory = new DBIFactory(); final DBI jdbi = factory.build(environment, config.getdatasourcefactory(), "postgresql"); final UserDAO dao = jdbi.ondemand(userdao.class); environment.jersey().register(new UserResource(dao)); public interface UserDAO into users (sessionid, name) values (:sessionid, int insert(@bind("sessionid") String * from users") List<User> getallusers();

20 Managed Objects (Example MongoDB) public class ManagedMongoClient extends MongoClient implements Managed { public ManagedMongoClient(MongoClientURI uri) throws UnknownHostException { public void start() throws Exception public void stop() throws Exception { close(); public class App extends Application<AppConfiguration> public void run(appconfiguration config, Environment environment) { ManagedMongoClient mongoclient = config.getmongo().build(); environment.lifecycle().manage(mongoclient); DB db = mongoclient.getdb(config.getmongo().getdbname());

21 Operations friendly Dropwizard provides some handy features to support operational work Healthchecks Commands (executable actions via CL) Tasks (executable actions via HTTP) Metrics (via Dropwizard Metrics) Easy con"gurable Logging (Logback, SLF4J)

22 Application Healthchecks

23 Healthchecks a runtime test which you can use to verify your application s behaviour, depencencies etc. in its environment Health checks should lightly test service dependencies, e.g. databases, downstream services, etc. $ curl {"deadlocks":{"healthy":true,"database":{"healthy":true

24 Healthcheck Class Example public class DatabaseHealthCheck extends HealthCheck { private final HibernateBundle hibernate; public DatabaseHealthCheck(HibernateBundle hibernate) { super("database"); this.hibernate = protected Result check() throws Exception { if(!hibernate.getsessionfactory().isclosed()) { return Result.healthy(); else { return Result.unhealthy("Cannot connect to database"); adding the healthcheck to the application environment.addhealthcheck(new DatabaseHealthCheck(hibernate));

25 Deployment into the Cloud Example of deploying a Dropwizard App to the Heroku Cloud heroku create web: java $JAVA_OPTS -Ddw.http.port=$PORT -Ddw.http.adminPort=$PORT -jar target/myproject-1.0-snapshot.jar server config.yaml git push heroku master -----> Discovering process types Procfile declares types -> web -----> Compiled slug size: 57.7MB -----> Launching... done, v9 deployed to Heroku

26 Metrics almost all applications need the ability to report key statistics metrics library written by Dropwizard team supports Meters, Gauges, Histograms, and Timers

27 Monitoring a Dropwizard Application (visualize pushed metrics)

28 Testing a Dropwizard Application "dropwizard-testing" module can be easily used for testing your application representation classes and resource classes Fixtures for unit testing representations Easily unit test resources using mock DAOs Excellent integration test support Prefer AssertJ $uent-assertions JUnit rule for full-stack testing of your entire app!resourcetestrule DropwizardClientRule DropwizardAppRule DropwizardTestSupport

29 Integration Test Example public class HelloResourceTest public ResourceTestRule resource = ResourceTestRule.builder().addResource(new public void testgetgreeting() { String expected = "Hello world!"; //Obtain client Client client = resource.client(); //Get WebTarget from client using URI of root resource. WebTarget hellotarget = client.target(" //To invoke response we use Invocation.Builder //and specify the media type of representation asked from resource. Invocation.Builder builder = hellotarget.request(mediatype.text_plain); //Obtain response. Response response = builder.get(); //Do assertions. assertequals(response.status.ok, response.getstatusinfo()); String actual = response.readentity(string.class); assertequals(expected, actual);

30 Dropwizard vs. Spring Boot Main di!erence is dependency injection support Spring s core comes with it s built in dependency injection support Dropwizard doesn t come out of the box with DI Dropwizard o!ers integrations with other DI frameworks like Guice, CDI both frameworks have a special module for testing including JUnit and Mockito dependencies. Spring Boot is a part of Spring ecosystem and suits best for Springoriented projects Spring o!ers broader list of supported services - REST, JMS, Messaging... Dropwizard owns popular metrics library

31 Dropwizard vs. Spring Boot

32 Anything else?

33 Additional Dropwizard Modules and Tooling

34 Dropwizard and Dependency Injection only Jersey H2K dependency injection support out-of-the-box useful for simple cases for more features a existing DI framework must be included Google Guice Weld CDI Spring public void run(exampleserviceconfiguration conf, Environment env) throws Exception { Injector injector = Guice.createInjector(); env.addresource(injector.getinstance(helloresource.class)); an additional "H2K-bridge" is needed to avoid clashes in DI <dependency> <groupid>org.glassfish.hk2</groupid> <artifactid>guice-bridge</artifactid> <version>2.4.0-b31</version> </dependency>

35 Database Migration with Liquibase Validation View Templates Authentication

36 Questions

37

Simple REST-APIs with Dropwizard and Swagger. Bernd Schönbach LeanIX GmbH

Simple REST-APIs with Dropwizard and Swagger. Bernd Schönbach LeanIX GmbH Simple REST-APIs with Dropwizard and Swagger Bernd Schönbach LeanIX GmbH Motivation Quickly create REST-APIs Make it testable Deploy with a click Or even better automatically Provide Documentation without

More information

Dropwizard. A RESTful Love Story. Ryan Kennedy Core Yammer

Dropwizard. A RESTful Love Story. Ryan Kennedy Core Yammer Dropwizard A RESTful Love Story Ryan Kennedy (@rckenned) Core Services @ Yammer Dropwizard A RESTful Love Story Ryan Kennedy (@rckenned) Core Services @ Yammer + MicrosoE What on earth is Dropwizard? Some

More information

Cheat Sheet: Wildfly Swarm

Cheat Sheet: Wildfly Swarm Cheat Sheet: Wildfly Swarm Table of Contents 1. Introduction 1 5.A Java System Properties 5 2. Three ways to Create a 5.B Command Line 6 Swarm Application 1 5.C Project Stages 6 2.A Developing a Swarm

More information

Croquet. William R. Speirs, Ph.D. Founder & CEO of Metrink

Croquet. William R. Speirs, Ph.D. Founder & CEO of Metrink Croquet William R. Speirs, Ph.D. (wspeirs@metrink.com) Founder & CEO of Metrink About Me BS in CS from Rensselaer; PhD from Purdue Founder and CEO of Metrink (www.metrink.com) Simple yet powerful query

More information

JVA-563. Developing RESTful Services in Java

JVA-563. Developing RESTful Services in Java JVA-563. Developing RESTful Services in Java Version 2.0.1 This course shows experienced Java programmers how to build RESTful web services using the Java API for RESTful Web Services, or JAX-RS. We develop

More information

Microservices mit Java, Spring Boot & Spring Cloud. Eberhard Wolff

Microservices mit Java, Spring Boot & Spring Cloud. Eberhard Wolff Microservices mit Java, Spring Boot & Spring Cloud Eberhard Wolff Fellow @ewolff What are Microservices? Micro Service: Definition > Small > Independent deployment units > i.e. processes or VMs > Any technology

More information

Tools for Accessing REST APIs

Tools for Accessing REST APIs APPENDIX A Tools for Accessing REST APIs When you have to work in an agile development environment, you need to be able to quickly test your API. In this appendix, you will learn about open source REST

More information

Microservices. Are your Frameworks ready? Martin Eigenbrodt Alexander Heusingfeld

Microservices. Are your Frameworks ready? Martin Eigenbrodt Alexander Heusingfeld Microservices Are your Frameworks ready? Martin Eigenbrodt martin.eigenbrodt@innoq.com Alexander Heusingfeld alexander.heusingfeld@innoq.com Microservices? Levels of Architecture Domain architecture Macro

More information

Fat / Uber jars - Using the Shade Plugin

Fat / Uber jars - Using the Shade Plugin Fat / Uber jars - Using the Shade Plugin Shading the container and the application has some challenges like merging correctly resources (META-INF/services/ typically). Here is a maven shade plugin configuration

More information

Adobe Experience Manager

Adobe Experience Manager Adobe Experience Manager Extend and Customize Adobe Experience Manager v6.x Student Guide: Volume 1 Contents CHAPTER ONE: BASICS OF THE ARCHITECTURAL STACK... 10 What is Adobe Experience Manager?... 10

More information

Diabolical Developer s Intro to FaaS for Java Developers

Diabolical Developer s Intro to FaaS for Java Developers Diabolical Developer s Intro to FaaS for Java Developers Community Leader Devs+502 & JDuchess Chapter Guatemala Ex-JUG Member Guatemala Java Users Group (GuateJUG) Chief Technology Officer (CTO) at Produactivity

More information

OpenECOMP SDC Developer Guide

OpenECOMP SDC Developer Guide OpenECOMP SDC Developer Guide Copyright 2017 AT&T Intellectual Property. All rights reserved. Licensed under the Creative Commons License, Attribution 4.0 Intl. (the "License"); you may not use this documentation

More information

GAVIN KING RED HAT CEYLON SWARM

GAVIN KING RED HAT CEYLON SWARM GAVIN KING RED HAT CEYLON SWARM CEYLON PROJECT A relatively new programming language which features: a powerful and extremely elegant static type system built-in modularity support for multiple virtual

More information

Maven POM project modelversion groupid artifactid packaging version name

Maven POM project modelversion groupid artifactid packaging version name Maven The goal of this document is to introduce the Maven tool. This document just shows some of the functionalities of Maven. A complete guide about Maven can be found in http://maven.apache.org/. Maven

More information

Cloud-Native Applications. Copyright 2017 Pivotal Software, Inc. All rights Reserved. Version 1.0

Cloud-Native Applications. Copyright 2017 Pivotal Software, Inc. All rights Reserved. Version 1.0 Cloud-Native Applications Copyright 2017 Pivotal Software, Inc. All rights Reserved. Version 1.0 Cloud-Native Characteristics Lean Form a hypothesis, build just enough to validate or disprove it. Learn

More information

Migrating to Java 9 Modules. Paul Bakker

Migrating to Java 9 Modules. Paul Bakker Migrating to Java 9 Modules Paul Bakker Why care about modules? lib/nebula-4.0.12.jar:lib/netflix-gradle-lint-8.6.1.jar:lib/gretty-2.0.0.jar:lib/gradle-infamous-plugin-1.28.jar:lib/java-semver-0.9.0.jar:lib/guava-20.0.jar:lib/

More information

Ratpacked Notebook. Experience Ratpack with code snippets. Hubert Klein Ikkink. This book is for sale at

Ratpacked Notebook. Experience Ratpack with code snippets. Hubert Klein Ikkink. This book is for sale at Ratpacked Notebook Experience Ratpack with code snippets Hubert Klein Ikkink This book is for sale at http://leanpub.com/ratpacked-notebook This version was published on 2016-11-14 This is a Leanpub book.

More information

MAVEN INTERVIEW QUESTIONS

MAVEN INTERVIEW QUESTIONS MAVEN INTERVIEW QUESTIONS http://www.tutorialspoint.com/maven/maven_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Maven Interview Questions have been designed specially to get

More information

Page 1

Page 1 Java 1. Core java a. Core Java Programming Introduction of Java Introduction to Java; features of Java Comparison with C and C++ Download and install JDK/JRE (Environment variables set up) The JDK Directory

More information

Introduction to Spring Framework: Hibernate, Spring MVC & REST

Introduction to Spring Framework: Hibernate, Spring MVC & REST Introduction to Spring Framework: Hibernate, Spring MVC & REST Training domain: Software Engineering Number of modules: 1 Duration of the training: 36 hours Sofia, 2017 Copyright 2003-2017 IPT Intellectual

More information

RobertaLab: Configuration, Architecture, Frameworks, Design

RobertaLab: Configuration, Architecture, Frameworks, Design Roberta Seite 1 RobertaLab: Configuration, Architecture, Frameworks, Design reinhard.budde at iais.fraunhofer.de version 0.3 002014 12:57 Overview The system consists out of three distributed components,

More information

Keep Learning with Oracle University

Keep Learning with Oracle University Keep Learning with Oracle University Classroom Training Learning Subscription Live Virtual Class Training On Demand Cloud Technology Applications Industries education.oracle.com 3 Session Surveys Help

More information

Struts 2 Maven Archetypes

Struts 2 Maven Archetypes Struts 2 Maven Archetypes DEPRECATED: moved to http://struts.apache.org/maven-archetypes/ Struts 2 provides several Maven archetypes that create a starting point for our own applications. Contents 1 DEPRECATED:

More information

Managing Installations and Provisioning of OSGi Applications. Carsten Ziegeler

Managing Installations and Provisioning of OSGi Applications. Carsten Ziegeler Managing Installations and Provisioning of OSGi Applications Carsten Ziegeler cziegeler@apache.org About Member of the ASF Current PMC Chair of Apache Sling Apache Sling, Felix, ACE, Portals (Incubator,

More information

Building Microservices with the 12 Factor App Pattern

Building Microservices with the 12 Factor App Pattern Building Microservices with the 12 Factor App Pattern Context This documentation will help introduce Developers to implementing MICROSERVICES by applying the TWELVE- FACTOR PRINCIPLES, a set of best practices

More information

JAVA COURSES. Empowering Innovation. DN InfoTech Pvt. Ltd. H-151, Sector 63, Noida, UP

JAVA COURSES. Empowering Innovation. DN InfoTech Pvt. Ltd. H-151, Sector 63, Noida, UP 2013 Empowering Innovation DN InfoTech Pvt. Ltd. H-151, Sector 63, Noida, UP contact@dninfotech.com www.dninfotech.com 1 JAVA 500: Core JAVA Java Programming Overview Applications Compiler Class Libraries

More information

Developer: Chaithanya Krishna Gogineni Graduate Teaching Assistant Software Engineering Computer Science Department Northern Illinois University

Developer: Chaithanya Krishna Gogineni Graduate Teaching Assistant Software Engineering Computer Science Department Northern Illinois University Developer: Chaithanya Krishna Gogineni Graduate Teaching Assistant Software Engineering Computer Science Department Northern Illinois University DeKalb, Illinois. www.chaithanyagogineni.com 1.Requirements

More information

com Spring + Spring-MVC + Spring-Boot + Design Pattern + XML + JMS Hibernate + Struts + Web Services = 8000/-

com Spring + Spring-MVC + Spring-Boot + Design Pattern + XML + JMS Hibernate + Struts + Web Services = 8000/- www.javabykiran. com 8888809416 8888558802 Spring + Spring-MVC + Spring-Boot + Design Pattern + XML + JMS Hibernate + Struts + Web Services = 8000/- Java by Kiran J2EE SYLLABUS Servlet JSP XML Servlet

More information

Oracle Code Day Hands On Labs (HOL) (Install, Repository, Local Deploy, DevCS, OACCS)

Oracle Code Day Hands On Labs (HOL) (Install, Repository, Local Deploy, DevCS, OACCS) Oracle Code Day Hands On Labs (HOL) (Install, Repository, Local Deploy, DevCS, OACCS) Table of Contents Getting Started...2 Overview...2 Learning Objectives...2 Prerequisites...2 Software for HOL Lab Session...2

More information

Heroku. Rimantas Kybartas

Heroku. Rimantas Kybartas Heroku Rimantas Kybartas Salesforce platform (PaaS) Facts about Heroku Has been in development since June 2007, 2010 acquired by Salesforce Open platform Languages and frameworks: Ruby and Rails Node.js

More information

Configuring and Using Osmosis Platform

Configuring and Using Osmosis Platform Configuring and Using Osmosis Platform Index 1. Registration 2. Login 3. Device Creation 4. Node Creation 5. Sending Data from REST Client 6. Checking data received 7. Sending Data from Device 8. Define

More information

Integrating Spring Boot with MySQL

Integrating Spring Boot with MySQL Integrating Spring Boot with MySQL Introduction For this course we will be using MySQL as the database for permanent data storage. We will use Java Persistence API (JPA) as an Object Relation Map (ORM)

More information

Cloud Native Java with Kubernetes

Cloud Native Java with Kubernetes Cloud Native Java with Kubernetes @burrsutter burr@redhat.com developers.redhat.com We cannot solve our problems with the same thinking we used when we created them. Albert Einstein (Theoretical Physicist)

More information

Spring & Hibernate. Knowledge of database. And basic Knowledge of web application development. Module 1: Spring Basics

Spring & Hibernate. Knowledge of database. And basic Knowledge of web application development. Module 1: Spring Basics Spring & Hibernate Overview: The spring framework is an application framework that provides a lightweight container that supports the creation of simple-to-complex components in a non-invasive fashion.

More information

The Next Generation. Prabhat Jha Principal Engineer

The Next Generation. Prabhat Jha Principal Engineer The Next Generation Prabhat Jha Principal Engineer What do you wish you had in an Open Source JEE Application Server? Faster Startup Time? Lighter Memory Footprint? Easier Administration? 7 Reasons To

More information

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko Containers, Serverless and Functions in a nutshell Eugene Fedorenko About me Eugene Fedorenko Senior Architect Flexagon adfpractice-fedor.blogspot.com @fisbudo Agenda Containers Microservices Docker Kubernetes

More information

Keep Learning with Oracle University

Keep Learning with Oracle University Keep Learning with Oracle University Classroom Training Learning Subscription Live Virtual Class Training On Demand Cloud Technology Applications Industries education.oracle.com 3 Session Surveys Help

More information

Migrating traditional Java EE applications to mobile

Migrating traditional Java EE applications to mobile Migrating traditional Java EE applications to mobile Serge Pagop Sr. Channel MW Solution Architect, Red Hat spagop@redhat.com Burr Sutter Product Management Director, Red Hat bsutter@redhat.com 2014-04-16

More information

Oracle Code Day Hands On Labs HOL

Oracle Code Day Hands On Labs HOL Oracle Code Day Hands On Labs HOL Overview This lab guides you through deploying and running the BlackJack application "locally" via a Tomcat server that is spawned by NetBeans. After successfully running

More information

Overview of Web Application Development

Overview of Web Application Development Overview of Web Application Development Web Technologies I. Zsolt Tóth University of Miskolc 2018 Zsolt Tóth (University of Miskolc) Web Apps 2018 1 / 34 Table of Contents Overview Architecture 1 Overview

More information

Eclipse MicroProfile with Thorntail (formerly WildFly Swarm)

Eclipse MicroProfile with Thorntail (formerly WildFly Swarm) Eclipse MicroProfile with Thorntail (formerly WildFly Swarm) John Clingan Senior Principal Product Manager Ken Finnigan Senior Principal Software Engineer EVOLUTION OF MICROSERVICES (2014 -?) Application

More information

OAuth2 Autoconfig. Copyright

OAuth2 Autoconfig. Copyright Copyright Table of Contents... iii 1. Downloading... 1 1.1. Source... 1 1.2. Maven... 1 1.3. Gradle... 2 2. Authorization Server... 3 3. Resource Server... 4 I. Token Type in User Info... 5 II. Customizing

More information

Breaking Apart the Monolith with Modularity and Microservices CON3127

Breaking Apart the Monolith with Modularity and Microservices CON3127 Breaking Apart the Monolith with Modularity and Microservices CON3127 Neil Griffin Software Architect, Liferay Inc. Specification Lead, JSR 378 Portlet 3.0 Bridge for JavaServer Faces 2.2 Michael Han Vice

More information

Oracle Corporation

Oracle Corporation 1 2012 Oracle Corporation Oracle WebLogic Server 12c: Developing Modern, Lightweight Java EE 6 Applications Will Lyons, Director of WebLogic Server Product Management Pieter Humphrey, Principal Product

More information

RESTful Web Services with Dropwizard

RESTful Web Services with Dropwizard RESTful Web Services with Dropwizard Over 20 recipes to help you build high-performance, production-ready RESTful JVM-based backend services Alexandros Dallas BIRMINGHAM - MUMBAI RESTful Web Services with

More information

Copyright 2016 Pivotal. All rights reserved. Cloud Native Design. Includes 12 Factor Apps

Copyright 2016 Pivotal. All rights reserved. Cloud Native Design. Includes 12 Factor Apps 1 Cloud Native Design Includes 12 Factor Apps Topics 12-Factor Applications Cloud Native Design Guidelines 2 http://12factor.net Outlines architectural principles and patterns for modern apps Focus on

More information

Groovy and Grails in Google App Engine

Groovy and Grails in Google App Engine Groovy and Grails in Google App Engine Benefit from a Java-like dynamic language to be more productive on App Engine Guillaume Laforge Head of Groovy Development Guillaume Laforge Groovy Project Manager

More information

graceland-core Documentation

graceland-core Documentation graceland-core Documentation Release 0.1.0-SNAPSHOT Javier Campanini April 14, 2014 Contents 1 About 3 1.1 Contributing............................................... 3 1.2 License..................................................

More information

Native Android Development Practices

Native Android Development Practices Native Android Development Practices Roy Clarkson & Josh Long SpringSource, a division of VMware 1 About Roy Clarkson (Spring Android Lead) @royclarkson 2 About Roy Clarkson (Spring Android Lead) @royclarkson

More information

Java J Course Outline

Java J Course Outline JAVA EE - J2SE - CORE JAVA After all having a lot number of programming languages. Why JAVA; yet another language!!! AND NOW WHY ONLY JAVA??? CHAPTER 1: INTRODUCTION What is Java? History Versioning The

More information

ApplicationComposer. The TomEE Swiss Knife

ApplicationComposer. The TomEE Swiss Knife ApplicationComposer The TomEE Swiss Knife ApplicationComposer API is mainly contained in org.apache.openejb.testing package (historically, today we would have called the package org.apache.tomee.applicationcomposer).

More information

Contents in Detail. Foreword by Xavier Noria

Contents in Detail. Foreword by Xavier Noria Contents in Detail Foreword by Xavier Noria Acknowledgments xv xvii Introduction xix Who This Book Is For................................................ xx Overview...xx Installation.... xxi Ruby, Rails,

More information

Apache Tamaya Configuring your Containers...

Apache Tamaya Configuring your Containers... Apache Tamaya Configuring your Containers... BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH About Me Anatole Tresch Principal Consultant,

More information

Content. Development Tools 2(57)

Content. Development Tools 2(57) Development Tools Content Project management and build, Maven Unit testing, Arquillian Code coverage, JaCoCo Profiling, NetBeans Static Analyzer, NetBeans Continuous integration, Hudson Development Tools

More information

Spring Cloud, Spring Boot and Netflix OSS

Spring Cloud, Spring Boot and Netflix OSS Spring Cloud, Spring Boot and Netflix OSS Spencer Gibb twitter: @spencerbgibb email: sgibb@pivotal.io Dave Syer twitter: @david_syer email: dsyer@pivotal.io (Spring Boot and Netflix OSS or Spring Cloud

More information

vrealize Code Stream Plug-In SDK Development Guide

vrealize Code Stream Plug-In SDK Development Guide vrealize Code Stream Plug-In SDK Development Guide vrealize Code Stream 2.2 This document supports the version of each product listed and supports all subsequent versions until the document is replaced

More information

DevOps and Maven. Eamonn de Leastar Dr. Siobhán Drohan Produced by:

DevOps and Maven. Eamonn de Leastar Dr. Siobhán Drohan Produced by: DevOps and Maven Produced by: Eamonn de Leastar (edeleastar@wit.ie) Dr. Siobhán Drohan (sdrohan@wit.ie) Department of Computing and Mathematics http://www.wit.ie/ Dev team created a solution for production.

More information

Erlang in the Heroku Cloud

Erlang in the Heroku Cloud X Erlang in the Heroku Cloud X Who are we? Geoff Cant @archaelus Blake Gentry @blakegentry What do we do? Software Engineers Heroku Routing Team What is Heroku? Cloud Application PaaS We manage servers

More information

Open Source Library Developer & IT Pro

Open Source Library Developer & IT Pro Open Source Library Developer & IT Pro Databases LEV 5 00:00:00 NoSQL/MongoDB: Buildout to Going Live INT 5 02:15:11 NoSQL/MongoDB: Implementation of AngularJS INT 2 00:59:55 NoSQL: What is NoSQL INT 4

More information

JBPM Course Content. Module-1 JBPM overview, Drools overview

JBPM Course Content. Module-1 JBPM overview, Drools overview JBPM Course Content Module-1 JBPM overview, Drools overview JBPM overview Drools overview Community projects Vs Enterprise projects Eclipse integration JBPM console JBPM components Getting started Downloads

More information

Component based Development. Table of Contents. Notes. Notes. Notes. Web Application Development. Zsolt Tóth

Component based Development. Table of Contents. Notes. Notes. Notes. Web Application Development. Zsolt Tóth Component based Development Web Application Development Zsolt Tóth University of Miskolc 2017 Zsolt Tóth (University of Miskolc) Component based Development 2017 1 / 30 Table of Contents 1 2 3 4 Zsolt

More information

Groovy & Grails Scripting for Modern Web Applications. Rohit Nayak Talentica Software

Groovy & Grails Scripting for Modern Web Applications. Rohit Nayak Talentica Software Groovy & Grails Scripting for Modern Web Applications Rohit Nayak Talentica Software Agenda Demo: Quick intro to Grails Scripting, Web Applications and Grails/Groovy REST service in Grails Demo Internals

More information

Testing Your Application on / for Google App Engine

Testing Your Application on / for Google App Engine Testing Your Application on / for Google App Engine Narinder Kumar Inphina Technologies 1 Agenda Problem Context App Engine Testing Framework Local DataStore Testing Authentication API Testing Memcache

More information

Eclipse MicroProfile: Accelerating the adoption of Java Microservices

Eclipse MicroProfile: Accelerating the adoption of Java Microservices Eclipse MicroProfile: Accelerating the adoption of Java Microservices Emily Jiang twitter @emilyfhjiang 10 th October 2017 What is Eclipse MicroProfile? Eclipse MicroProfile is an open-source community

More information

Topics covered. Introduction to Maven Maven for Dependency Management Maven Lifecycles and Plugins Hands on session. Maven 2

Topics covered. Introduction to Maven Maven for Dependency Management Maven Lifecycles and Plugins Hands on session. Maven 2 Maven Maven 1 Topics covered Introduction to Maven Maven for Dependency Management Maven Lifecycles and Plugins Hands on session Maven 2 Introduction to Maven Maven 3 What is Maven? A Java project management

More information

Blow up the monolith? Serverless computing, nanofunctions, & Amazon Lambda

Blow up the monolith? Serverless computing, nanofunctions, & Amazon Lambda Blow up the monolith? Serverless computing, nanofunctions, & Amazon Lambda Disclaimer This is a concept and code that I'm still experimenting with. It is not live in production. "Serverless Computing"

More information

WHITE PAPER. RedHat OpenShift Container Platform. Benefits: Abstract. 1.1 Introduction

WHITE PAPER. RedHat OpenShift Container Platform. Benefits: Abstract. 1.1 Introduction WHITE PAPER RedHat OpenShift Container Platform Abstract Benefits: Applications are designed around smaller independent components called microservices. Elastic resources: Scale up or down quickly and

More information

ORACLE APPLICATION EXPRESS, ORACLE REST DATA SERVICES, & WEBLOGIC 12C AUTHOR: BRAD GIBSON SENIOR SOLUTIONS ARCHITECT ADVIZEX

ORACLE APPLICATION EXPRESS, ORACLE REST DATA SERVICES, & WEBLOGIC 12C AUTHOR: BRAD GIBSON SENIOR SOLUTIONS ARCHITECT ADVIZEX ORACLE APPLICATION EXPRESS, ORACLE REST DATA SERVICES, & WEBLOGIC 12C AUTHOR: BRAD GIBSON SENIOR SOLUTIONS ARCHITECT ADVIZEX AdvizeX Technologies - A Rolta Company 6/12/2015 1 AGENDA Introductions Test

More information

Kinto Documentation. Release Mozilla Services Da French Team

Kinto Documentation. Release Mozilla Services Da French Team Kinto Documentation Release 0.2.2 Mozilla Services Da French Team June 23, 2015 Contents 1 In short 3 2 Table of content 5 2.1 API Endpoints.............................................. 5 2.2 Installation................................................

More information

Schema Null Cannot Be Resolved For Table Jpa

Schema Null Cannot Be Resolved For Table Jpa Schema Null Cannot Be Resolved For Table Jpa (14, 19) The abstract schema type 'Movie' is unknown. (28, 35) The state field path 'm.title' cannot be resolved to a valid type. at org.springframework.web.servlet.

More information

SBB. Java User Group 27.9 & Tobias Denzler, Philipp Oser

SBB. Java User Group 27.9 & Tobias Denzler, Philipp Oser OpenShift @ SBB Java User Group 27.9 & 25.10.17 Tobias Denzler, Philipp Oser Who we are Tobias Denzler Software Engineer at SBB IT Java & OpenShift enthusiast @tobiasdenzler Philipp Oser Architect at ELCA

More information

Jaxb2 Maven Plugin Could Not Process Schema

Jaxb2 Maven Plugin Could Not Process Schema Jaxb2 Maven Plugin Could Not Process Schema The JAXB2 Maven Plugin project was moved to GitHub. These pages are no longer maintained and therefore do not provide the actual information. Resource entries,

More information

Java Architectures A New Hope. Eberhard Wolff

Java Architectures A New Hope. Eberhard Wolff Java Architectures A New Hope Eberhard Wolff http://ewolff.com What happens with a talk titled like this? Architecture of Enterprise Java Apps How can I implement a new feature??? ! ECommerce System

More information

Meet. Brian Stansberry Principal Software Engineer, Red Hat, Inc. June 10, Friday, June 14, 13

Meet. Brian Stansberry Principal Software Engineer, Red Hat, Inc. June 10, Friday, June 14, 13 Meet Brian Stansberry Principal Software Engineer, Red Hat, Inc. June 10, 2013 What s WildFly? New name for the JBoss Application Server project Reduce confusion over the name JBoss WildFly won a public

More information

Red Hat Developer Studio 12.0

Red Hat Developer Studio 12.0 Red Hat Developer Studio 12.0 Release Notes and Known Issues Highlighted features in 12.0 Last Updated: 2018-07-18 Red Hat Developer Studio 12.0 Release Notes and Known Issues Highlighted features in

More information

To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry. Tony Erwin,

To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry. Tony Erwin, To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry Tony Erwin, aerwin@us.ibm.com Agenda Origins of the Bluemix UI Demons of the Monolith Slaying Demons with

More information

RESTful Microservices

RESTful Microservices RESTful Microservices In Java With Jersey Jakub Podlešák So9ware Engineer Oracle, ApplicaAon Server Group September 29, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. Safe Harbor

More information

Simplified CICD with Jenkins and Git on the ZeroStack Platform

Simplified CICD with Jenkins and Git on the ZeroStack Platform DATA SHEET Simplified CICD with Jenkins and Git on the ZeroStack Platform In the technical article we will walk through an end to end workflow of starting from virtually nothing and establishing a CICD

More information

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

Software Engineering 2 A practical course in software engineering. Ekkart Kindler Software Engineering 2 A practical course in software engineering Tutorial 2: Consuming REST Services Contens How to consume REST services Example: NorthQ standalone Java application (but can be re-used

More information

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 Enterprise Java Development using JPA, Hibernate and Spring Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 About the Speaker Enterprise Architect Writer, Speaker, Editor (InfoQ)

More information

Unable To The Artifact From Any Repository Maven-clean-plugin

Unable To The Artifact From Any Repository Maven-clean-plugin Unable To The Artifact From Any Repository Maven-clean-plugin The default behaviour of the plugin is to first resolve the entire dependency tree, Any manually included purge artifacts will be removed from

More information

Lab 03 Finish and Deploy an Application. Lab 3-1: Add DELETE to the Spring Boot REST Application

Lab 03 Finish and Deploy an Application. Lab 3-1: Add DELETE to the Spring Boot REST Application Lab 03 Finish and Deploy an Application In this lab, you ll finish your version of the application featured in Lab 1. This includes creating the remaining REST calls. Test your work locally as you develop.

More information

Java SE7 Fundamentals

Java SE7 Fundamentals Java SE7 Fundamentals Introducing the Java Technology Relating Java with other languages Showing how to download, install, and configure the Java environment on a Windows system. Describing the various

More information

What s new in IBM Operational Decision Manager 8.9 Standard Edition

What s new in IBM Operational Decision Manager 8.9 Standard Edition What s new in IBM Operational Decision Manager 8.9 Standard Edition Release themes User empowerment in the Business Console Improved development and operations (DevOps) features Easier integration with

More information

Introduction to Spring Framework: Hibernate, Web MVC & REST

Introduction to Spring Framework: Hibernate, Web MVC & REST Introduction to Spring Framework: Hibernate, Web MVC & REST Course domain: Software Engineering Number of modules: 1 Duration of the course: 50 hours Sofia, 2017 Copyright 2003-2017 IPT Intellectual Products

More information

nacelle Documentation

nacelle Documentation nacelle Documentation Release 0.4.1 Patrick Carey August 16, 2014 Contents 1 Standing on the shoulders of giants 3 2 Contents 5 2.1 Getting Started.............................................. 5 2.2

More information

Resin Technical Update Summer 2018

Resin Technical Update Summer 2018 Resin Technical Update Summer 2018 Caucho Engineering We have solved our nationwide scalability problems using Resin clustering and achieved major performance benefits to our high traffic sites. -Jung

More information

Arquillian & ShrinkWrap

Arquillian & ShrinkWrap Arquillian & ShrinkWrap Integration testing made simple November 2014 What do they do? ShrinkWrap to package your test artifacts Arquillian deploys the package to target container Arquillian enriches and

More information

High performance reactive applications with Vert.x

High performance reactive applications with Vert.x High performance reactive applications with Vert.x Tim Fox Red Hat Bio Employed By Red Hat to lead the Vert.x project Worked in open source exclusively for the past 9 years Some projects I've been involved

More information

Tools. SWE 432, Fall Design and Implementation of Software for the Web

Tools. SWE 432, Fall Design and Implementation of Software for the Web Tools SWE 432, Fall 2016 Design and Implementation of Software for the Web Today Before we can really make anything, there s a bunch of technical stuff to get out of the way Tools make our lives so much

More information

KERNEL C.I. USING LINARO S AUTOMATED VALIDATION ARCHITECTURE. Wednesday, September 11, 13

KERNEL C.I. USING LINARO S AUTOMATED VALIDATION ARCHITECTURE. Wednesday, September 11, 13 KERNEL C.I. USING LINARO S AUTOMATED VALIDATION ARCHITECTURE TYLER BAKER TECHNICAL ARCHITECT HTTP://WWW.LINARO.ORG LAVA DEVELOPER LAVA EVANGELIST FORMER PLATFORM ENGINEER KERNEL HACKER MT. BAKER, WA LAVA

More information

GlassFish : From the clustering to the cloud. Fabien LEROY

GlassFish : From the clustering to the cloud. Fabien LEROY GlassFish : From the clustering to the cloud Fabien LEROY 10/02/2012 A few words about SERLI Software engineering company based in France 65 people Small company working for big ones 80% of the business

More information

5.1 Registration and Configuration

5.1 Registration and Configuration 5.1 Registration and Configuration Registration and Configuration Apache Wink provides several methods for registering resources and providers. This chapter describes registration methods and Wink configuration

More information

Giovanni Stilo, Ph.D. 140 Chars to Fly. Twitter API 1.1 and Twitter4J introduction

Giovanni Stilo, Ph.D. 140 Chars to Fly. Twitter API 1.1 and Twitter4J introduction Giovanni Stilo, Ph.D. stilo@di.uniroma1.it 140 Chars to Fly Twitter API 1.1 and Twitter4J introduction Twitter (Mandatory) Account General operation REST principles Requirements Give every thing an ID

More information

Baking a Java EE 8 Micro Pi Mike Croft Ondrej Mihályi. Payara Support

Baking a Java EE 8 Micro Pi Mike Croft Ondrej Mihályi. Payara Support Baking a Java EE 8 Micro Pi Mike Croft Ondrej Mihályi Payara Support Engineers @Payara_Fish Who are we? Payara Support @croft Snowboarder Payara Support @omihalyi Proud father What s this all about? How

More information

Кирилл Розов Android Developer

Кирилл Розов Android Developer Кирилл Розов Android Developer Dependency Injection Inversion of Control (IoC) is a design principle in which custom-written portions of a computer program receive the flow of control from a generic framework

More information

Writing Servlets and JSPs p. 1 Writing a Servlet p. 1 Writing a JSP p. 7 Compiling a Servlet p. 10 Packaging Servlets and JSPs p.

Writing Servlets and JSPs p. 1 Writing a Servlet p. 1 Writing a JSP p. 7 Compiling a Servlet p. 10 Packaging Servlets and JSPs p. Preface p. xiii Writing Servlets and JSPs p. 1 Writing a Servlet p. 1 Writing a JSP p. 7 Compiling a Servlet p. 10 Packaging Servlets and JSPs p. 11 Creating the Deployment Descriptor p. 14 Deploying Servlets

More information

Designing for Modularity with Java 9

Designing for Modularity with Java 9 Designing for Modularity with Java 9 Paul Bakker @pbakker Sander Mak @Sander_Mak Today's journey Module primer Services & DI Modular design Layers & loading Designing for Modularity with Java 9 What if

More information

Configuration Problem Unable To Locate Spring Namespacehandler For Xml Schema Namespace Jpa

Configuration Problem Unable To Locate Spring Namespacehandler For Xml Schema Namespace Jpa Configuration Problem Unable To Locate Spring Namespacehandler For Xml Schema Namespace Jpa Unable to locate Spring NamespaceHandler for XML schema namespace Application-Context gwt-maven-plugin documentation

More information

Dependency Injection & Design Principles Recap Reid Holmes

Dependency Injection & Design Principles Recap Reid Holmes Material and some slide content from: - Krzysztof Czarnecki - Ian Sommerville - Head First Design Patterns Dependency Injection & Design Principles Recap Reid Holmes REID HOLMES - SE2: SOFTWARE DESIGN

More information