This talk introduces the role that Spring MVC and REST can play as a service-side endpoint model that can be connected to from mobile, rich, and desktop applications.
Spring provides tools for building multi-client web applications, including support for mobile clients and REST APIs. It includes the Spring MVC framework for building web UIs, the RestTemplate for consuming REST services, and tools like Spring Android for building native Android apps that integrate with REST backends. Demos show consuming a Spring REST service from a web UI, Android app, and HTML5 app to demonstrate support for multiple client types from a single backend.
Today's applications don't live in a vacuum - you need to take the applications to where your users are. Let Spring's REST support along with its powerful client-side technology support, help you get there faster.
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.
The document describes the Spring MVC request lifecycle and how requests are handled in Spring MVC. It discusses how the DispatcherServlet receives requests and uses handler mappings to determine which controller should handle each request. It then describes how controllers process requests, returning a ModelAndView which is used to render the view. It also provides details on configuring controllers, view resolvers, and handler mappings, as well as examples of different types of controllers like command, form, and multi-action controllers.
This document provides an overview of Spring MVC, the model-view-controller framework for building web applications in Spring. It discusses Spring MVC's request processing workflow including the front controller and application context. It also covers controllers, mapping requests, returning views and data representation. Key topics include RESTful design, annotations like @RequestMapping and return types, and view resolvers for resolving JSP and other view technologies.
Integration of Backbone.js with Spring 3.1Michał Orman
This document discusses integrating Backbone.js with Spring 3.1. It begins with an overview of new features in Spring 3.1, such as cache abstraction, bean definition profiles, and Java-based configuration. It then provides an introduction to Backbone.js, explaining how it gives structure to web applications using models, collections, views and routers. The document demonstrates how to integrate Backbone.js and Spring 3.1 by using Spring to provide a RESTful JSON API for Backbone models and collections to communicate with, while keeping the UI rendered separately using Backbone views. It provides examples of tasks being managed through GET, POST, PUT and DELETE requests to the Spring API.
The document discusses Java web services and RESTful web services. It provides an overview of JAX-WS for implementing SOAP-based web services and JAX-RS for implementing RESTful web services. Key points include how JAX-WS uses annotations to simplify web service development, the SOAP protocol for exchanging messages, and how JAX-RS leverages HTTP methods and URIs to access resources on the web.
The Web and Spring MVC continue to be one of the most active areas of the
Spring Framework with each new release adding plenty of features and refinements
requested by the community. Furthermore version 4 added a significant choice
for web applications to build WebSocket-style architectures.
This talk provides an overview of the areas in which the framework has evolved
along with highlights of specific noteworthy features from the most recent
releases.
Spring provides tools for building multi-client web applications, including support for mobile clients and REST APIs. It includes the Spring MVC framework for building web UIs, the RestTemplate for consuming REST services, and tools like Spring Android for building native Android apps that integrate with REST backends. Demos show consuming a Spring REST service from a web UI, Android app, and HTML5 app to demonstrate support for multiple client types from a single backend.
Today's applications don't live in a vacuum - you need to take the applications to where your users are. Let Spring's REST support along with its powerful client-side technology support, help you get there faster.
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.
The document describes the Spring MVC request lifecycle and how requests are handled in Spring MVC. It discusses how the DispatcherServlet receives requests and uses handler mappings to determine which controller should handle each request. It then describes how controllers process requests, returning a ModelAndView which is used to render the view. It also provides details on configuring controllers, view resolvers, and handler mappings, as well as examples of different types of controllers like command, form, and multi-action controllers.
This document provides an overview of Spring MVC, the model-view-controller framework for building web applications in Spring. It discusses Spring MVC's request processing workflow including the front controller and application context. It also covers controllers, mapping requests, returning views and data representation. Key topics include RESTful design, annotations like @RequestMapping and return types, and view resolvers for resolving JSP and other view technologies.
Integration of Backbone.js with Spring 3.1Michał Orman
This document discusses integrating Backbone.js with Spring 3.1. It begins with an overview of new features in Spring 3.1, such as cache abstraction, bean definition profiles, and Java-based configuration. It then provides an introduction to Backbone.js, explaining how it gives structure to web applications using models, collections, views and routers. The document demonstrates how to integrate Backbone.js and Spring 3.1 by using Spring to provide a RESTful JSON API for Backbone models and collections to communicate with, while keeping the UI rendered separately using Backbone views. It provides examples of tasks being managed through GET, POST, PUT and DELETE requests to the Spring API.
The document discusses Java web services and RESTful web services. It provides an overview of JAX-WS for implementing SOAP-based web services and JAX-RS for implementing RESTful web services. Key points include how JAX-WS uses annotations to simplify web service development, the SOAP protocol for exchanging messages, and how JAX-RS leverages HTTP methods and URIs to access resources on the web.
The Web and Spring MVC continue to be one of the most active areas of the
Spring Framework with each new release adding plenty of features and refinements
requested by the community. Furthermore version 4 added a significant choice
for web applications to build WebSocket-style architectures.
This talk provides an overview of the areas in which the framework has evolved
along with highlights of specific noteworthy features from the most recent
releases.
Spring MVC is a framework for building Java web applications in Spring. It includes model-view-controller components like controllers, views, and handlers for common tasks like handling forms, exceptions, localization and themes. Spring MVC offers flexibility through its configurable pieces and leverages dependency injection from the Spring framework. Resources for learning more include the Spring website, books on Spring and Spring MVC, and online documentation.
This was a quick (15 minutes!) tour of Cloud Foundry that I gave at JFokus 2012 introducing Cloud Foundry as the answer to the question, "I've got a working web application and Spring made it easy, but where do I host it?"
This document summarizes key features of the Spring MVC framework, including:
1. Spring MVC uses a DispatcherServlet as a front controller to handle requests and dispatch them to controllers. Controllers return ModelAndViews to select views.
2. Configuration can be done via XML or annotations. Common view technologies like JSP and Velocity are supported.
3. Features include form binding, validation, internationalization, AJAX support, and error handling. Table sorting and pagination are demonstrated using the DisplayTag library.
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.
This session will provide a complete tour of using the Spring MVC framework to build Java Portlets. It will include an in-depth review of a sample portlet application developed using the latest features of Spring MVC, including Annotation-based Controllers. If you are writing Portlets and using Spring, this session is for you.
We'll begin by discussing the unique differences and challenges when developing Portlets instead of traditional Servlet webapps. Then we'll talk about the unique approach that Spring MVC takes towards Portlets that fully leverages the Portlet lifecycle, instead of masking it like many other frameworks. We'll take an extensive tour of a sample application so we can see all the unique pieces of the framework in action. Finally we'll conclude with discussion of the upcoming support for the Portlet 2.0 (JSR 286) specification that will be part of Spring 3.0.
Java Spring MVC Framework with AngularJS by Google and HTML5Tuna Tore
The document provides an introduction to the Spring MVC framework. It describes key concepts such as MVC architecture, dependency injection, configuration of the DispatcherServlet, mapping requests to controllers, and defining views. It also discusses configuring ORM/JPA with Hibernate, sending emails, security, exceptions handling, and accessing REST services with RestTemplate. The document aims to give developers an overview of building web applications with Spring MVC.
This document compares and contrasts Java EE and Spring frameworks. It provides examples of implementing common functionality like dependency injection, transactions, scheduling and messaging using annotations and configuration files in both platforms. The document aims to demonstrate that Spring and Java EE can be used side-by-side and have similar patterns for common tasks but different implementations. It also discusses how each integrates with the other for certain features.
1. Spring MVC is the web framework module of the Spring Framework, providing MVC architecture support and web request handling capabilities.
2. The DispatcherServlet is central to Spring MVC and handles incoming web requests, passing them to controllers for processing and returning a model and view.
3. Controllers handle requests and return a model and view, with the view resolver determining how to render the view. Annotations allow specifying request mappings and other configurations.
Java Server Faces + Spring MVC FrameworkGuo Albert
This document discusses the architecture of a Java Server Faces application integrated with the Spring MVC framework. It describes the presentation and business tiers, including the front controller, UI components, backing beans, views, service beans, and configuration files like web.xml, faces-config.xml, and applicationContext.xml. It also includes class diagrams and details the page flow and configuration of the demo application.
The document provides an introduction to the Spring MVC framework. It describes key concepts such as MVC architecture, dependency injection, configuration of the DispatcherServlet, mapping requests to controllers, and defining views. It also discusses configuring other features like file uploads, scheduling, logging, security, and exceptions handling. The document encourages enrolling in a Udemy course for more details on using Spring MVC.
Rest with Java EE 6 , Security , Backbone.jsCarol McDonald
The document discusses REST with JAX-RS and security in Java EE 6, covering how to build a simple RESTful service using JAX-RS annotations to map resources and methods, support multiple representations, and link resources together, and how to secure the service by configuring authentication, authorization, and encryption in the web.xml deployment descriptor.
This document summarizes the basics of Spring MVC, including the model-view-controller (MVC) pattern it uses. It describes the main components - the model which contains application data, the view which displays data to the user, and the controller which handles requests and coordinates the model and view. It provides examples of how controllers work using annotations like @RequestMapping and how they can return different types of responses. It also briefly mentions other related concepts like interceptors, exceptions, and static resources.
The document discusses advanced topics in Spring MVC, including annotation driven controllers, arguments and return types, and validation. It provides details on annotations like @Controller, @RequestMapping, @PathVariable, @ModelAttribute, @CookieValue, @HeaderValue, @DateTimeFormat, @RequestBody, and @ResponseBody and how they can be used to configure controller methods. It also describes what types of arguments controller methods can accept and what return types are allowed.
Spring MVC 3.0 Framework
Objective:
1. Introduce Spring MVC Module
2. Learn about Spring MVC Components (Dispatcher, Handler mapping, Controller, View Resolver, View)
Slides:
1. What Is Spring?
2. Why use Spring?
3. By the way, just what is MVC?
4. MVC Architecture
5. Spring MVC Architecture
7. Spring MVC Components
8. DispatcherServlet
9. DispatcherServlet Architecture.........
.........................................................
This document discusses new features and improvements in Spring 4. It covers Java 8 support including lambda expressions, date/time API updates, and optional types. It also summarizes core container improvements like meta annotations, generic qualifiers, and conditional bean configuration. General web improvements involving the @RestController annotation and Jackson serialization views are outlined. Testing improvements such as active profile resolution and the SocketUtils class are also mentioned.
This document provides an overview of integrating Spring with Blaze DS and Cairngorm UM. It discusses what Spring and Blaze DS are, why they should be integrated with Flex applications, and examples of how to configure this integration. It also explains what Cairngorm UM is and how it extends the Cairngorm framework. Finally, it briefly introduces the concepts of a generic DAO and CairnSpring, which combines Cairngorm UM, generic DAO patterns, and Spring/Blaze DS integration.
Servlets 3.0 introduces several new features to improve ease of development, extensibility, and support for asynchronous processing. Key features include annotations for declarative programming, dynamic registration of servlets and filters, pluggable web fragments, and asynchronous request handling. The new version aims to simplify web application development and increase developer productivity.
The vFabric Cloud Application Platform provides a full suite of products including tc Server, RabbitMQ, GemFire, SQLFire, and App Director to build, deploy, and manage cloud applications on both private and public clouds. It offers developers tools for rapid application development as well as operations tools for automated provisioning and management of applications in production environments. The platform provides a full stack solution for building and running scalable Java applications in private, hybrid, and public cloud environments.
Spring MVC is a framework for building Java web applications in Spring. It includes model-view-controller components like controllers, views, and handlers for common tasks like handling forms, exceptions, localization and themes. Spring MVC offers flexibility through its configurable pieces and leverages dependency injection from the Spring framework. Resources for learning more include the Spring website, books on Spring and Spring MVC, and online documentation.
This was a quick (15 minutes!) tour of Cloud Foundry that I gave at JFokus 2012 introducing Cloud Foundry as the answer to the question, "I've got a working web application and Spring made it easy, but where do I host it?"
This document summarizes key features of the Spring MVC framework, including:
1. Spring MVC uses a DispatcherServlet as a front controller to handle requests and dispatch them to controllers. Controllers return ModelAndViews to select views.
2. Configuration can be done via XML or annotations. Common view technologies like JSP and Velocity are supported.
3. Features include form binding, validation, internationalization, AJAX support, and error handling. Table sorting and pagination are demonstrated using the DisplayTag library.
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.
This session will provide a complete tour of using the Spring MVC framework to build Java Portlets. It will include an in-depth review of a sample portlet application developed using the latest features of Spring MVC, including Annotation-based Controllers. If you are writing Portlets and using Spring, this session is for you.
We'll begin by discussing the unique differences and challenges when developing Portlets instead of traditional Servlet webapps. Then we'll talk about the unique approach that Spring MVC takes towards Portlets that fully leverages the Portlet lifecycle, instead of masking it like many other frameworks. We'll take an extensive tour of a sample application so we can see all the unique pieces of the framework in action. Finally we'll conclude with discussion of the upcoming support for the Portlet 2.0 (JSR 286) specification that will be part of Spring 3.0.
Java Spring MVC Framework with AngularJS by Google and HTML5Tuna Tore
The document provides an introduction to the Spring MVC framework. It describes key concepts such as MVC architecture, dependency injection, configuration of the DispatcherServlet, mapping requests to controllers, and defining views. It also discusses configuring ORM/JPA with Hibernate, sending emails, security, exceptions handling, and accessing REST services with RestTemplate. The document aims to give developers an overview of building web applications with Spring MVC.
This document compares and contrasts Java EE and Spring frameworks. It provides examples of implementing common functionality like dependency injection, transactions, scheduling and messaging using annotations and configuration files in both platforms. The document aims to demonstrate that Spring and Java EE can be used side-by-side and have similar patterns for common tasks but different implementations. It also discusses how each integrates with the other for certain features.
1. Spring MVC is the web framework module of the Spring Framework, providing MVC architecture support and web request handling capabilities.
2. The DispatcherServlet is central to Spring MVC and handles incoming web requests, passing them to controllers for processing and returning a model and view.
3. Controllers handle requests and return a model and view, with the view resolver determining how to render the view. Annotations allow specifying request mappings and other configurations.
Java Server Faces + Spring MVC FrameworkGuo Albert
This document discusses the architecture of a Java Server Faces application integrated with the Spring MVC framework. It describes the presentation and business tiers, including the front controller, UI components, backing beans, views, service beans, and configuration files like web.xml, faces-config.xml, and applicationContext.xml. It also includes class diagrams and details the page flow and configuration of the demo application.
The document provides an introduction to the Spring MVC framework. It describes key concepts such as MVC architecture, dependency injection, configuration of the DispatcherServlet, mapping requests to controllers, and defining views. It also discusses configuring other features like file uploads, scheduling, logging, security, and exceptions handling. The document encourages enrolling in a Udemy course for more details on using Spring MVC.
Rest with Java EE 6 , Security , Backbone.jsCarol McDonald
The document discusses REST with JAX-RS and security in Java EE 6, covering how to build a simple RESTful service using JAX-RS annotations to map resources and methods, support multiple representations, and link resources together, and how to secure the service by configuring authentication, authorization, and encryption in the web.xml deployment descriptor.
This document summarizes the basics of Spring MVC, including the model-view-controller (MVC) pattern it uses. It describes the main components - the model which contains application data, the view which displays data to the user, and the controller which handles requests and coordinates the model and view. It provides examples of how controllers work using annotations like @RequestMapping and how they can return different types of responses. It also briefly mentions other related concepts like interceptors, exceptions, and static resources.
The document discusses advanced topics in Spring MVC, including annotation driven controllers, arguments and return types, and validation. It provides details on annotations like @Controller, @RequestMapping, @PathVariable, @ModelAttribute, @CookieValue, @HeaderValue, @DateTimeFormat, @RequestBody, and @ResponseBody and how they can be used to configure controller methods. It also describes what types of arguments controller methods can accept and what return types are allowed.
Spring MVC 3.0 Framework
Objective:
1. Introduce Spring MVC Module
2. Learn about Spring MVC Components (Dispatcher, Handler mapping, Controller, View Resolver, View)
Slides:
1. What Is Spring?
2. Why use Spring?
3. By the way, just what is MVC?
4. MVC Architecture
5. Spring MVC Architecture
7. Spring MVC Components
8. DispatcherServlet
9. DispatcherServlet Architecture.........
.........................................................
This document discusses new features and improvements in Spring 4. It covers Java 8 support including lambda expressions, date/time API updates, and optional types. It also summarizes core container improvements like meta annotations, generic qualifiers, and conditional bean configuration. General web improvements involving the @RestController annotation and Jackson serialization views are outlined. Testing improvements such as active profile resolution and the SocketUtils class are also mentioned.
This document provides an overview of integrating Spring with Blaze DS and Cairngorm UM. It discusses what Spring and Blaze DS are, why they should be integrated with Flex applications, and examples of how to configure this integration. It also explains what Cairngorm UM is and how it extends the Cairngorm framework. Finally, it briefly introduces the concepts of a generic DAO and CairnSpring, which combines Cairngorm UM, generic DAO patterns, and Spring/Blaze DS integration.
Servlets 3.0 introduces several new features to improve ease of development, extensibility, and support for asynchronous processing. Key features include annotations for declarative programming, dynamic registration of servlets and filters, pluggable web fragments, and asynchronous request handling. The new version aims to simplify web application development and increase developer productivity.
The vFabric Cloud Application Platform provides a full suite of products including tc Server, RabbitMQ, GemFire, SQLFire, and App Director to build, deploy, and manage cloud applications on both private and public clouds. It offers developers tools for rapid application development as well as operations tools for automated provisioning and management of applications in production environments. The platform provides a full stack solution for building and running scalable Java applications in private, hybrid, and public cloud environments.
Web API or WCF - An Architectural ComparisonAdnan Masood
ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. The new ASP.NET Web API is a continuation of the previous WCF Web API projection. WCF was originally created to enable SOAP-based services and other related bindings. However, for simpler RESTful or RPCish services (think clients like jQuery) ASP.NET Web API is a good choice.
In this meeting we discussed what do you need to understand as an architect to implement your service oriented architecture using WCF or ASP.NET web API. With code samples, we will elaborate on WCF Web API’s transition to ASP.NET Web API and respective constructs such as Service vs. Web API controller, Operation vs. Action, URI templates vs ASP.NET Routing, Message handlers, Formatters and Operation handlers vs Filters, model binders. WebApi offers support for modern HTTP programming model with full support for ASP.NET Routing, content negotiation and custom formatters, model binding and validation, filters, query composition, is easy to unit test and offers improved Inversion of Control (IoC) via DependencyResolver.
You will walk away with a sample set of services that run on Silverlight, Windows Forms, WPF, Windows Phone and ASP.NET.
Move to the Lightweight Application Platform
Ankur Agarwal discusses the advantages of delivering applications as software as a service (SaaS) and implications for independent software vendors (ISVs). He introduces the VMware vFabric Cloud Application Platform, which provides a lightweight Java runtime, application services, and tools to build, run, and manage SaaS applications. The platform allows scaling applications elastically on demand and simplifies supporting global users.
Websphere sMash is a new, development paradigm and execution platform for quickly building agile,
web-based application. It harness on the flexibility of Web 2.0 technology and uses dynamic scripting to
build simple situational apps.
Convertigo Mobilizer is the most advanced Open Source Mobile Application Development Platform for Enterprises, featuring all the required components needed to develop and to run cross-platform mobile enterprises application connected to enterprise's back-end business applications.
- Large variety of connectors to enterprise apps
- Mashup sequencer to orchestrate and combine data and processes from multiple enterprise apps.
- Cross-platform WebApp and Native app mobile application development tools for iOS, Android, Blackberry and Windows Phone platforms
- Security managers and Identity managers
- Mobile application updates and administration
- Monitoring and administration tools.
Convertigo can also be used for transactionnal portal integration and for SOA enablement of legacy web or Mainframe applications.
Convertigo Community Edition is AGPL based.
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...WebStackAcademy
Let's see take an example:
Deploy Your Application to Oracle Application Container Cloud Service
Extract the content of the employees-app.zip file in your local system.
Log in to Oracle Cloud at http://cloud.oracle.com/. Enter your account credentials in the Identity Domain, User Name, and Password fields.
In the Oracle Cloud Services dashboard, click the Action menu Menu, and select Application Container.
In the Applications list view, click Create Application and select Java EE.
In the Application section, enter a name for your application and click Browse.
On the File Upload dialog box, select the employee-app.war file located in the target directory and click Open.
Keep the default values in the Instances and Memory fields and click Create.
Wait until the application is created. The URL is enabled when the creation is completed.
Click the URL of your application.
Janakiram MSV introduced .NET services including Service Bus, Access Control Service, and Workflow Services. Service Bus provides connectivity for applications over the cloud. Access Control Service enables claims-based access control in the cloud. Workflow Services provides infrastructure for hosting and managing workflows on the cloud. The presentation discussed how these services address challenges of distributed computing and provide key building blocks for cloud applications.
This document provides an introduction to Java servlet technology. It discusses how servlets address limitations of CGI scripts by providing a portable way to generate dynamic web content from the server side using Java. Key topics covered include the servlet interface, lifecycle, and advantages over CGI such as improved performance and portability. Configuration and use of servlets within Eclipse and Tomcat are also explained.
Sails.js is a realtime MVC framework for Node.js that provides conventions and structures for building applications. It includes features like a lightweight ORM, policies for authentication and authorization, and integrates Socket.io for realtime functionality. Sails.js aims to simplify building realtime apps by handling websockets and HTTP requests together and providing patterns for application structure. The framework is actively maintained by an open source community.
Spring MVC is a model-view-controller framework that aims to simplify web application development for Java developers. It provides abstraction from more complex Java EE APIs and services through dependency injection and aspect-oriented programming. Spring MVC integrates well with other Spring modules and supports various view technologies like JSP, Tiles, and FreeMarker. It also supports RESTful services and integration with JavaScript frameworks.
Enterprise Java in 2012 and Beyond, by Juergen Hoeller Codemotion
The Java space is facing several disruptive middleware trends. Key factors are the recent Java EE 6 and Java SE 7 platform releases, but also modern web clients, non-relational datastores and in particular cloud computing, all of which have a strong influence on the next generation of Java application frameworks. This session presents selected trends and explores their relevance for enterprise application development, taking the most recent Java SE and Java EE developments into account as well.
Spring is the most popular and productive enterprise Java development framework in the world, and has always provided developers with portability and choice. The cloud should be no different. Spring applications work flawlessly on all the major platform-as-a-service clouds including Heroku, Google App Engine, and Cloud Foundry. This session will focus on how to design, and create, modern enterprise applications using Spring 3 that are portable across cloud environments.
The document discusses Spring Framework updates including versions 3.1, 3.2, and 3.3. Key features of Spring 3.1 include environment profiles for activating bean definitions in different environments, Java-based application configuration, and declarative caching. Spring 3.2 will include a Gradle build system and GitHub contributions. Spring 3.3 will add support for Java SE 8 features like lambda expressions and the Java EE 7 API. The document provides code examples of using these new Spring features.
WebSocket Perspectives and Vision for the FutureFrank Greco
The document outlines Frank Greco's presentation on WebSocket perspectives and the future vision. It begins with an introduction and background on WebSocket, what it is and isn't. It then discusses how layered protocols can be built on top of WebSocket to address limitations of HTTP for real-time applications. Examples of use cases are then presented including Web trading systems, mobile computing, collaborative presentations, and controlling a remote vehicle via WebSocket messaging.
App Mod 01: Moving existing apps to the cloudJudy Breedlove
The document discusses migrating existing applications to the cloud. It describes lifting a monolithic Java application called CoolStore from Weblogic to JBoss EAP and deploying it on OpenShift. It provides an overview of different approaches to modernizing applications like containerization, microservices, and deploying on a Platform as a Service.
This document provides an overview of Google App Engine (GAE), a platform as a service that allows users to run web applications on Google's infrastructure. It discusses key aspects of GAE like language support, automatic scaling, quotas and limits. The document then demonstrates how to set up a basic "Hello World" application on GAE for Java (GAE/J) using Eclipse as the IDE. It shows the project structure, deploying the application to GAE, and potential next steps like using Guice or the Python runtime.
This document provides an overview of topics that will be covered at a Microsoft Dev Camp in 2015. The topics include introductions to ASP.NET, Visual Studio web tools, ASP.NET Web API, building real-time web applications with SignalR, and Azure services. Sessions will cover web front-end development, ASP.NET updates, consuming and building Web APIs, and real-world scenarios for scaling, updating, and deploying applications on Azure.
CCF 4 XAP has been designed to exploit XAP capabilities on the cloud and leverage XAP scalability, low latency and high-throughput features when deployed in such dynamic environment
Similar to Multi client Development with Spring (20)
The document discusses strategies for building scalable applications. It introduces the concept of a "scale cube" with three axes: horizontal duplication for scaling stateless apps, data partitioning, and bounded contexts. It provides examples of using various technologies like RabbitMQ, Redis, MongoDB, Neo4j, Couchbase, Hadoop, and Spring XD to address different areas of the scale cube. The document emphasizes that building adaptive, scalable applications is challenging and recommends approaches like microservices and separating applications into bounded contexts.
Josh Long presents on Spring Boot, an approach to building stand-alone, production-grade Spring based applications. He discusses how Spring Boot makes it easy to create Spring applications with embedded Tomcat, Jetty or Undertow with minimum fuss. The presentation also covers how to easily add RESTful services, security, production-ready features like metrics, health checks and externalized configuration using Spring Boot.
Josh Long is a Spring Developer Advocate at Pivotal. He discusses various Spring and microservices related topics including:
- The single responsibility principle and how it relates to microservices and Unix tools.
- Exposing services simply using REST which has no strict rules but embraces HTTP verbs and status codes.
- The Richardson Maturity Model for grading APIs on their REST compliance from Level 0 to Level 3.
- Security topics like OAuth, SSL/TLS, and ensuring applications are production ready with monitoring and management.
Slides from my talk introducing Spring Boot. Unfortunately, this talk is 90% live-coding, so I'll post the relevant video recording here when it's available.
This document contains information about Josh Long, including his contact details, links to his work, and information about the Spring IO platform. It includes diagrams showing the architecture of Spring IO and its various modules. It also contains slides from one of Josh Long's presentations promoting Spring IO and its features, including Spring Boot, reactive programming, Java 8 support, REST design, security, and mobile development.
Spring, now part of Pivotal, continues to innovate and support next generation workloads. In this talk, I introduce some of the exciting new Spring technologies supporting websockets, Java 8, Java EE 7, data ingestion and stream processing, NoSQL and Hadoop, and production-ready REST, _and_ I introduce tools designed to expedite ramp-up time for teams who want to deliver, quickly.
Multi Client Development with Spring for SpringOne 2GX 2013 with Roy ClarksonJoshua Long
The document discusses Representational State Transfer (REST), an architectural style for building distributed hypermedia systems. It describes REST as being based on HTTP and having no hard rules, instead focusing on using HTTP verbs like GET, POST, PUT, DELETE and status codes to transfer representations of resources between clients and servers. It also discusses content negotiation, HATEOAS, the Richardson Maturity Model for grading RESTful implementations, and how Spring frameworks like Spring MVC, Spring Data REST, and Spring Security can be used to build RESTful services and clients.
This talk introduces Spring's REST stack - Spring MVC, Spring HATEOAS, Spring Data REST, Spring Security OAuth and Spring Social - while refining an API to move higher up the Richardson maturity model
This document summarizes Josh Long's presentation on updates to the Spring framework. It discusses:
- Spring Framework versions 3.1, 3.2, and the upcoming 4.0 release
- New features in Spring 3.1 including environment profiles, Java-based configuration, caching, and Servlet 3.0 support
- Plans for Spring 3.2 including a Gradle build, contribution model on GitHub, and asynchronous MVC processing
- Changes to plans for Spring 3.2 where support for Java EE 7 and Java SE 8 was postponed due to delays in those projects. Spring 3.2 will instead focus on core framework refinements with Java 8 and EE 7 features planned for Spring 3.
The document discusses tailoring Spring for custom usage. It explores extension points in the Spring framework and how to exploit lesser known but powerful hooks. The agenda includes demos of introducing the tool chain, basic dependency injection, BeanPostProcessor, AspectJ, life cycle callbacks, scopes, FactoryBeans, Spring Expression Language, profiles, proxies, resources, object to XML marshalling, REST, transactions, caching, custom views and view resolvers, writing adapters in Spring Integration, and more. QA is also on the agenda.
Integration and Batch Processing on Cloud FoundryJoshua Long
This talk explores the new possibilities for scale by using Spring Integration, Spring Batch and RabbitMQ on Cloud Foundry, the open source PaaS from VMWare.
using Spring and MongoDB on Cloud FoundryJoshua Long
This talk introduces how to build MongoDB applications with Spring Data MongoDB on Cloud Foundry. Spring Data provides rich support for easily building applications that work on multiple data stores.
The document provides an overview of getting started with Cloud Foundry. It discusses registering for a Cloud Foundry account, installing the vmc CLI tool on Windows and Mac, and the various ways Cloud Foundry can be used to deploy applications. It also covers key Cloud Foundry features like choice of runtimes, choice of cloud providers, scaling applications, developing applications using Eclipse/STS, and using services in applications.
A Spring Batch bootcamp! Spring Batch is the open source batch processing framework from SpringSource, makes of the Spring framework. http://www.springsource.org/spring-batch
The Cloud Foundry Bootcamp document provides an overview of a Cloud Foundry bootcamp presented in Portland in 2012. It was written by Chris Richardson and presented by Monica Wilkinson and Josh Long. The agenda covers why Platform as a Service (PaaS) matters to developers, an overview of Cloud Foundry, getting started with Cloud Foundry, the Cloud Foundry architecture, using Micro Cloud Foundry, and consuming Cloud Foundry services.
Spring and Cloud Foundry; a Marriage Made in HeavenJoshua Long
Spring and Cloud Foundry: a Marriage Made in Heaven. This talk introduces how to build Spring applications on top of Cloud Foundry, the open source PaaS from VMware
The Spring framework packs a lot of punch, out of the box! The surface-level component model's extraordinarily flexible, and works well with in most situations, but the real power of Spring lays just underneath, in the numerous SPIs that Spring exposes, so that you can tailor the component model to your own use cases. Spring's SPI's are a great example of what Bob Martin describes as the open-closed principle, and it provides the solid underpinnings upon which the other Spring frameworks, including Spring Integration, Spring MVC and Spring Batch are built. In this talk, Josh Long, the Spring developer advocate from SpringSource, provides a walking tour of Spring's extension points.
In this talk, originally presented at JavaZone, in Oslo, Norway, I introduce the broad swath of supported inversion-of-control options in Spring's component model, and then introduce some more advanced features of the component model.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
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.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
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.
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.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
2. About Josh Long
SpringSource Developer Advocate
twitter: @starbuxman
josh.long@springsource.com
NOT CONFIDENTIAL -- TELL EVERYONE 2
3. Agenda
Introduction to Spring
Web Applications
• Spring MVC, JSF, Others
REST
• the final frontier: TV, tablets, operating systems
Mobile Clients
• Android, iPhone
RIA / SOFEA
• Flex, GWT, Vaadin
OAuth
• Spring Social, Spring Security OAuth
NOT CONFIDENTIAL -- TELL EVERYONE 3
4. About
SpringSource is the organization that develops the Spring
framework, the leading enterprise Java framework
SpringSource was acquired by VMware in 2009
VMware and SpringSource bring you to the cloud and
deliver on the mission of “build, run, manage”
• established partnerships with the major players in the business,
including Adobe, SalesForce, and Google to help deliver the
best experience for Spring users across multiple platforms
Leading contributor to projects like
Apache HTTPD and Apache Tomcat
NOT CONFIDENTIAL -- TELL EVERYONE 4
6. At its core, the Spring Framework...
Provide comprehensive infrastructural support for developing
enterprise Java™ applications
• Spring deals with the plumbing
• So you can focus on solving the domain problem
NOT CONFIDENTIAL -- TELL EVERYONE 6
7. Spring’s aim:
bring simplicity to java development
data
web tier integration
batch access
& service tier & mobile
processing / NoSQL /
RIA messaging
Big Data
The Spring framework
the cloud: lightweight traditional
CloudFoundry WebSphere
tc Server
VMForce JBoss AS
Tomcat
Google App Engine WebLogic
Jetty
Amazon Web Services (on legacy versions, too!)
NOT CONFIDENTIAL -- TELL EVERYONE 7
8. The Spring Framework
Framework Description
Spring Core The foundation
Spring @MVC the web leading framework (comes with the core framework)
Spring Security Extensible framework providing authentication, authorization
Spring Webflow An excellent web framework for building multi-page flows
Spring Web Services Contract-first, document–centric SOAP and XML web services
Spring Batch Powerful batch processing framework
Spring Integration Implements enterprise integration patterns
Spring BlazeDS Support for Adobe BlazeDS
Spring AMQP interface with AMQP message brokers, like RabbitMQ
Spring Data NoSQL options: HBase, MongoDB, Redis, Riak, CouchDB, Neo4J, etc.
Spring Social integrate Twitter, Facebook, Tripit, MySpace, LinkedIn, etc.
Spring Hadoop Provides a POJO-centric approach to building Hadoop applications
provides first-class support for service
Spring Mobile, Spring Android
creation and consumption for iPhone, Android
Spring GemFire Provides the easiest interface for the GemFire enterprise data grid technology
NOT CONFIDENTIAL -- TELL EVERYONE 8
10. The Spring ApplicationContext
Spring Beans are Managed by An ApplicationContext
• whether you’re in an application server, a web server, in regular Java SE
application, in the cloud, Spring is initialized through an ApplicationContext
• In a Java SE application:
ApplicationContext ctx =
new GenericAnnotationApplicationContext( “com.foo.bar.my.package”);
• In a web application, you will configure an application context in your web.xml
<servlet>
<servlet-name>Spring Dispatcher Servlet</servlet-name>
<servlet-
class>org.springframework.web.servlet.DispatcherServlet</servlet-
class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/myAppContext*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
NOT CONFIDENTIAL -- TELL EVERYONE 10
11. Thin, Thick, Web, Mobile and Rich Clients: Web Core
Spring Dispatcher Servlet
• Objects don’t have to be web-specific.
• Spring web supports lower-level web machinery: ‘
• HttpRequestHandler (supports remoting: Caucho, Resin, JAX RPC)
• DelegatingFilterProxy.
• HandlerInterceptor wraps requests to HttpRequestHandlers
• ServletWrappingController lets you force requests to a servlet through the Spring
Handler chain
• OncePerRequestFilter ensures that an action only occurs once, no matter how many
filters are applied. Provides a nice way to avoid duplicate filters
• Spring provides access to the Spring application context using
WebApplicationContextUtils, which has a static method to look up the context,
even in environments where Spring isn’t managing the web components
NOT CONFIDENTIAL -- TELL EVERYONE
12. Thin, Thick, Web, Mobile and Rich Clients: Web Core
Spring provides the easiest way to integrate with your web
framework of choice
• Spring Faces for JSF 1 and 2
• Struts support for Struts 1
• Tapestry, Struts 2, Stripes, GWT, Wicket, Vaadin, Play framework, etc.
NOT CONFIDENTIAL -- TELL EVERYONE
13. Thin, Thick, Web, Mobile and Rich Clients: Spring MVC
NOT CONFIDENTIAL -- TELL EVERYONE 13
14. Thin, Thick, Web, Mobile and Rich Clients: Spring MVC
Spring MVC configuration - config
@Configuration @EnableWebMvc @Import(Config.class)
public class WebConfig extends WebMvcConfigurerAdapter{
@Bean public UrlBasedViewResolver resolver() {
UrlBasedViewResolver url = new UrlBasedViewResolver();
url.setPrefix("views/");
url.setViewClass(JstlView.class);
url.setSuffix(".jsp");
return url;
}
public void configureViewControllers(ViewControllerConfigurer configurer) {
configurer.mapViewName("/", "welcome") ;
}
}
A Controller - config
@Controller
public class CustomerController {
@Autowired private CustomerService customerService;
@ModelAttribute public Customer customer() { return new Customer(); }
@RequestMapping(value = "/display", method = RequestMethod.GET)
public Map<String, Object> customer(@RequestParam("id") Long id) {
Map<String, Object> out = new HashMap<String, Object>();
out.put("customer", customerService.getCustomerById(id) );
return out;
} NOT CONFIDENTIAL -- TELL EVERYONE 14
15. Thin, Thick, Web, Mobile and Rich Clients: Spring MVC
Demos
• Spring MVC and associated configuration
NOT CONFIDENTIAL -- TELL EVERYONE
17. Thin, Thick, Web, Mobile and Rich Clients: REST
Spring MVC is basis for REST support
• Spring’s server side REST support is based on the standard controller model
• RestTemplate
• provides dead simple, idiomatic RESTful services consumption
• can use Spring OXM, too.
• Spring Integration and Spring Social both build on the RestTemplate where
possible.
• JavaScript and HTML5 can consume JSON-data payloads
• REST is the ultimate connectivity mechanism: everything can speak HTTP.
NOT CONFIDENTIAL -- TELL EVERYONE
18. Thin, Thick, Web, Mobile and Rich Clients: REST
RestCustomerController - server
@Controller @RequestMapping(headers = "Accept=application/json, application/xml")
public class RestCustomerController {
@Autowired private CustomerService cs;
@RequestMapping(value = "/customer/{cid}", method = RequestMethod.POST)
@ResponseBody public Customer updateCustomer(@RequestBody Customer c) {
return cs.updateCustomer( c.getId(), c.getFirstName(), c.getLastName());
}
WebConfig - server
@EnableWebMvc
@Import(Config.class)
@Configuration
public class WebConfig
extends WebMvcConfigurerAdapter {}
client
Customer customer1 = restTemplate.getForEntity(
url + "customer/{customerId}",
Customer.class, c.getId()).getBody();
log.info("fetched customer " + customer1.toString());
NOT CONFIDENTIAL -- TELL EVERYONE 18
19. Thin, Thick, Web, Mobile and Rich Clients: REST
Demos:
• Spring REST service
• Spring REST client
NOT CONFIDENTIAL -- TELL EVERYONE
21. Thin, Thick, Web, Mobile and Rich Clients: Mobile
Best strategy? Develop Native
• Fallback to client-optimized web applications
Spring MVC 3.1 mobile client-specific content negotiation and
rendering
• for other devices
• (there are other devices besides Android??)
NOT CONFIDENTIAL -- TELL EVERYONE 21
22. Thin, Thick, Web, Mobile and Rich Clients: Mobile
WebConfig - server
! @Bean
public ViewResolver viewResolver() {
UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
viewResolver.setViewClass(TilesView.class);
return viewResolver;
}
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer configurer = new TilesConfigurer();
configurer.setDefinitions(new String[]{
"/WEB-INF/layouts/tiles.xml",
"/WEB-INF/views/**/tiles.xml"
});
configurer.setCheckRefresh(true);
return configurer;
}
@Override
public void configureInterceptors(InterceptorConfigurer configurer) {
configurer.addInterceptor(new DeviceResolverHandlerInterceptor());
}
NOT CONFIDENTIAL -- TELL EVERYONE 22
23. Thin, Thick, Web, Mobile and Rich Clients: REST
Demos:
• Mobile clients using client specific rendering
NOT CONFIDENTIAL -- TELL EVERYONE
25. Thin, Thick, Web, Mobile and Rich Clients: Mobile
Spring REST is ideal for mobile devices
Spring MVC 3.1 mobile client-specific content
negotiation and rendering
• for other devices
Spring Android
• RestTemplate
NOT CONFIDENTIAL -- TELL EVERYONE 25
26. Thin, Thick, Web, Mobile and Rich Clients: Mobile
CustomerServiceClient - client
! private <T> T extractResponse( ResponseEntity<T> response) {
! ! if (response != null && response().value() == 200) {
! ! ! return response.getBody();
! ! }
! ! throw new RuntimeException("couldn't extract response.");
! }
! @Override
! public Customer updateCustomer(long id, String fn, String ln) {
! ! String urlForPath = urlForPath("customer/{customerId}");! !
! ! return extractResponse(this.restTemplate.postForEntity(
urlForPath, new Customer(id, fn, ln), Customer.class, id));
! }
NOT CONFIDENTIAL -- TELL EVERYONE 26
27. Thin, Thick, Web, Mobile and Rich Clients: Mobile
Demos:
• consuming the Spring REST service from Android
NOT CONFIDENTIAL -- TELL EVERYONE
29. Thin, Thick, Web, Mobile and Rich Clients: Flex
Spring Flex
• Dead-simple to expose Spring beans as Flex services
• Developed with support from Adobe
• But it still has strengths:
• form driven apps
• video, 2D and 3D graphics, sound
• Adobe AIR
• blazing fast communication
• server side push
• Spring ActionScript is a cool framework “sponsored” by SpringSource
NOT CONFIDENTIAL -- TELL EVERYONE
31. Thin, Thick, Web, Mobile and Rich Clients: RIA with Flex
Demos:
• exposing Spring services through BlazeDS
• consuming it from a Flex client
NOT CONFIDENTIAL -- TELL EVERYONE
32. Thin, Thick, Web, Mobile and Rich Clients: GWT
Google Web Toolkit
• Lots of popular options
• We’ll look at building a simple example by simple delegating as
appropriate
• Server-side: standard DispatcherServlet
NOT CONFIDENTIAL -- TELL EVERYONE
33. Thin, Thick, Web, Mobile and Rich Clients: GWT
GwtCustomerService - client
import com.google.gwt.user.client.rpc.*;
@RemoteServiceRelativePath("crm")
public interface GwtCustomerService extends RemoteService {
void updateCustomer(long cid, String f, String l);
CustomerDto getCustomerById(long customerId);
CustomerDto createCustomer(String f, String ln);
}
GwtCustomerServiceImpl - server
private <T> T beanOfType(Class t) {
ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(
getServletContext());
return (T) ac.getBean(t);
}
public void updateCustomer(long cid, String f, String l) {
try {
CustomerService customerService = beanOfType(CustomerService.class);
customerService.updateCustomer(cid, f, l);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
NOT CONFIDENTIAL -- TELL EVERYONE 33
34. Thin, Thick, Web, Mobile and Rich Clients: GWT
Demos:
• building a simple GWT client that consumes services in Spring
NOT CONFIDENTIAL -- TELL EVERYONE
36. Spring Social
Extension to Spring Framework to enable connectivity with
Software-as-a-Service providers
Features...
• An extensible connection framework
• A connect controller
• Java API bindings
• A sign-in controller
http://www.springsource.org/spring-social
36
37. Spring Social Projects
Spring Social Core
Spring Social Facebook
Spring Social Twitter
Spring Social LinkedIn
Spring Social TripIt
Spring Social GitHub
Spring Social Gowalla
Spring Social Samples
• Includes Showcase, Quickstart, Movies, Canvas, Twitter4J, Popup
37
38. Key Steps to Socializing an Application
Configure Spring Social beans
• Connection Factory Locator and Connection Factories
• Connection Repository
• Connect Controller
• API Bindings
Create connection status views
Inject/use API bindings
38
39. Configuration: ConnectionFactoryLocator
@Bean
@Scope(value="singleton", proxyMode=ScopedProxyMode.INTERFACES)
public ConnectionFactoryLocator connectionFactoryLocator() {
ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
registry.addConnectionFactory(
new TwitterConnectionFactory(
environment.getProperty("twitter.consumerKey"),
environment.getProperty("twitter.consumerSecret")));
registry.addConnectionFactory(
new FacebookConnectionFactory(
environment.getProperty("facebook.clientId"),
environment.getProperty("facebook.clientSecret")));
return registry;
}
39
40. Configuration: ConnectionFactoryLocator
@Bean
@Scope(value="singleton", proxyMode=ScopedProxyMode.INTERFACES)
public ConnectionFactoryLocator connectionFactoryLocator() {
ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
registry.addConnectionFactory(
new TwitterConnectionFactory(
environment.getProperty("twitter.consumerKey"),
environment.getProperty("twitter.consumerSecret")));
registry.addConnectionFactory(
new FacebookConnectionFactory(
environment.getProperty("facebook.clientId"),
environment.getProperty("facebook.clientSecret")));
return registry;
}
39
41. Configuration: ConnectionFactoryLocator
@Bean
@Scope(value="singleton", proxyMode=ScopedProxyMode.INTERFACES)
public ConnectionFactoryLocator connectionFactoryLocator() {
ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
registry.addConnectionFactory(
new TwitterConnectionFactory(
environment.getProperty("twitter.consumerKey"),
environment.getProperty("twitter.consumerSecret")));
registry.addConnectionFactory(
new FacebookConnectionFactory(
environment.getProperty("facebook.clientId"),
environment.getProperty("facebook.clientSecret")));
return registry;
}
39
42. Configuration: ConnectionFactoryLocator
@Bean
@Scope(value="singleton", proxyMode=ScopedProxyMode.INTERFACES)
public ConnectionFactoryLocator connectionFactoryLocator() {
ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
registry.addConnectionFactory(
new TwitterConnectionFactory(
environment.getProperty("twitter.consumerKey"),
environment.getProperty("twitter.consumerSecret")));
registry.addConnectionFactory(
new FacebookConnectionFactory(
environment.getProperty("facebook.clientId"),
environment.getProperty("facebook.clientSecret")));
return registry;
}
39
43. Configuration: Connection Repository
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public ConnectionRepository connectionRepository() {
Authentication authentication = SecurityContextHolder.getContext().
getAuthentication();
if (authentication == null) {
throw new IllegalStateException(
"Unable to get a ConnectionRepository: no user signed in");
}
return usersConnectionRepository().createConnectionRepository(
authentication.getName());
}
40
44. Configuration: Connection Repository
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public ConnectionRepository connectionRepository() {
Authentication authentication = SecurityContextHolder.getContext().
getAuthentication();
if (authentication == null) {
throw new IllegalStateException(
"Unable to get a ConnectionRepository: no user signed in");
}
return usersConnectionRepository().createConnectionRepository(
authentication.getName());
}
@Bean
@Scope(value="singleton", proxyMode=ScopedProxyMode.INTERFACES)
public UsersConnectionRepository usersConnectionRepository() {
return new JdbcUsersConnectionRepository(
dataSource,
connectionFactoryLocator(),
Encryptors.noOpText());
}
40
45. Configuration: ConnectController
@Bean
public ConnectController connectController() {
return new ConnectController(connectionFactoryLocator(),
connectionRepository());
}
41
46. Configuration: ConnectController
@Bean
public ConnectController connectController() {
return new ConnectController(connectionFactoryLocator(),
connectionRepository());
}
41
47. Configuration: ConnectController
@Bean
public ConnectController connectController() {
return new ConnectController(connectionFactoryLocator(),
connectionRepository());
}
41
48. Configuration: API Bindings
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public Facebook facebook() {
Connection<Facebook> facebook =
connectionRepository().findPrimaryConnection(Facebook.class);
return facebook != null ? facebook.getApi() : new FacebookTemplate();
}
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public Twitter twitter() {
Connection<Twitter> twitter =
connectionRepository().findPrimaryConnection(Twitter.class);
return twitter != null ? twitter.getApi() : new TwitterTemplate();
}
42
49. Configuration: API Bindings
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public Facebook facebook() {
Connection<Facebook> facebook =
connectionRepository().findPrimaryConnection(Facebook.class);
return facebook != null ? facebook.getApi() : new FacebookTemplate();
}
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public Twitter twitter() {
Connection<Twitter> twitter =
connectionRepository().findPrimaryConnection(Twitter.class);
return twitter != null ? twitter.getApi() : new TwitterTemplate();
}
42
50. Configuration: API Bindings
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public Facebook facebook() {
Connection<Facebook> facebook =
connectionRepository().findPrimaryConnection(Facebook.class);
return facebook != null ? facebook.getApi() : new FacebookTemplate();
}
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public Twitter twitter() {
Connection<Twitter> twitter =
connectionRepository().findPrimaryConnection(Twitter.class);
return twitter != null ? twitter.getApi() : new TwitterTemplate();
}
42
51. Configuration: API Bindings
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public Facebook facebook() {
Connection<Facebook> facebook =
connectionRepository().findPrimaryConnection(Facebook.class);
return facebook != null ? facebook.getApi() : new FacebookTemplate();
}
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public Twitter twitter() {
Connection<Twitter> twitter =
connectionRepository().findPrimaryConnection(Twitter.class);
return twitter != null ? twitter.getApi() : new TwitterTemplate();
}
42
52. Injecting and Using the API Bindings
@Controller
public class TwitterTimelineController {
private final Twitter twitter;
@Inject
public TwitterTimelineController(Twitter twitter) {
this.twitter = twitter;
}
@RequestMapping(value="/twitter/tweet",
method=RequestMethod.POST)
public String postTweet(String message) {
twitter.timelineOperations().updateStatus(message);
return "redirect:/twitter";
}
}
43
53. Injecting and Using the API Bindings
@Controller
public class TwitterTimelineController {
private final Twitter twitter;
@Inject
public TwitterTimelineController(Twitter twitter) {
this.twitter = twitter;
}
@RequestMapping(value="/twitter/tweet",
method=RequestMethod.POST)
public String postTweet(String message) {
twitter.timelineOperations().updateStatus(message);
return "redirect:/twitter";
}
}
43
54. Injecting and Using the API Bindings
@Controller
public class TwitterTimelineController {
private final Twitter twitter;
@Inject
public TwitterTimelineController(Twitter twitter) {
this.twitter = twitter;
}
@RequestMapping(value="/twitter/tweet",
method=RequestMethod.POST)
public String postTweet(String message) {
twitter.timelineOperations().updateStatus(message);
return "redirect:/twitter";
}
}
43
55. ConnectController Endpoints
GET /connect
• Displays connection status for all providers
GET /connect/{provider}
• Displays connection status for a given provider
POST /connect/{provider}
• Initiates the authorization flow, redirecting to the provider
GET /connect/{provider}?oauth_token={token}
• Handles an OAuth 1 callback
GET /connect/{provider}?code={authorization code}
• Handles an OAuth 2 callback
DELETE /connect/{provider}
• Removes all connections for a user to the given provider
DELETE /connect/{provider}/{provider user ID}
• Removes a specific connection for the user to the given provider
44
56. ConnectController Flow
Your Application
ConnectController
Service Provider
(Twitter, Facebook, etc)
45
57. ConnectController Flow
Your Application
GET /connect/{provider ID}
ConnectController
Service Provider
(Twitter, Facebook, etc)
Display connection status page
45
58. ConnectController Flow
Your Application
POST /connect/{provider ID}
ConnectController
Service Provider
(Twitter, Facebook, etc)
Initiate connection flow
45
59. ConnectController Flow
Your Application
ConnectController
Service Provider
(Twitter, Facebook, etc)
Fetch request token (OAuth 1.0/1.0a only)
45
60. ConnectController Flow
Your Application
ConnectController
Service Provider
(Twitter, Facebook, etc)
Redirect browser to provider’s authorization page
45
61. ConnectController Flow
Your Application
ConnectController
Service Provider
(Twitter, Facebook, etc)
Redirect browser to provider’s authorization page
45
62. ConnectController Flow
Your Application
ConnectController
Service Provider
(Twitter, Facebook, etc)
Redirect browser to provider’s authorization page
45
63. ConnectController Flow
Your Application
GET /connect/{provider ID}?oauth_token={token}
GET /connect/{provider ID}?code={code}
ConnectController
Service Provider
(Twitter, Facebook, etc)
Provider redirects to callback URL
45
64. ConnectController Flow
Your Application
ConnectController
Service Provider
(Twitter, Facebook, etc)
Exchange request token and/or code for access token
45
65. ConnectController Flow
Your Application
ConnectController
Service Provider
(Twitter, Facebook, etc)
ConnectController stores connection details in connection repository
45
66. ConnectController Flow
Your Application
ConnectController
Service Provider
(Twitter, Facebook, etc)
Application can make API calls via API binding
45
67. Connection Status Page View
<form action="<c:url value="/connect/twitter" />" method="POST">
<div class="formInfo">
<p>
You haven't created any connections with Twitter yet.
Click the button to connect with your Twitter account.
</p>
</div>
<p>
<button type="submit">
<img src="<c:url value="/resources/social/twitter/connect-with-twitter.png" />"/>
</button>
</p>
</form>
46
68. Provider Sign In
A convenience for users
Enables authentication to an app using their connection as
credentials
Implemented with ProviderSignInController
Works consistently with any provider
47
69. Configuration: ProviderSignInController
Performs a similar flow as ConnectController
Compares connections (by user ID)
If there’s a match, the user is signed into the application
Otherwise, the user is sent to signup page
• Connection is be established after signup
@Bean
public ProviderSignInController providerSignInController(
RequestCache requestCache) {
return new ProviderSignInController(connectionFactoryLocator(),
usersConnectionRepository(),
new SimpleSignInAdapter(requestCache));
}
48
70. Configuration: ProviderSignInController
Performs a similar flow as ConnectController
Compares connections (by user ID)
If there’s a match, the user is signed into the application
Otherwise, the user is sent to signup page
• Connection is be established after signup
@Bean
public ProviderSignInController providerSignInController(
RequestCache requestCache) {
return new ProviderSignInController(connectionFactoryLocator(),
usersConnectionRepository(),
new SimpleSignInAdapter(requestCache));
}
48
71. Configuration: ProviderSignInController
Performs a similar flow as ConnectController
Compares connections (by user ID)
If there’s a match, the user is signed into the application
Otherwise, the user is sent to signup page
• Connection is be established after signup
@Bean
public ProviderSignInController providerSignInController(
RequestCache requestCache) {
return new ProviderSignInController(connectionFactoryLocator(),
usersConnectionRepository(),
new SimpleSignInAdapter(requestCache));
}
48
72. Configuration: ProviderSignInController
Performs a similar flow as ConnectController
Compares connections (by user ID)
If there’s a match, the user is signed into the application
Otherwise, the user is sent to signup page
• Connection is be established after signup
@Bean
public ProviderSignInController providerSignInController(
RequestCache requestCache) {
return new ProviderSignInController(connectionFactoryLocator(),
usersConnectionRepository(),
new SimpleSignInAdapter(requestCache));
}
48
73. ProviderSignInController Endpoints
POST /signin/{provider}
• Initiates the authorization flow, redirecting to the provider
GET /signin/{provider}?oauth_token={token}
• Handles an OAuth 1 callback
GET /signin/{provider}?code={authorization code}
• Handles an OAuth 2 callback
GET /signin
• Handles a callback when no oauth token or code is sent
• Likely indicates that the user declined authorization
49
75. Spring Security OAuth
Extension to Spring Security
• originally a community contribution (now officially part of the project)
Features...
• endpoint management for OAuth service types
• (along with corresponding client management)
• token management (persistence, authentication)
• integrations for the web, as well as through standard Spring Security
springsource.org/spring-security/oauth
51
78. Then get an Instance of a RestTemplate for the client...
<bean class="org.springframework.security.oauth2.client.OAuth2RestTemplate">
<constructor-arg ref = “sparklr”/>
</bean>
54
79. Questions?
Josh Long | josh.long@springsource.com | @starbuxman
NOT CONFIDENTIAL -- TELL EVERYONE
Editor's Notes
\n
\n
Hello, thank you or having me. Im pleased to have the opportunity to introduce you today to Spring and the SpringSource Tool Suite \n\nMy anem is Josh Long. I serve as the developer advocate for the Spring framework. I&#x2019;ve used it in earnest and advocated it for many years now. i&#x2019;m an author on 3 books on the technology, as well as a comitter to many of the Spring projects. Additionally, I take community activism very seriously and do my best to participate in the community. Sometimes this means answering question on Twitter, or in the forums, or helping contribute to the InfoQ.com and Artima.com communities\n
\n
\n\n
\n
highlight that yu shouldnt be required to write the muck. highlight that the framework buils on the soulders of giants and benefits from almost a decafe of community feedback\n\nat its heart spring addresses these problems by delivery DI, AOP, ESA \n
these different framerworks let u tackle any problem youre likely to want to solve today \n- we support javee1.4 + 1.5 + 1.6; \n\nsits above target platform \nruns in cloud \n\n
there are lots of frameworks to solve lots of problems\nthey all use the same pojo metaphor\nlets review some ofthem ... \nnaturally, the best part is that you can pick and choose - architecture a la carte! these are just lbiraris you can add to your applications, after all \n
\n
\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pices are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pices are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pices are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n
\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pieces are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n
\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pices are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n
\n
\n
\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pices are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n
\n
\n
\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pices are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n
\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pices are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n
\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pices are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n
another example of the fact that often the client side model won&#x2019;t represent the server side model \n\n
\n
talk about how convenient the messaging support is, then roll back and start looking at how u might do the same thing manually. Explain that many of the pices are already there, and then seguqe into a discussion about the core Spring APIs. Lets imagine we&#x2019;re going to build ourselves a file system poller to notify us of when something&#x2019;s happened on the file system\n\n