SlideShare una empresa de Scribd logo
1 de 57
Spring Boot & WebSocket
Present by MingIn Wu
2015/7/15 1
Outline
• Spring Boot
– Introduction
– Spring Boot Quick Start
– Spring Boot External Tomcat plugin
– Spring Boot JSP plugin
– Spring Boot MySQL & JDBC plugin
– Spring Boot Builder Profile
– Spring Boot Log4j Plugin
– Spring Boot Security
• Spring Boot WebSocket
– Introduction
– WebSocket
• Server Side (Spring )
• Client Side (javascript & java)
– WebSocket + SockJS
• Server Side (Spring)
• Client Side (SockJS)
– STOMP + WebSocket + SockJS
• Server Side (Spring)
• Client Side (STOMP)
• Use Case Sequence Diagrams
2015/7/15 2
Spring Boot Introduction
• Primary Goal :
– Provide a faster and accessible getting started experience for all Spring development.
– Be opinionated out of the box, but get out of the way quickly as requirements start to
diverge from the defaults.
– Provide a range of non-functional features that are common to large classes of projects.
(e.g. embedded servers, security, scalability ).
– Absolutely no code generation and no requirement for XML configuration.
• System Requirements:
– Java 7+
– Tomcat 7+ or glassfish 4+
– Spring Framework 4.1.5+
2015/7/15 3
Different between Spring Boot and Spring 3
• No requirement for XML configuration:
• Spring Boot • Spring 3.x
2015/7/15 4
Spring Boot Quick Start
2015/7/15 5
• 1. Create Spring Starter Project guide :
Spring Boot Quick Start (1/3)
2015/7/15 6
• 2. pom.xml setting :
– 2-1. Packaging executable jar and war files :
– 2-2. Use Spring-boot-starter-parent to manage dependencies setting.
Spring Boot Quick Start (2/3)
2015/7/15 7
Spring Boot Quick Start (3/3)
• 3. Project Configuration :
– Spring Boot applications need very little Spring configuration.
– 1. @SpringBootApplication
– 2. @ComponentScan
– 3. extends SpringBootServletInitializer
2015/7/15 8
Spring Boot
External Tomcat plugin
2015/7/15 9
Spring Boot External Tomcat plugin
• pom.xml setting :
– To build a war file that is both executable and deployable into an external container you
need to mark the embedded container dependencies as “provided”.
2015/7/15 10
Spring Boot JSP plugin
2015/7/15 11
Spring Boot JSP plugin
• pom.xml setting :
• JSP files path :
• Set property in the ‘application.properties’
2015/7/15 12
Spring Boot
mySQL & JDBC plugin
2015/7/15 13
Spring Boot mySQL & JDBC plugin (1/4)
• 1. pom.xml setting :
• 2. Set property into the ‘application.properties’
2015/7/15 14
Spring Boot mySQL & JDBC plugin (2/4)
• 3. Create class ProjectDataSource to replace ‘dataSource-context.xml ‘:
– 3-1. Set two pair properties to the data source
2015/7/15 15
Spring Boot mySQL & JDBC plugin (3/4)
• 3. Create class ProjectDataSource to replace ‘dataSource-context.xml’ :
– 3-2. Create two bean classes ‘amway_dataSource’ & ‘sso_dataSource’.
– 3-3. Create "sqlLoader" class which is load SQL commands from ‘sql.properties’.
2015/7/15 16
Spring Boot mySQL & JDBC plugin (4/4)
• 4. Implement interface AppDao and extends by JdbcDaoSupport.
2015/7/15 17
Spring Boot Builder Profile
2015/7/15 18
Spring Boot Builder Profile
• pom.xml setting :
– It's the same configuration as other projects (like xBoard .... etc).
2015/7/15 19
Spring Boot Log4j Plugin
2015/7/15 20
Spring Boot Log4j Plugin (1/2)
• pom.xml setting :
2015/7/15 21
Spring Boot Log4j Plugin (2/2)
• comparing log4j.properties with log4j.xml
• log4j.properties • log4j.xml
2015/7/15 22
Spring Boot Security
2015/7/15 23
Spring Boot Security (1/5)
• pom.xml setting :
• System Login form :
2015/7/15 24
Spring Boot Security (2/5)
• Security Configuration :
– 1. SecurityConfiguration config
2015/7/15 25
Spring Boot Security (3/5)
• Security Configuration :
– 2. Comparing the HttpSecurity setting:
• SecurityConfiguration class • security-context.xml
2015/7/15 26
Spring Boot Security (4/5)
• Security Configuration :
– 3-1. Comparing the authentication-manager & jdbc-user-service setting:
• security-context.xml
– Step1. Setting up JdbcUserDetailsManager.
– Step2. Setting up Md5PasswordEncoder & ReflectionSaltSource.
– Step3. Md5PasswordEncoder & ReflectionSaltSource put in the DaoAuthenticationProvider.
– Step4. DaoAuthenticationProvider put in the AuthenticationManagerBuilder.
Step2
Step1
Step3&4
2015/7/15 27
Spring Boot Security (5/5)
• Security Configuration :
– 3-2. Comparing the authentication-manager & jdbc-user-service setting:
• SecurityConfiguration class
Step1
Step2
Step3
Step4
2015/7/15 28
Spring Boot WebSocket
2015/7/15 29
Spring Boot WebSocket Introduction (1/3)
• Polling vs WebSocket :
– 1. Comparison of the unnecessary network throughput overhead between the polling
and the WebSocket applications.
2015/7/15 30
Spring Boot WebSocket Introduction (2/3)
• Polling vs WebSocket :
– 2. Comparison between the polling and WebSocket applications.
2015/7/15 31
Spring Boot WebSocket Introduction (3/3)
• WebSocket Protocol :
– WebSocket is an extension to HTTP and enables streaming of data.
2015/7/15 32
Spring Boot WebSocket Example (1/5)
• Server Side (Spring) :
– 1. pom.xml setting :
– 2. Configuration (simple) :
2015/7/15 33
Spring Boot WebSocket Example (2/5)
• Server Side (Spring) :
– 4. GreetingHandler :
• extends TextWebSocketHandler class.
• Greeting Handler class can mix with @Controller and @RequestMapping.
2015/7/15 34
Spring Boot WebSocket Example (3/5)
• Client Side (javascript) :
– 1. connect()
2015/7/15 35
Spring Boot WebSocket Example (4/5)
• Client Side (javascript) :
– 2. sendMessage()
– 3. disconnect()
2015/7/15 36
Spring Boot WebSocket Example (5/5)
• Client Side (java) :
– 1. Create ChatClientEndpoint class
– 2. call
2015/7/15 37
Spring Boot WebSocket & SockJS
2015/7/15 38
Spring Boot WebSocket & SockJS Example (1/6)
• Spring Server Side :
– 1. pom.xml setting :
– 2. Configuration (simple) :
2015/7/15 39
Spring Boot WebSocket & SockJS Example (2/6)
• Spring Server Side :
– 3-1. Configuration (websocket session handshake) :
• We can capture the http session for a websocket request.
• The reason was to determine the number of websocket sessions utilizing the same underlying
http session.
2015/7/15 40
Spring Boot WebSocket & SockJS Example (3/6)
• Spring Server Side :
– 3-2. HttpSession Handshake Interceptor :
• beforeHandshake()
• afterHandshake()
2015/7/15 41
Spring Boot WebSocket & SockJS Example (4/6)
• Spring Server Side :
– 4. GreetingHandler :
• extends TextWebSocketHandler class.
• Greeting Handler class can mix with @Controller and @RequestMapping.
2015/7/15 42
Spring Boot WebSocket & SockJS Example (5/6)
• SockJS client side :
– 1. SockJS – connect()
2015/7/15 43
Spring Boot WebSocket & SockJS Example (6/6)
• SockJS client side :
– 2. SockJS – sendMessage()
– 3. SockJS – disconnect()
2015/7/15 44
Spring Boot
WebSocket & STOMP
2015/7/15 45
Spring Boot WebSocket & STOMP Example (1/6)
• STOMP :
– STOMP is a simple text-oriented messaging protocol that was originally created for
scripting languages to connect to enterprise message brokers.
– STOMP is a frame based protocol with frames modeled on HTTP.
– STOMP uses different commands like connect, send, subscribe, disconnect etc to
communicate.
• Command : SEND format (client) Command : SUBSCRIBE format (client)
• Command : MESSAGE format (server) - broadcast messages to all subscribers.
2015/7/15 46
Command
Header
Body
Command
Header
Body
Command
Header
Body
Spring Boot WebSocket & STOMP Example (2/6)
• Spring Server Side :
– 1. Configuration (stomp) :
• extends AbstractWebSocketMessageBrokerConfigurer
• Configure message broker options.
• Configure STOMP over WebSocket end-points.
2015/7/15 47
Spring Boot WebSocket & STOMP Example (3/6)
• Spring Server Side :
– 1. Configuration (stomp) :
• GreetingController class can mix with @Controller and @RequestMapping.
• @MessageMapping
• @SendTo
2015/7/15 48
Spring Boot WebSocket & STOMP Example (4/6)
• STOMP client side :
– 1. STOMP + SockJS – connect()
• 1-1 Create a socket object by SockJS.
• 1-2 Set StompClient to control the socket.
• 1-3 Implement stomp client subscribe function.
2015/7/15 49
Spring Boot WebSocket & STOMP Example (5/6)
• STOMP client side :
– 2. STOMP + SockJS – sendMessage()
– 3. STOMP + SockJS – disconnect()
2015/7/15 50
Spring Boot WebSocket & STOMP Example (6/6)
• Spring - STOMP Architecture :
– AbstractWebSocketMessageBrokerConfigurer setting :
2015/7/15 51
Send request
/app/hello
Send response
/topic/greeting
Client subscribe
/topic/greeting
Client send message
Send request
/topic/greeting
Use Case Sequence Diagrams
2015/7/15 52
Case1. WebSocket + socJS
2015/7/15 53
– Build B2B WebSocket connection between client & server.
Case2. WebSocket + STOMP - 1
– Server Use @SendTo() send message to all of subscriber client.
2015/7/15 54
Case3. WebSocket & STOMP - 2
– Server Use @SendToUser() send message to for the specified subscriber client.
2015/7/15 55
Case4. WebSocket & STOMP - 3
– Remove enableSimpleBroker() & setApplicationDestinationPrefixes() setting within
WebSocketConfig.
2015/7/15 56
End
2015/7/15 57

Más contenido relacionado

La actualidad más candente

Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
Jakub Kubrynski
 

La actualidad más candente (20)

Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
spring-api-rest.pdf
spring-api-rest.pdfspring-api-rest.pdf
spring-api-rest.pdf
 
Microservices Platform with Spring Boot, Spring Cloud Config, Spring Cloud Ne...
Microservices Platform with Spring Boot, Spring Cloud Config, Spring Cloud Ne...Microservices Platform with Spring Boot, Spring Cloud Config, Spring Cloud Ne...
Microservices Platform with Spring Boot, Spring Cloud Config, Spring Cloud Ne...
 
Support distributed computing and caching avec hazelcast
Support distributed computing and caching avec hazelcastSupport distributed computing and caching avec hazelcast
Support distributed computing and caching avec hazelcast
 
Java Spring Framework
Java Spring FrameworkJava Spring Framework
Java Spring Framework
 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - Introduction
 
Xke spring boot
Xke spring bootXke spring boot
Xke spring boot
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Spring Web MVC
Spring Web MVCSpring Web MVC
Spring Web MVC
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring boot
Spring bootSpring boot
Spring boot
 
Java 8 Lambda Expressions
Java 8 Lambda ExpressionsJava 8 Lambda Expressions
Java 8 Lambda Expressions
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
 

Destacado

SockJS Intro
SockJS IntroSockJS Intro
SockJS Intro
Ngoc Dao
 
Big Data - Linked In_DEEPU
Big Data - Linked In_DEEPUBig Data - Linked In_DEEPU
Big Data - Linked In_DEEPU
Deepu M
 
Note - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and InstallNote - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and Install
boyw165
 

Destacado (20)

Spring + WebSocket integration
Spring + WebSocket integrationSpring + WebSocket integration
Spring + WebSocket integration
 
Websockets and SockJS, Real time chatting
Websockets and SockJS, Real time chattingWebsockets and SockJS, Real time chatting
Websockets and SockJS, Real time chatting
 
SockJS Intro
SockJS IntroSockJS Intro
SockJS Intro
 
Realtime web application with java
Realtime web application with javaRealtime web application with java
Realtime web application with java
 
게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016
게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016
게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016
 
WebSockets and Java
WebSockets and JavaWebSockets and Java
WebSockets and Java
 
Dynamic Apps with WebSockets and MQTT - IBM Impact 2014
Dynamic Apps with WebSockets and MQTT - IBM Impact 2014Dynamic Apps with WebSockets and MQTT - IBM Impact 2014
Dynamic Apps with WebSockets and MQTT - IBM Impact 2014
 
Consuming web services asynchronously with Futures and Rx Observables (svcc, ...
Consuming web services asynchronously with Futures and Rx Observables (svcc, ...Consuming web services asynchronously with Futures and Rx Observables (svcc, ...
Consuming web services asynchronously with Futures and Rx Observables (svcc, ...
 
Big Data - Linked In_DEEPU
Big Data - Linked In_DEEPUBig Data - Linked In_DEEPU
Big Data - Linked In_DEEPU
 
Creating a Java EE 7 Websocket Chat Application
Creating a Java EE 7 Websocket Chat ApplicationCreating a Java EE 7 Websocket Chat Application
Creating a Java EE 7 Websocket Chat Application
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
Note - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and InstallNote - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and Install
 
Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...
Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...
Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...
 
Javantura v4 - Java or Scala – Web development with Playframework 2.5.x - Kre...
Javantura v4 - Java or Scala – Web development with Playframework 2.5.x - Kre...Javantura v4 - Java or Scala – Web development with Playframework 2.5.x - Kre...
Javantura v4 - Java or Scala – Web development with Playframework 2.5.x - Kre...
 
Javantura v4 - DMN – supplement your BPMN - Željko Šmaguc
Javantura v4 - DMN – supplement your BPMN - Željko ŠmagucJavantura v4 - DMN – supplement your BPMN - Željko Šmaguc
Javantura v4 - DMN – supplement your BPMN - Željko Šmaguc
 
Javantura v4 - JVM++ The GraalVM - Martin Toshev
Javantura v4 - JVM++ The GraalVM - Martin ToshevJavantura v4 - JVM++ The GraalVM - Martin Toshev
Javantura v4 - JVM++ The GraalVM - Martin Toshev
 
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
Javantura v4 - FreeMarker in Spring web - Marin KalapaćJavantura v4 - FreeMarker in Spring web - Marin Kalapać
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
 
Javantura v4 - Getting started with Apache Spark - Dinko Srkoč
Javantura v4 - Getting started with Apache Spark - Dinko SrkočJavantura v4 - Getting started with Apache Spark - Dinko Srkoč
Javantura v4 - Getting started with Apache Spark - Dinko Srkoč
 
Javantura v4 - Let me tell you a story why Scrum is not for you - Roko Roić
Javantura v4 - Let me tell you a story why Scrum is not for you - Roko RoićJavantura v4 - Let me tell you a story why Scrum is not for you - Roko Roić
Javantura v4 - Let me tell you a story why Scrum is not for you - Roko Roić
 
Javantura v4 - KumuluzEE – Microservices with Java - Matjaž B. Jurič & Tilen ...
Javantura v4 - KumuluzEE – Microservices with Java - Matjaž B. Jurič & Tilen ...Javantura v4 - KumuluzEE – Microservices with Java - Matjaž B. Jurič & Tilen ...
Javantura v4 - KumuluzEE – Microservices with Java - Matjaž B. Jurič & Tilen ...
 

Similar a Spring Boot & WebSocket

Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
divzi1913
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
Long Nguyen
 

Similar a Spring Boot & WebSocket (20)

Spring boot wednesday
Spring boot wednesdaySpring boot wednesday
Spring boot wednesday
 
Spring_Boot_Microservices-5_Day_Session.pptx
Spring_Boot_Microservices-5_Day_Session.pptxSpring_Boot_Microservices-5_Day_Session.pptx
Spring_Boot_Microservices-5_Day_Session.pptx
 
Bootify your spring application
Bootify your spring applicationBootify your spring application
Bootify your spring application
 
Spring Boot. Boot up your development
Spring Boot. Boot up your developmentSpring Boot. Boot up your development
Spring Boot. Boot up your development
 
Testing Spring MVC and REST Web Applications
Testing Spring MVC and REST Web ApplicationsTesting Spring MVC and REST Web Applications
Testing Spring MVC and REST Web Applications
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
 
"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец
 
Integrating Servlets and JSP (The MVC Architecture)
Integrating Servlets and JSP  (The MVC Architecture)Integrating Servlets and JSP  (The MVC Architecture)
Integrating Servlets and JSP (The MVC Architecture)
 
Next stop: Spring 4
Next stop: Spring 4Next stop: Spring 4
Next stop: Spring 4
 
Spring data jpa are used to develop spring applications
Spring data jpa are used to develop spring applicationsSpring data jpa are used to develop spring applications
Spring data jpa are used to develop spring applications
 
Tuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on MobicentsTuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on Mobicents
 
Microservice test strategies for applications based on Spring, K8s and Istio
Microservice test strategies for applications based on Spring, K8s and IstioMicroservice test strategies for applications based on Spring, K8s and Istio
Microservice test strategies for applications based on Spring, K8s and Istio
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
 
Session 41 - Struts 2 Introduction
Session 41 - Struts 2 IntroductionSession 41 - Struts 2 Introduction
Session 41 - Struts 2 Introduction
 
Struts 2 - Introduction
Struts 2 - Introduction Struts 2 - Introduction
Struts 2 - Introduction
 
19servlets
19servlets19servlets
19servlets
 
Servlets
ServletsServlets
Servlets
 
Servlets Java Slides & Presentation
Servlets Java Slides & Presentation Servlets Java Slides & Presentation
Servlets Java Slides & Presentation
 
Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
 

Último

result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
Tonystark477637
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
ankushspencer015
 

Último (20)

result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
Glass Ceramics: Processing and Properties
Glass Ceramics: Processing and PropertiesGlass Ceramics: Processing and Properties
Glass Ceramics: Processing and Properties
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdf
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICSUNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 

Spring Boot & WebSocket

  • 1. Spring Boot & WebSocket Present by MingIn Wu 2015/7/15 1
  • 2. Outline • Spring Boot – Introduction – Spring Boot Quick Start – Spring Boot External Tomcat plugin – Spring Boot JSP plugin – Spring Boot MySQL & JDBC plugin – Spring Boot Builder Profile – Spring Boot Log4j Plugin – Spring Boot Security • Spring Boot WebSocket – Introduction – WebSocket • Server Side (Spring ) • Client Side (javascript & java) – WebSocket + SockJS • Server Side (Spring) • Client Side (SockJS) – STOMP + WebSocket + SockJS • Server Side (Spring) • Client Side (STOMP) • Use Case Sequence Diagrams 2015/7/15 2
  • 3. Spring Boot Introduction • Primary Goal : – Provide a faster and accessible getting started experience for all Spring development. – Be opinionated out of the box, but get out of the way quickly as requirements start to diverge from the defaults. – Provide a range of non-functional features that are common to large classes of projects. (e.g. embedded servers, security, scalability ). – Absolutely no code generation and no requirement for XML configuration. • System Requirements: – Java 7+ – Tomcat 7+ or glassfish 4+ – Spring Framework 4.1.5+ 2015/7/15 3
  • 4. Different between Spring Boot and Spring 3 • No requirement for XML configuration: • Spring Boot • Spring 3.x 2015/7/15 4
  • 5. Spring Boot Quick Start 2015/7/15 5
  • 6. • 1. Create Spring Starter Project guide : Spring Boot Quick Start (1/3) 2015/7/15 6
  • 7. • 2. pom.xml setting : – 2-1. Packaging executable jar and war files : – 2-2. Use Spring-boot-starter-parent to manage dependencies setting. Spring Boot Quick Start (2/3) 2015/7/15 7
  • 8. Spring Boot Quick Start (3/3) • 3. Project Configuration : – Spring Boot applications need very little Spring configuration. – 1. @SpringBootApplication – 2. @ComponentScan – 3. extends SpringBootServletInitializer 2015/7/15 8
  • 9. Spring Boot External Tomcat plugin 2015/7/15 9
  • 10. Spring Boot External Tomcat plugin • pom.xml setting : – To build a war file that is both executable and deployable into an external container you need to mark the embedded container dependencies as “provided”. 2015/7/15 10
  • 11. Spring Boot JSP plugin 2015/7/15 11
  • 12. Spring Boot JSP plugin • pom.xml setting : • JSP files path : • Set property in the ‘application.properties’ 2015/7/15 12
  • 13. Spring Boot mySQL & JDBC plugin 2015/7/15 13
  • 14. Spring Boot mySQL & JDBC plugin (1/4) • 1. pom.xml setting : • 2. Set property into the ‘application.properties’ 2015/7/15 14
  • 15. Spring Boot mySQL & JDBC plugin (2/4) • 3. Create class ProjectDataSource to replace ‘dataSource-context.xml ‘: – 3-1. Set two pair properties to the data source 2015/7/15 15
  • 16. Spring Boot mySQL & JDBC plugin (3/4) • 3. Create class ProjectDataSource to replace ‘dataSource-context.xml’ : – 3-2. Create two bean classes ‘amway_dataSource’ & ‘sso_dataSource’. – 3-3. Create "sqlLoader" class which is load SQL commands from ‘sql.properties’. 2015/7/15 16
  • 17. Spring Boot mySQL & JDBC plugin (4/4) • 4. Implement interface AppDao and extends by JdbcDaoSupport. 2015/7/15 17
  • 18. Spring Boot Builder Profile 2015/7/15 18
  • 19. Spring Boot Builder Profile • pom.xml setting : – It's the same configuration as other projects (like xBoard .... etc). 2015/7/15 19
  • 20. Spring Boot Log4j Plugin 2015/7/15 20
  • 21. Spring Boot Log4j Plugin (1/2) • pom.xml setting : 2015/7/15 21
  • 22. Spring Boot Log4j Plugin (2/2) • comparing log4j.properties with log4j.xml • log4j.properties • log4j.xml 2015/7/15 22
  • 24. Spring Boot Security (1/5) • pom.xml setting : • System Login form : 2015/7/15 24
  • 25. Spring Boot Security (2/5) • Security Configuration : – 1. SecurityConfiguration config 2015/7/15 25
  • 26. Spring Boot Security (3/5) • Security Configuration : – 2. Comparing the HttpSecurity setting: • SecurityConfiguration class • security-context.xml 2015/7/15 26
  • 27. Spring Boot Security (4/5) • Security Configuration : – 3-1. Comparing the authentication-manager & jdbc-user-service setting: • security-context.xml – Step1. Setting up JdbcUserDetailsManager. – Step2. Setting up Md5PasswordEncoder & ReflectionSaltSource. – Step3. Md5PasswordEncoder & ReflectionSaltSource put in the DaoAuthenticationProvider. – Step4. DaoAuthenticationProvider put in the AuthenticationManagerBuilder. Step2 Step1 Step3&4 2015/7/15 27
  • 28. Spring Boot Security (5/5) • Security Configuration : – 3-2. Comparing the authentication-manager & jdbc-user-service setting: • SecurityConfiguration class Step1 Step2 Step3 Step4 2015/7/15 28
  • 30. Spring Boot WebSocket Introduction (1/3) • Polling vs WebSocket : – 1. Comparison of the unnecessary network throughput overhead between the polling and the WebSocket applications. 2015/7/15 30
  • 31. Spring Boot WebSocket Introduction (2/3) • Polling vs WebSocket : – 2. Comparison between the polling and WebSocket applications. 2015/7/15 31
  • 32. Spring Boot WebSocket Introduction (3/3) • WebSocket Protocol : – WebSocket is an extension to HTTP and enables streaming of data. 2015/7/15 32
  • 33. Spring Boot WebSocket Example (1/5) • Server Side (Spring) : – 1. pom.xml setting : – 2. Configuration (simple) : 2015/7/15 33
  • 34. Spring Boot WebSocket Example (2/5) • Server Side (Spring) : – 4. GreetingHandler : • extends TextWebSocketHandler class. • Greeting Handler class can mix with @Controller and @RequestMapping. 2015/7/15 34
  • 35. Spring Boot WebSocket Example (3/5) • Client Side (javascript) : – 1. connect() 2015/7/15 35
  • 36. Spring Boot WebSocket Example (4/5) • Client Side (javascript) : – 2. sendMessage() – 3. disconnect() 2015/7/15 36
  • 37. Spring Boot WebSocket Example (5/5) • Client Side (java) : – 1. Create ChatClientEndpoint class – 2. call 2015/7/15 37
  • 38. Spring Boot WebSocket & SockJS 2015/7/15 38
  • 39. Spring Boot WebSocket & SockJS Example (1/6) • Spring Server Side : – 1. pom.xml setting : – 2. Configuration (simple) : 2015/7/15 39
  • 40. Spring Boot WebSocket & SockJS Example (2/6) • Spring Server Side : – 3-1. Configuration (websocket session handshake) : • We can capture the http session for a websocket request. • The reason was to determine the number of websocket sessions utilizing the same underlying http session. 2015/7/15 40
  • 41. Spring Boot WebSocket & SockJS Example (3/6) • Spring Server Side : – 3-2. HttpSession Handshake Interceptor : • beforeHandshake() • afterHandshake() 2015/7/15 41
  • 42. Spring Boot WebSocket & SockJS Example (4/6) • Spring Server Side : – 4. GreetingHandler : • extends TextWebSocketHandler class. • Greeting Handler class can mix with @Controller and @RequestMapping. 2015/7/15 42
  • 43. Spring Boot WebSocket & SockJS Example (5/6) • SockJS client side : – 1. SockJS – connect() 2015/7/15 43
  • 44. Spring Boot WebSocket & SockJS Example (6/6) • SockJS client side : – 2. SockJS – sendMessage() – 3. SockJS – disconnect() 2015/7/15 44
  • 45. Spring Boot WebSocket & STOMP 2015/7/15 45
  • 46. Spring Boot WebSocket & STOMP Example (1/6) • STOMP : – STOMP is a simple text-oriented messaging protocol that was originally created for scripting languages to connect to enterprise message brokers. – STOMP is a frame based protocol with frames modeled on HTTP. – STOMP uses different commands like connect, send, subscribe, disconnect etc to communicate. • Command : SEND format (client) Command : SUBSCRIBE format (client) • Command : MESSAGE format (server) - broadcast messages to all subscribers. 2015/7/15 46 Command Header Body Command Header Body Command Header Body
  • 47. Spring Boot WebSocket & STOMP Example (2/6) • Spring Server Side : – 1. Configuration (stomp) : • extends AbstractWebSocketMessageBrokerConfigurer • Configure message broker options. • Configure STOMP over WebSocket end-points. 2015/7/15 47
  • 48. Spring Boot WebSocket & STOMP Example (3/6) • Spring Server Side : – 1. Configuration (stomp) : • GreetingController class can mix with @Controller and @RequestMapping. • @MessageMapping • @SendTo 2015/7/15 48
  • 49. Spring Boot WebSocket & STOMP Example (4/6) • STOMP client side : – 1. STOMP + SockJS – connect() • 1-1 Create a socket object by SockJS. • 1-2 Set StompClient to control the socket. • 1-3 Implement stomp client subscribe function. 2015/7/15 49
  • 50. Spring Boot WebSocket & STOMP Example (5/6) • STOMP client side : – 2. STOMP + SockJS – sendMessage() – 3. STOMP + SockJS – disconnect() 2015/7/15 50
  • 51. Spring Boot WebSocket & STOMP Example (6/6) • Spring - STOMP Architecture : – AbstractWebSocketMessageBrokerConfigurer setting : 2015/7/15 51 Send request /app/hello Send response /topic/greeting Client subscribe /topic/greeting Client send message Send request /topic/greeting
  • 52. Use Case Sequence Diagrams 2015/7/15 52
  • 53. Case1. WebSocket + socJS 2015/7/15 53 – Build B2B WebSocket connection between client & server.
  • 54. Case2. WebSocket + STOMP - 1 – Server Use @SendTo() send message to all of subscriber client. 2015/7/15 54
  • 55. Case3. WebSocket & STOMP - 2 – Server Use @SendToUser() send message to for the specified subscriber client. 2015/7/15 55
  • 56. Case4. WebSocket & STOMP - 3 – Remove enableSimpleBroker() & setApplicationDestinationPrefixes() setting within WebSocketConfig. 2015/7/15 56

Notas del editor

  1. 1. 提供更快和方便入門體驗所有的Spring開發。 2. 希望能跳開種種限制,卻走不出的方式達到迅速開始的要求。 3. 提供一系列的非功能特性的常用大類的項目。(例如嵌入式服務器,安全性,可擴展性)。 4. 沒有代碼產生和XML配置要求。
  2. 1. STOMP是最初創建的腳本語言來連接到企業信息經紀人簡單的文本為導向的消息傳遞協議。 2. STOMP是仿照HTTP幀一幀的基礎協議。 3. STOMP使用不同的命令狀連接,發送,訂閱,斷開等進行溝通。