This talk introduces some of the compelling features coming in Spring 3.1, 3.2 and then gazes into the future and looks at some of the powerful new features in the upcoming Spring 4.0 release.
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScriptDave Stokes
The MySQL Shell has a JavaScript mode where you can use JS libraries to access you data and you can also write (and save) your own custom reports (or programs) for future use.
Asynchronous web apps with the Play Framework 2.0Oscar Renalias
Brief introduction to the asynchronous and reactive IO capabilities available in Play 2.0.
Source code of the demos available here: https://github.com/oscarrenalias/wjax-2012-play-async-apps
This talk introduces some of the compelling features coming in Spring 3.1, 3.2 and then gazes into the future and looks at some of the powerful new features in the upcoming Spring 4.0 release.
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScriptDave Stokes
The MySQL Shell has a JavaScript mode where you can use JS libraries to access you data and you can also write (and save) your own custom reports (or programs) for future use.
Asynchronous web apps with the Play Framework 2.0Oscar Renalias
Brief introduction to the asynchronous and reactive IO capabilities available in Play 2.0.
Source code of the demos available here: https://github.com/oscarrenalias/wjax-2012-play-async-apps
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...Dave Stokes
Speeding up queries on a MySQL server with indexes and histograms is not a mysterious art but simple engineering. This presentation is an indepth introduction that was presented on March 30th to the Quest Insynch and Open Source 101 conferences
MySQL 8.0 New Features -- September 27th presentation for Open Source SummitDave Stokes
MySQL 8.0 has many new features that you probably need to know about but don't. Like default security, window functions, CTEs, CATS (not what you think), JSON_TABLE(), and UTF8MB4 support.
A Walking Tour of (almost) all of Springdom Joshua Long
this is the deck for my 3+ hour walking tour talk that I give as a workshop at various conferences. This talk introduces practically everything in Spring -- come into the talk unaware of the concepts or frameworks and leave with a working knowledge of all the frameworks, and of all the applications for the technologies.
Longhorn PHP - MySQL Indexes, Histograms, Locking Options, and Other Ways to ...Dave Stokes
Slow query? Add an index or two! But things are suddenly even slower! Indexes are great tools to speed data lookup but have overhead issues. Histograms don’t have that overhead but may not be suited. And how you lock rows also effects performance. So what do you do to speed up queries smartly? This is a clear, detailed look at what you can do to really speed up your queries in a logical, orthogonal process. Updated Presentation for Longhorn PHP Conference October 14th, 2021
A short introduction (with many examples) to the Scala programming language and also an introduction to using the Play! Framework for modern, safe, efffcient and reactive web applications.
You may all know that JSON is a subset of JavaScript, but… Did you know that HTML5 implements NoSQL databases? Did you know that JavaScript was recommended for REST by HTTP co-creator Roy T. Fielding himself? Did you know that map & reduce are part of the native JavaScript API? Did you know that most NoSQL solutions integrate a JavaScript engine? CouchDB, MongoDB, WakandaDB, ArangoDB, OrientDB, Riak…. And when they don’t, they have a shell client which does. The story of NoSQL and JavaScript goes beyond your expectations and opens more opportunities than you might imagine… What better match could you find than a flexible and dynamic language for schemaless databases? Isn’t an event-driven language what you’ve been waiting for to manage consistency? When NoSQL doesn’t come to JavaScript, JavaScript comes to NoSQL. And does it very well.
Server Sent Events, Async Servlet, Web Sockets and JSON; born to work together!Masoud Kalali
This session focuses on how Java EE 7 provides extensive set of new and enhanced features to support standards like HTML5, WebSockets, and Server Sent Events among others.In this session we will show how these new features are designed and matched to work together for developing lightweight solutions matching end users high expectation from a web application’s responsiveness. The session will cover best practices and design patterns governing application development using JAX-RS 2.0, Async Servlet, and JSON-P (among others) as well as iterating over the pitfalls that should be avoided. During the session we will show code snippets and block diagrams that clarify use of APIs coming from the demo application we will show at the end.
Connecting to MySQL in Java via Connector/J. With High Availability feature in MySQL using Replication, Fabric or MySQL Cluster, There are different ways of usage in connector/J.
Very often, if not always, we need to create jobs running periodically. It can be database cleanup, mail sending, statistics calculations, … One implementation among other is to create DirectActions invoked by Cron but there is a better option: Quartz. Quartz is a famous java open source library that allows developers to create jobs easily. In this session, you will learn how it's easy to integrate Quartz in your WebObjects application and how you can use job persistance based on EOF.
Spring in the Cloud - using Spring with Cloud FoundryJoshua Long
This talk's about using the power of the Spring framework with Cloud Foundry, the open source PaaS (platform as-a-service) from VMware. This is a bit more deep an introduction than my other Spring and Cloud Foundry talk, and so I've kept both, while encouraging people to check this one out, first.
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...Dave Stokes
Speeding up queries on a MySQL server with indexes and histograms is not a mysterious art but simple engineering. This presentation is an indepth introduction that was presented on March 30th to the Quest Insynch and Open Source 101 conferences
MySQL 8.0 New Features -- September 27th presentation for Open Source SummitDave Stokes
MySQL 8.0 has many new features that you probably need to know about but don't. Like default security, window functions, CTEs, CATS (not what you think), JSON_TABLE(), and UTF8MB4 support.
A Walking Tour of (almost) all of Springdom Joshua Long
this is the deck for my 3+ hour walking tour talk that I give as a workshop at various conferences. This talk introduces practically everything in Spring -- come into the talk unaware of the concepts or frameworks and leave with a working knowledge of all the frameworks, and of all the applications for the technologies.
Longhorn PHP - MySQL Indexes, Histograms, Locking Options, and Other Ways to ...Dave Stokes
Slow query? Add an index or two! But things are suddenly even slower! Indexes are great tools to speed data lookup but have overhead issues. Histograms don’t have that overhead but may not be suited. And how you lock rows also effects performance. So what do you do to speed up queries smartly? This is a clear, detailed look at what you can do to really speed up your queries in a logical, orthogonal process. Updated Presentation for Longhorn PHP Conference October 14th, 2021
A short introduction (with many examples) to the Scala programming language and also an introduction to using the Play! Framework for modern, safe, efffcient and reactive web applications.
You may all know that JSON is a subset of JavaScript, but… Did you know that HTML5 implements NoSQL databases? Did you know that JavaScript was recommended for REST by HTTP co-creator Roy T. Fielding himself? Did you know that map & reduce are part of the native JavaScript API? Did you know that most NoSQL solutions integrate a JavaScript engine? CouchDB, MongoDB, WakandaDB, ArangoDB, OrientDB, Riak…. And when they don’t, they have a shell client which does. The story of NoSQL and JavaScript goes beyond your expectations and opens more opportunities than you might imagine… What better match could you find than a flexible and dynamic language for schemaless databases? Isn’t an event-driven language what you’ve been waiting for to manage consistency? When NoSQL doesn’t come to JavaScript, JavaScript comes to NoSQL. And does it very well.
Server Sent Events, Async Servlet, Web Sockets and JSON; born to work together!Masoud Kalali
This session focuses on how Java EE 7 provides extensive set of new and enhanced features to support standards like HTML5, WebSockets, and Server Sent Events among others.In this session we will show how these new features are designed and matched to work together for developing lightweight solutions matching end users high expectation from a web application’s responsiveness. The session will cover best practices and design patterns governing application development using JAX-RS 2.0, Async Servlet, and JSON-P (among others) as well as iterating over the pitfalls that should be avoided. During the session we will show code snippets and block diagrams that clarify use of APIs coming from the demo application we will show at the end.
Connecting to MySQL in Java via Connector/J. With High Availability feature in MySQL using Replication, Fabric or MySQL Cluster, There are different ways of usage in connector/J.
Very often, if not always, we need to create jobs running periodically. It can be database cleanup, mail sending, statistics calculations, … One implementation among other is to create DirectActions invoked by Cron but there is a better option: Quartz. Quartz is a famous java open source library that allows developers to create jobs easily. In this session, you will learn how it's easy to integrate Quartz in your WebObjects application and how you can use job persistance based on EOF.
Spring in the Cloud - using Spring with Cloud FoundryJoshua Long
This talk's about using the power of the Spring framework with Cloud Foundry, the open source PaaS (platform as-a-service) from VMware. This is a bit more deep an introduction than my other Spring and Cloud Foundry talk, and so I've kept both, while encouraging people to check this one out, first.
The outline of the presentation (presented at NDC 2011, Oslo, Norway):
- Short summary of OData evolution and current state
- Quick presentation of tools used to build and test OData services and clients (Visual Studio, LinqPad, Fiddler)
- Definition of canonical REST service, conformance of DataService-based implementation
- Updateable OData services
- Sharing single conceptual data model between databases from different vendors
- OData services without Entity Framework (NHibernate, custom data provider)
- Practical tips (logging, WCF binding, deployment)
This release aims at addressing the long-awaited JDK 11 compatibility which enables enterprises to migrate their middleware solutions to the LTS JDK version. In addition, this release features new productivity improvements including built-in test framework with comprehensive tooling support from Integration Studio and support for cloud-native integration requirements.
This WSO2 Enterprise Integrator release brings new product components and features specifically targeted to help developers build and deploy container-native integration solutions easily.
Watch the webinar on-demand here: https://wso2.com/library/webinars/2020/01/whats-new-in-wso2-enterprise-integrator-december-2019-release/
4 years ago, mid 2013, we have identified a gap in the cloud echo-system. The landscape of IaaS, PaaS and SaaS provides solutions for VMs, Container and Networking, platforms of different types for backend developers, Backends for mobile developers and ready made software for individuals and enterprises. What is missing in the middle is the platform for web-sites and web-apps.
4 years down the line, with the emergence of Serverless, there are still no players in this gap. We will talk about what makes a platform for web-sites and web-apps. Things frontend optimized javascript, SEO, visual builder, web methods & backend javascript as well as request time container boot.
We have built Wix Code over the last 4 years targeting this exact gap – a serverless platform for website and web applications, and so …
Wix is taking the risk of predicting the future of serverless computing and where it should be 4 years from now.
Welcome to presentation on Spring boot which is really great and relatively a new project from Spring.io. Its aim is to simplify creating new spring framework based projects and unify their configurations by applying some conventions. This convention over configuration is already successfully applied in so called modern web based frameworks like Grails, Django, Play framework, Rails etc.
Python And The MySQL X DevAPI - PyCaribbean 2019Dave Stokes
This presentation covers how to use the MySQL X DevAPI with the Python Programming Language, presented at the first PyCaribbean Conference, Santo Domino February 16th 2019
Cloud State of the Union for Java DevelopersBurr Sutter
This presentation provides a broad overview of what is going on in the Cloud computing world - for Java developers - presented on Dec 21st 2010 at the Atlanta Java Users Group - ajug.org - no audio was recorded.
Has the traditional intro to event looped servers (thanks Ryan!) with a couple of examples of why I think node.js is particularly exciting today. Code for the demos can be found at https://github.com/davidpadbury/node-intro.
Description de la migration d'un portail d'entreprise maison réalisé au sein de la société Santéclair de la version 1.0 basée sur OSGi (Felix) + Vaadin + Gemini vers une archi OSGi (Felix) + Vaadin + iPOJO
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
3. mergerandAcquisition
?
● January 4, 2004 : EMC² acquires VMware
● August 10, 2009 : VMware acquires
Springsource
● March 20, 2012 : EMC² acquires Pivotal
Labs
● April 1, 2013 : Pivotal Software is
created
○ All of VMware's applications and
developer-oriented products,
including Spring, tc Server, Cloud
Foundry, RabbitMQ, GemFire, and
SQLFire were transferred to this
organization
● October 12, 2015 : Dell Inc announced its
intent to acquire EMC² in a cash-and-stock
deal valued at $67 billion
5. Someofboringspringreleasedates
● 1.0.0 released in March 2004
● 2.0.0 released in October 2006
● 2.5.0 released in November 2007
● 3.0.0 released in December 2009
● 3.1.0 released in December 2011
● 3.2.5 released in November 2013
● 4.0.0 released in December 2013
● 4.2.0 released in July 2015
6. Atthebeginning
● Core container
○ the core of IoC pattern
● Beans / Core
○ fundamental parts of the
framework
○ IoC / Dependency Injection
○ BeanFactory
● Context
○ Manage Spring context
○ I8N
○ EJB/JMX
○ caching/mailing/scheduling/
template engine
● SpEL
○ Extend unified EL
7. Atthebeginning
● AOP
○ AOP Alliance-compliant aspect-
oriented programming by proxying
spring beans
● Aspects
○ AspectJ integration
● Instrumentation
○ class instrumentation support
○ classloader implementation
● Messaging (Spring 4)
○ Abstraction for messaging-based
applications
○ Annotations for mapping messages
to methods
9. Atthebeginning
● Servlet
○ Basic web integration
○ Web-oriented application context
● Web
○ Spring MVC
○ Rest Webservices
● WebSocket
○ Abstraction for websocket
integration
● Portlet
○ MVC implementation to be used in
a Portlet environment
10. Atthebeginning
● Test
○ Unit testing / integration
testing with JUnit or TestNG
○ Mock spring commons object
○ Consistent loading of Spring
ApplicationContexts and caching
of those context
12. Springsideprojects
● Based upon spring framework runtime
● 17 side projects
● Community Projects
○ Spring ROO
○ Spring Scala
● Pojects in the Attic
○ Spring BlaezDS Integration
○ Spring Loaded
○ Spring Shell
○ Rest Shell
13. SpringDATA
● Consitent Spring-based data access
● Main Modules
○ Spring Data commons
○ Spring Data JPA
○ Spring Data MongoDB
○ Spring Data Redis
○ Spring Data Solr
○ Spring Data Gemfire
○ Spring Data KeyValue
○ Spring Data REST
● Community modules
○ Spring Data JDBC Extensions
○ Spring for Apache Hadoop
● Interface driven, no more need of
implementation
14. SpringDATA
public interface SimpleUserRepository extends CrudRepository<User,
Long> {
User findByTheUsersName(String username);
List<User> findByLastname(String lastname);
@Query("select u from User u where u.firstname = ?")
List<User> findByFirstname(String firstname);
@Query("select u from User u where u.firstname = :name or
u.lastname = :name")
List<User> findByFirstnameOrLastname(@Param("name") String
name);
}
15. SpringXD
● BigData Spring solution
● Data ingestion
● Real time analytics
● Batch processing
● Data export
19. SpringSecurity
● Comprehensive and extensible support
for both Authentication and
Authorization
● Protection against attacks like
session fixation, clickjacking,
cross site request forgery, etc.
● Servlet API integration
● Optional integration with Spring Web
MVC
● Much more...
20. SpringSecurity
@EnableWebSecurity
public class SecurityConfig {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
21. SpringIntegration
● Implementation of most of the Entreprise
Integration Patterns
○ Endpoint
○ Channel (P2P and Publish/Subscribe)
○ Aggregator
○ Filter
○ Transformer
○ Control Bus
● Integration with External Systems
○ ReST/HTTP
○ FTP/SFTP
○ Twitter
○ Webservices (Soap and ReST)
○ TCP/UDP
○ JMS
○ RabbitMQ
○ Email
● Extensive JMX support
22. SpringIntegration
@Configuration
@SpringBootApplication
@IntegrationComponentScan
public class Application {
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
TempConverter converter = ctx.getBean(TempConverter.class);
System.out.println(converter.fahrenheitToCelcius(68.0f));
ctx.close();
}
@MessagingGateway
public interface TempConverter {
@Gateway(requestChannel = "convert.input")
float fahrenheitToCelcius(float fahren);
}
@Bean
public IntegrationFlow convert() {
return f -> f
.transform(payload ->
"<FahrenheitToCelsius xmlns="http://www.w3schools.com/webservices/">"
+ "<Fahrenheit>" + payload +"</Fahrenheit>"
+ "</FahrenheitToCelsius>")
.enrichHeaders(h -> h
.header(WebServiceHeaders.SOAP_ACTION,
"http://www.w3schools.com/webservices/FahrenheitToCelsius"))
.handle(new SimpleWebServiceOutboundGateway(
"http://www.w3schools.com/webservices/tempconvert.asmx"))
.transform(Transformers.xpath("/*[local-name()="FahrenheitToCelsiusResponse"]"
+ "/*[local-name()="FahrenheitToCelsiusResult"]"));
}
}
23. ● Contract-First development
● Loose coupling between contract and
impl
● Powerful mappings
● XML Api support
● Support WS-Security
● Integrates with Spring Security
● Low activity in the repository
SpringWebServices
24. SpringWebServices
<beans xmlns="http://www.springframework.org/schema/beans">
<bean id="webServiceClient" class="WebServiceClient">
<property name="defaultUri" value="http://localhost:8080/WebService"/>
</bean>
</beans>
public class WebServiceClient {
private static final String MESSAGE =
"<message xmlns="http://tempuri.org">Hello World</message>";
private final WebServiceTemplate webServiceTemplate = new
WebServiceTemplate();
public void setDefaultUri(String defaultUri) {
webServiceTemplate.setDefaultUri(defaultUri);
}
// send to the configured default URI
public void simpleSendAndReceive() {
StreamSource source = new StreamSource(new StringReader(MESSAGE));
StreamResult result = new StreamResult(System.out);
webServiceTemplate.sendSourceAndReceiveToResult(source, result);
}
// send to an explicit URI
public void customSendAndReceive() {
StreamSource source = new StreamSource(new StringReader(MESSAGE));
StreamResult result = new StreamResult(System.out);
webServiceTemplate.sendSourceAndReceiveToResult("http://localhost:
8080/AnotherWebService",
source, result);
}
}
25. SpringWebFlow
● Allows implementing the “flows” of a
web application
● Clear start and end point
● User must go through a set of
screens in a specific order
● Changes not finalized until the last
step
27. SpringHATEOAS
● HATEOAS : Hypermedia as the Engine
of Application State
● Model classes for link, resource
representation models
● Link builder API to create links
pointing to Spring MVC controller
methods
● Support for hypermedia formats like
HAL
28. SpringHATEOAS
class BookmarkResource extends ResourceSupport {
private final Bookmark bookmark;
public BookmarkResource(Bookmark bookmark) {
String username = bookmark.getAccount().getUsername();
this.bookmark = bookmark;
this.add(new Link(bookmark.getUri(), "bookmark-uri"));
this.add(linkTo(BookmarkRestController.class,
username).withRel("bookmarks"));
this.add(linkTo(methodOn(BookmarkRestController.class,
username).readBookmark(username, bookmark.getId())).
withSelfRel());
}
public Bookmark getBookmark() {
return bookmark;
}
}
29. SpringLDAP
● Provides LDAP template which eliminates
the need to worry about creating and
closing LdapContext and looping through
NamingEnumeration
● Contains classes for dynamically building
LDAP filters and Distinguished Names
● Client-side LDAP transaction management
31. SpringSession
● API and implementations for managing a
user's session
● HttpSession - allows replacing the
HttpSession in an application container
(i.e. Tomcat) neutral way
○ Clustered Sessions
○ Multiple Browser Sessions
○ RESTful APIs
● WebSocket - provides the ability to keep
the HttpSession alive when receiving
WebSocket messages
35. SpringAMQP
● Advanced Message Queuing Protocol
Spring integration
● Listener container for asynchronous
processing of inbound messages
● RabbitTemplate for sending and
receiving messages
● RabbitAdmin for automatically
declaring queues, exchanges and
bindings
37. SpringMobile
● A Device resolver abstraction for server-
side detection of mobile and tablet devices
● Site preference management that allows the
user to indicate if he or she prefers a
"normal", "mobile", or "tablet" experience
● A site switcher capable of switching the
user to the most appropriate site
● Device aware view management for organizing
and managing different views for specific
devices
38. SpringMobile
@Controller
public class DeviceDetectionController {
@RequestMapping("/detect-device")
public @ResponseBody String detectDevice(Device device)
{
String deviceType = "unknown";
if (device.isNormal()) {
deviceType = "normal";
} else if (device.isMobile()) {
deviceType = "mobile";
} else if (device.isTablet()) {
deviceType = "tablet";
}
return "Hello " + deviceType + " browser!";
}
}
39. SpringforAndroid
● A Rest Client for Android
● Auth support for accessing secure APIs
// The connection URL
String url = "https://ajax.googleapis.com/ajax/" +
"services/search/web?v=1.0&q={query}";
// Create a new RestTemplate instance
RestTemplate restTemplate = new RestTemplate();
// Add the String message converter
restTemplate.getMessageConverters().add(new
StringHttpMessageConverter());
// Make the HTTP GET request, marshaling the response to a
String
String result = restTemplate.getForObject(url, String.class,
"Android");
40. SpringCloud
● Tools for developers to quickly
build distributed apps
○ Distributed/versioned configuration
○ Service registration and discovery`
○ Routing
○ Service-to-service calls
○ Load balancing
○ Circuit Breakers
○ Global locks
○ Leadership election and cluster state
○ Distributed messaging
● 16 sub-projects
● Integration with spring boot
41. SpringCloud
@Configuration
@EnableAutoConfiguration
@RestController
public class Application {
@Value("${config.name}")
String name = "World";
@RequestMapping("/")
public String home() {
"Hello " + name;
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
42. SpringBoot
● Create stand-alone Spring
applications
● Embed Tomcat, Jetty or Undertow
directly (make JAR not WAR)
● Provide opinionated 'starter' POMs
to simplify your Maven configuration
● Automatically configure Spring
whenever possible
● Provide production-ready features
such as metrics, health checks and
externalized configuration
● Absolutely no code generation and no
requirement for XML configuration