This document provides an overview of web services and introduces key concepts. It discusses how web services provide a clean separation between capabilities and user interfaces, allowing companies to expose capabilities through standardized APIs. The document then covers basic web service architectures and terminology, including the roles of XML, SOAP, WSDL, and UDDI. It also provides an example WSDL definition for a sample job submission web service.
The document provides an overview and introduction to web services. It discusses installing Tomcat and Apache Axis to develop and deploy sample web services. It also covers designing client applications to use existing web services like those from Google and Amazon. Key topics introduced include SOAP, WSDL, and how web services provide a clean separation between capabilities and user interfaces, allowing capabilities to be accessed programmatically.
Designing your API Server for mobile appsMugunth Kumar
The document provides guidance on designing APIs for server applications. It discusses using the appropriate HTTP verbs like GET, POST, PUT, and DELETE based on the database operation. It emphasizes the importance of documentation, de-normalizing data into top-level models, versioning models over time, and implementing caching at the server through expiration and validation models. The document uses examples to illustrate best practices for API design.
Here are the slides from my talk at @media in London two weeks ago titled "Professional Frontend Engineering." I had four goals for the talk.
Put a stake in the ground.
Reiterate our values.
Advocate the discipline.
Nurture a healthy Web.
The goals were threaded throughout the four sections of the talk::
Historical Perspective
Our Beliefs & Principles
Knowledge Areas & Best Practices
Why It All Matters
The professionalization of frontend engineering is a topic I'm passionate about. I think it is critical to the advancement of the Internet.
Presented May 30th, 2008, in London at the @media conference in the plenary opening day two.
The document discusses getting started with the Ruby on Rails web application framework. It provides an overview of Rails' model-view-controller architecture and components like models, views, controllers, helpers, partials and layouts. It also covers how the University of Wisconsin-Eau Claire uses Rails for projects, Rails deployment options, performance, scalability and security considerations.
This document provides an overview of a tutorial on REST and web services. The tutorial will cover web basics, URI templates, HTTP, CRUD, semantics, hypermedia formats, and Atom/AtomPub. It is intended to explain how to design distributed systems using the web as a platform and leverage REST architectural principles. The tutorial will use Richardson's maturity model to discuss different service styles on a spectrum from non-RESTful to fully RESTful.
Data normalization across API interactionsCloud Elements
The document discusses the importance of data normalization when integrating APIs. It notes that APIs often have inconsistent data formats and endpoints that are not standardized. This can make APIs difficult to reuse and maintain. The document proposes normalizing data into a common structure and configuration-based transformations to map different APIs and data formats to this normalized structure. This allows applications to have a unified view of data across APIs and makes the APIs more reusable and interchangeable. It also discusses using asynchronous interactions and message buses to link normalized data across APIs rather than application-level logic.
The document is a presentation on Oracle's Project Avatar, which allows Node.js applications to run on the Java Virtual Machine (JVM). Some key points covered include:
- Avatar bridges Node.js and Java/Java EE so that Node.js apps can leverage Java libraries and infrastructure like application servers.
- It provides 95% Node.js compatibility and supports running popular Node.js packages/modules.
- Avatar 2.0 adds enterprise features like advanced multithreading, state sharing, persistence, and Java EE interoperability.
- The architecture allows Node.js code to run alongside Java code on the JVM with access to Java APIs.
The document provides an overview and introduction to web services. It discusses installing Tomcat and Apache Axis to develop and deploy sample web services. It also covers designing client applications to use existing web services like those from Google and Amazon. Key topics introduced include SOAP, WSDL, and how web services provide a clean separation between capabilities and user interfaces, allowing capabilities to be accessed programmatically.
Designing your API Server for mobile appsMugunth Kumar
The document provides guidance on designing APIs for server applications. It discusses using the appropriate HTTP verbs like GET, POST, PUT, and DELETE based on the database operation. It emphasizes the importance of documentation, de-normalizing data into top-level models, versioning models over time, and implementing caching at the server through expiration and validation models. The document uses examples to illustrate best practices for API design.
Here are the slides from my talk at @media in London two weeks ago titled "Professional Frontend Engineering." I had four goals for the talk.
Put a stake in the ground.
Reiterate our values.
Advocate the discipline.
Nurture a healthy Web.
The goals were threaded throughout the four sections of the talk::
Historical Perspective
Our Beliefs & Principles
Knowledge Areas & Best Practices
Why It All Matters
The professionalization of frontend engineering is a topic I'm passionate about. I think it is critical to the advancement of the Internet.
Presented May 30th, 2008, in London at the @media conference in the plenary opening day two.
The document discusses getting started with the Ruby on Rails web application framework. It provides an overview of Rails' model-view-controller architecture and components like models, views, controllers, helpers, partials and layouts. It also covers how the University of Wisconsin-Eau Claire uses Rails for projects, Rails deployment options, performance, scalability and security considerations.
This document provides an overview of a tutorial on REST and web services. The tutorial will cover web basics, URI templates, HTTP, CRUD, semantics, hypermedia formats, and Atom/AtomPub. It is intended to explain how to design distributed systems using the web as a platform and leverage REST architectural principles. The tutorial will use Richardson's maturity model to discuss different service styles on a spectrum from non-RESTful to fully RESTful.
Data normalization across API interactionsCloud Elements
The document discusses the importance of data normalization when integrating APIs. It notes that APIs often have inconsistent data formats and endpoints that are not standardized. This can make APIs difficult to reuse and maintain. The document proposes normalizing data into a common structure and configuration-based transformations to map different APIs and data formats to this normalized structure. This allows applications to have a unified view of data across APIs and makes the APIs more reusable and interchangeable. It also discusses using asynchronous interactions and message buses to link normalized data across APIs rather than application-level logic.
The document is a presentation on Oracle's Project Avatar, which allows Node.js applications to run on the Java Virtual Machine (JVM). Some key points covered include:
- Avatar bridges Node.js and Java/Java EE so that Node.js apps can leverage Java libraries and infrastructure like application servers.
- It provides 95% Node.js compatibility and supports running popular Node.js packages/modules.
- Avatar 2.0 adds enterprise features like advanced multithreading, state sharing, persistence, and Java EE interoperability.
- The architecture allows Node.js code to run alongside Java code on the JVM with access to Java APIs.
The document discusses the Guardian's transition from using relational databases to NoSQL databases like MongoDB. It describes the early, mid, and modern periods of the Guardian's technology stack, moving from bespoke systems to vendor CMS platforms to monolithic Java applications. Problems with scaling and complexity motivated experimenting with partial NoSQL solutions and APIs. MongoDB was ultimately chosen as it allows flexible schemas, complex queries, and easy scaling similar to relational databases but with simpler implementation. The first project to use MongoDB is replacing the user identity system stored in Oracle.
Mobile applications Development - Lecture 8
Anatomy of an HTML 5 mobile web app
PhoneGap
This presentation has been developed in the context of the Mobile Applications Development course at the Computer Science Department of the University of L’Aquila (Italy).
http://www.di.univaq.it/malavolta
The document discusses content repositories like Apache Jackrabbit and web frameworks like Apache Sling. It explains that Jackrabbit is a Java content repository API that provides structured and unstructured content storage, properties, versioning, and access control. Sling is a web framework that is built on top of content repositories, implements OSGI, and offers scriptable application layers, RESTful capabilities, and extensibility through OSGI bundles. The combination of Jackrabbit and Sling aims to meet challenges of web application development by enabling rapid prototyping, high dynamism, maintainability, and a REST architecture.
Charles Oliver Nutter gave a presentation on JRuby on Rails. He discussed how JRuby allows Ruby code to run on the Java Virtual Machine and be integrated with Java libraries and frameworks. This allows Rails developers to utilize Java features and libraries and allows Java developers to use the Rails framework. Nutter highlighted several demos of JRuby on Rails, including calling Java code from Ruby and using the ActiveRecord pattern with JDBC. He concluded that while still a work in progress, JRuby on Rails enables the benefits of both Ruby on Rails and the Java ecosystem.
This document discusses strategies for delivering content across different devices and platforms. It covers responsive design which adapts the layout based on the device and adaptive design which provides optimized experiences for different devices. The document also discusses using PhoneGap to build cross-platform mobile apps and leveraging content synchronization to keep mobile apps updated.
Abstract #236765 advanced essbase java api tips and trickstimtow
This document provides tips and tricks for using the Advanced Essbase Java API. It discusses getting started with a good IDE and required libraries. It also covers understanding the object model and task sequences, connecting to Essbase databases in embedded and 3-tier modes, accessing member information through IEssMember objects and member strings, using the fast grid API to retrieve data, and best practices for building software like using source code control, automating build scripts, and implementing robust logging.
The document discusses three developer tricks for CQ5/WEM: 1) front-end optimization techniques like concatenating, minifying, and gzipping client-side libraries, 2) mobile detection using the Wireless Universal Resource File to determine device capabilities and serve tailored content, and 3) mobile content synchronization to keep mobile versions of content in sync with their desktop counterparts.
Covering:
- What is a Content Repository and how does it work
- Comparison to relational database
- Why stable APIs are important and what to do if they are not
- Benefits of the open and transparent development
- Oh boy.. can I see it already!
- Why Sling is called Sling
- Various ways to deploy and develop code
- Deployment options and clustering
Spring Frame Work
Introduction to Spring Framework for Enterprise
IoC means Inversion of Container
Spring is the most popular framework which is development website and web design and development.
The document discusses Node.js and how it provides a runtime environment and libraries for building server-side JavaScript applications. It describes key Node.js components like the V8 JavaScript engine, libuv library, and non-blocking I/O. It also covers the Node package manager NPM and how Express.js is a web framework built on Node.js that simplifies building web apps and APIs using middleware, routing, and other features. The document advocates for building RESTful APIs that follow best practices like using a uniform interface, being stateless and cacheable.
My workshop at Software Architect 2015:
A full day about angular js, node, express and mongoDB.
You could find the code: https://github.com/habmic/MeanDemoCode
This document provides an introduction to the Asha platform and Java ME. It discusses that Java ME is the most widespread mobile application platform, developed by Sun Microsystems and now owned by Oracle. It was designed to be a cross-platform solution for mobile devices. The Asha platform is Nokia's low-end mobile phone platform, powered by Java ME. It supports apps written in Java ME or as web apps using the Gecko rendering engine. The document provides overviews of Java ME configurations like CLDC and MIDP, and the KVM which is an optimized Java virtual machine for mobile devices.
JSP (JavaServer Pages) allow embedding Java code within HTML/XML pages to create dynamic web content. Key points:
- JSP pages are compiled into Java servlets to generate the HTML response. This means JSP have access to full Java APIs and can be efficiently handled by the server.
- It is recommended to separate presentation logic in JSP from business logic in Java classes to improve modularity. This can be done using JavaBeans, tag libraries, and MVC pattern.
- Examples demonstrate using JSP scriplets and expressions to output dynamic data, JavaBeans to encapsulate data in reusable objects, and tag libraries to access beans and simplify JSP code. Form submission examples pass
Oracle SQL Developer Top 10 Tips & TricksJeff Smith
Oracle SQL Developer product manager Jeff Smith shares his top 10 tips for boosting productivity and saving time while working with the Oracle Database IDE.
Learn the best practices and advanced techniques.
* Passing data to client libs, use the data attribute
* Expression contexts, choose wisely
* Use statement best practices, what fits best your needs
* Template & Call statements advanced usage
* Parameters for sub-resources, featuring resource attributes and synthetic resources
Organinzing Your PHP Projects (2010 Memphis PHP)Paul Jones
By using a single organizational principle, developers can easily make their project structure more predictable, extensible, and modular. The talk will discuss this one lesson, how it can be discovered from researching publicly available PHP projects, how to apply it, and how it is used (or not used) in well-known applications and frameworks.
Action-Domain-Responder: A Refinement of MVCPaul Jones
Using Model-View-Controller as a pattern to describe stateless HTTP interactions has always been a bit of a kludge. There simply hasn't been a better pattern web applications -- until now.
ADR (Action-Domain-Responder) represents a refinement of generic MVC as an application architecture specifically tuned to the web. In this talk, we will discuss various patterns of overall application architecture, including MVC, MVP, PAC, DCI, RMR, and others. We will find out how the ADR pattern arises from generic MVC, and how it provides a better description of how web applications actually work. Finally, we will go over examples of how to architect an ADR application, as well as how to convert from an MVC architecture to an ADR one.
Business Applications Integration In The CloudAnna Brzezińska
Filip Rogaczewski - Atlassian Connect Team Lead.
Presentation from Gdansk University of Technology about integration business application in the cloud i.e. how to integrate 50 000+ servers together.
UNIT – 5
PART- II
JDBC DRIVER AND ITS TYPES
DATABASE URL FORMULATION
CREATE CONNECTION OBJECT
CLOSING JDBC CONNECTIONS
DATA TYPES
RESULT SETS
CONCURRENCY OF RESULTSET
VIEWING A RESULT SET
TRANSACTIONS
COMMIT & ROLLBACK
Slides of my hands-on lab at MAX 2011.
They explain how to optimize an HTML5 site running on a WEM instance, first quickly introducing HTML5 an WEM. Then, optimizing the CSS and JS inclusions, using the new Client Library feature. And finally, setting up the Dispatcher cache to deliver the right HTTP headers.
Green Leaf The Design Studio is a new design studio located in Nerul, Navi Mumbai that offers 360-degree creative solutions across advertising and promotions. They specialize in concept through execution across all media, with the goal of delivering effective creative solutions that provide value to clients. Their services include branding, print, outdoor, digital, and other design work, and they have experience working with companies in various industries.
The document discusses the Guardian's transition from using relational databases to NoSQL databases like MongoDB. It describes the early, mid, and modern periods of the Guardian's technology stack, moving from bespoke systems to vendor CMS platforms to monolithic Java applications. Problems with scaling and complexity motivated experimenting with partial NoSQL solutions and APIs. MongoDB was ultimately chosen as it allows flexible schemas, complex queries, and easy scaling similar to relational databases but with simpler implementation. The first project to use MongoDB is replacing the user identity system stored in Oracle.
Mobile applications Development - Lecture 8
Anatomy of an HTML 5 mobile web app
PhoneGap
This presentation has been developed in the context of the Mobile Applications Development course at the Computer Science Department of the University of L’Aquila (Italy).
http://www.di.univaq.it/malavolta
The document discusses content repositories like Apache Jackrabbit and web frameworks like Apache Sling. It explains that Jackrabbit is a Java content repository API that provides structured and unstructured content storage, properties, versioning, and access control. Sling is a web framework that is built on top of content repositories, implements OSGI, and offers scriptable application layers, RESTful capabilities, and extensibility through OSGI bundles. The combination of Jackrabbit and Sling aims to meet challenges of web application development by enabling rapid prototyping, high dynamism, maintainability, and a REST architecture.
Charles Oliver Nutter gave a presentation on JRuby on Rails. He discussed how JRuby allows Ruby code to run on the Java Virtual Machine and be integrated with Java libraries and frameworks. This allows Rails developers to utilize Java features and libraries and allows Java developers to use the Rails framework. Nutter highlighted several demos of JRuby on Rails, including calling Java code from Ruby and using the ActiveRecord pattern with JDBC. He concluded that while still a work in progress, JRuby on Rails enables the benefits of both Ruby on Rails and the Java ecosystem.
This document discusses strategies for delivering content across different devices and platforms. It covers responsive design which adapts the layout based on the device and adaptive design which provides optimized experiences for different devices. The document also discusses using PhoneGap to build cross-platform mobile apps and leveraging content synchronization to keep mobile apps updated.
Abstract #236765 advanced essbase java api tips and trickstimtow
This document provides tips and tricks for using the Advanced Essbase Java API. It discusses getting started with a good IDE and required libraries. It also covers understanding the object model and task sequences, connecting to Essbase databases in embedded and 3-tier modes, accessing member information through IEssMember objects and member strings, using the fast grid API to retrieve data, and best practices for building software like using source code control, automating build scripts, and implementing robust logging.
The document discusses three developer tricks for CQ5/WEM: 1) front-end optimization techniques like concatenating, minifying, and gzipping client-side libraries, 2) mobile detection using the Wireless Universal Resource File to determine device capabilities and serve tailored content, and 3) mobile content synchronization to keep mobile versions of content in sync with their desktop counterparts.
Covering:
- What is a Content Repository and how does it work
- Comparison to relational database
- Why stable APIs are important and what to do if they are not
- Benefits of the open and transparent development
- Oh boy.. can I see it already!
- Why Sling is called Sling
- Various ways to deploy and develop code
- Deployment options and clustering
Spring Frame Work
Introduction to Spring Framework for Enterprise
IoC means Inversion of Container
Spring is the most popular framework which is development website and web design and development.
The document discusses Node.js and how it provides a runtime environment and libraries for building server-side JavaScript applications. It describes key Node.js components like the V8 JavaScript engine, libuv library, and non-blocking I/O. It also covers the Node package manager NPM and how Express.js is a web framework built on Node.js that simplifies building web apps and APIs using middleware, routing, and other features. The document advocates for building RESTful APIs that follow best practices like using a uniform interface, being stateless and cacheable.
My workshop at Software Architect 2015:
A full day about angular js, node, express and mongoDB.
You could find the code: https://github.com/habmic/MeanDemoCode
This document provides an introduction to the Asha platform and Java ME. It discusses that Java ME is the most widespread mobile application platform, developed by Sun Microsystems and now owned by Oracle. It was designed to be a cross-platform solution for mobile devices. The Asha platform is Nokia's low-end mobile phone platform, powered by Java ME. It supports apps written in Java ME or as web apps using the Gecko rendering engine. The document provides overviews of Java ME configurations like CLDC and MIDP, and the KVM which is an optimized Java virtual machine for mobile devices.
JSP (JavaServer Pages) allow embedding Java code within HTML/XML pages to create dynamic web content. Key points:
- JSP pages are compiled into Java servlets to generate the HTML response. This means JSP have access to full Java APIs and can be efficiently handled by the server.
- It is recommended to separate presentation logic in JSP from business logic in Java classes to improve modularity. This can be done using JavaBeans, tag libraries, and MVC pattern.
- Examples demonstrate using JSP scriplets and expressions to output dynamic data, JavaBeans to encapsulate data in reusable objects, and tag libraries to access beans and simplify JSP code. Form submission examples pass
Oracle SQL Developer Top 10 Tips & TricksJeff Smith
Oracle SQL Developer product manager Jeff Smith shares his top 10 tips for boosting productivity and saving time while working with the Oracle Database IDE.
Learn the best practices and advanced techniques.
* Passing data to client libs, use the data attribute
* Expression contexts, choose wisely
* Use statement best practices, what fits best your needs
* Template & Call statements advanced usage
* Parameters for sub-resources, featuring resource attributes and synthetic resources
Organinzing Your PHP Projects (2010 Memphis PHP)Paul Jones
By using a single organizational principle, developers can easily make their project structure more predictable, extensible, and modular. The talk will discuss this one lesson, how it can be discovered from researching publicly available PHP projects, how to apply it, and how it is used (or not used) in well-known applications and frameworks.
Action-Domain-Responder: A Refinement of MVCPaul Jones
Using Model-View-Controller as a pattern to describe stateless HTTP interactions has always been a bit of a kludge. There simply hasn't been a better pattern web applications -- until now.
ADR (Action-Domain-Responder) represents a refinement of generic MVC as an application architecture specifically tuned to the web. In this talk, we will discuss various patterns of overall application architecture, including MVC, MVP, PAC, DCI, RMR, and others. We will find out how the ADR pattern arises from generic MVC, and how it provides a better description of how web applications actually work. Finally, we will go over examples of how to architect an ADR application, as well as how to convert from an MVC architecture to an ADR one.
Business Applications Integration In The CloudAnna Brzezińska
Filip Rogaczewski - Atlassian Connect Team Lead.
Presentation from Gdansk University of Technology about integration business application in the cloud i.e. how to integrate 50 000+ servers together.
UNIT – 5
PART- II
JDBC DRIVER AND ITS TYPES
DATABASE URL FORMULATION
CREATE CONNECTION OBJECT
CLOSING JDBC CONNECTIONS
DATA TYPES
RESULT SETS
CONCURRENCY OF RESULTSET
VIEWING A RESULT SET
TRANSACTIONS
COMMIT & ROLLBACK
Slides of my hands-on lab at MAX 2011.
They explain how to optimize an HTML5 site running on a WEM instance, first quickly introducing HTML5 an WEM. Then, optimizing the CSS and JS inclusions, using the new Client Library feature. And finally, setting up the Dispatcher cache to deliver the right HTTP headers.
Green Leaf The Design Studio is a new design studio located in Nerul, Navi Mumbai that offers 360-degree creative solutions across advertising and promotions. They specialize in concept through execution across all media, with the goal of delivering effective creative solutions that provide value to clients. Their services include branding, print, outdoor, digital, and other design work, and they have experience working with companies in various industries.
The document provides a lesson on tourism English, including questions about locations, objects, and people in photos as well as facts about Taiwan having many convenience stores. It then reviews vocabulary words and provides practice sentences to fill in the blanks. The lesson concludes with a review of a student's 3-day tour of a Canadian city.
This document provides an introduction to sound effects used in television, radio, and movies. It explains that sound effects are added by Foley artists to help audiences understand what is happening in a scene. Foley artists record sound effects in a studio that are later added to films, like the sound of walking in snow. The document discusses the most famous sound effect in history, known as the Wilhelm Scream, which was first used in 1951 and has been reused in hundreds of films since.
This document outlines the objectives and components of the Mahila Kisan Sashaktikaran Pariyojana (MKSP) program in India. The key goals of the MKSP are to improve the status of women in agriculture, enhance opportunities for their empowerment, and support sustainable agricultural livelihoods for rural women. The program aims to do this by enhancing women's participation and skills in agriculture, improving access to inputs and services, and ensuring food and nutrition security. It is implemented through project-based approaches using consortiums of government agencies, NGOs, cooperatives and self-help groups. Projects last up to 3 years and include components like organizing women farmers, skill development, improving market access, and
This document provides an introduction to distributed architectures and service-oriented architectures (SOAs). It discusses traditional programming models and how distributed programming models address some of their limitations. It then introduces some key SOA concepts, including the roles of standards organizations and definitions of SOA. It also provides examples to illustrate XML-based architectures and how they can address issues like decoupling data from formatting and reusability.
Just a few years back, lack of a standard way to document, govern or describe a contract for the APIs acted as a deterrent to API adoption within the enterprise. WSDL 2.0 and WADL provided early support, but they couldn’t truly capture the essence of RESTful APIs. Recently we have seen the emergence of several description languages. New ways to describe and document APIs have emerged such as Swagger, RAML, API Blueprint and others, each taking a slightly different approach.
This document discusses API description languages (APIs), comparing Swagger and RAML. It provides an overview of each specification and demonstrates how to define a sample wishlist API using Swagger via swagger-node-express and RAML. While both work well for RESTful APIs, RAML allows for more robust modeling and top-down design capabilities. The document considers issues like documentation approaches and generating documentation from code versus design.
API Description Languages: Which Is The Right One For Me? ProgrammableWeb
The document discusses and compares different API description languages (APIs), including RAML and Swagger. It provides an overview of each tool's features and capabilities. The document also shares the author's experiences using RAML and Swagger to describe sample APIs. While both APIs are useful for documentation, the author found RAML better suited for designing APIs first before coding, while Swagger integrates more tightly with code.
The document provides an overview of JavaScript topics including what JavaScript is, where it is used, syntax features like variables, conditionals, and loops. It also discusses JavaScript design principles like progressive enhancement and graceful degradation. Key JavaScript concepts like objects, arrays, functions, and built-in objects like String, Math, and Date are described. The document is a module syllabus that introduces foundational JavaScript concepts.
The document discusses the Apache SOA stack and debunks some myths about SOA. It provides an overview of the Enterprise Service Bus (ESB) and explains why the Apache ServiceMix stack is a good choice as an ESB due to its modularity, stability, and cluster capabilities. The document also discusses how to design software and build systems for an ESB using OSGi and Maven.
This document provides an overview of JavaScript, including:
- JavaScript can run in browsers without needing Java and is used for client-side scripting. It allows dynamic interactions with web pages.
- JavaScript code can be included inline, embedded in <script> tags, or linked externally from .js files. External is preferred for maintenance.
- Variables, data types, operators, and control structures are explained. Objects are collections of properties and methods.
- Client-side scripting benefits include offloading processing to clients and faster responses to user events. Disadvantages include lack of JavaScript support and cross-browser inconsistencies.
- AJAX made JavaScript more important by enabling asynchronous data requests without blocking the browser.
The document discusses Java web services and related technologies. It provides an overview of service-oriented architecture (SOA) and web services standards like XML, SOAP, WSDL and UDDI. It also covers Java tools for working with XML and implementing RESTful web services in Java, as well as the business needs and technical challenges that web services address.
Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Curr...HostedbyConfluent
Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Current 2022
The Wikimedia Foundation (which operates Wikipedia) has a different engineering environment than most organizations. We build systems using only Free and Open Source Software. We have a diverse and active developer community that contributes to our software. For privacy reasons, we own and run bare metal hardware. We care about open data, and strive to make our data publicly available.
Because of this, the way we build event driven architectures is different too. The data we produce should be easily consumable for both internal engineers as well as the public
developer community. Avro and other binary formats can make using data difficult, so we intentionally chose to avoid them.
This session will describe how and why we built Wikimedia's Event Data Platform using Kafka, JSON and JSONSchemas, and how we make our event data available to the world.
This document describes four primary models for developing Java applications on the AS/400: HTTP servlets, transaction serving, Domino agents, and distributed objects. It compares these models to the traditional interactive job structure and discusses how each handles system services like transactions and security. The models provide different levels of services, with distributed objects eventually providing the most complete environment similar to traditional models.
Laravel is a powerful PHP web framework that provides tools like authentication, routing, caching and database migration out of the box. It uses an MVC architecture and Eloquent ORM for database access. Key features include its Artisan CLI, resource controllers, routing system and Blade templating engine. Laravel also includes facilities for caching, queues, events and security.
Rod Johnson created the Spring Framework, an open-source Java application framework. Spring is considered a flexible, low-cost framework that improves coding efficiency. It helps developers perform functions like creating database transaction methods without transaction APIs. Spring removes configuration work so developers can focus on writing business logic. The Spring Framework uses inversion of control (IoC) and dependency injection (DI) principles to manage application objects and dependencies between them.
Ruby on Rails (RoR) as a back-end processor for Apex Espen Brækken
This document discusses using Ruby and Ruby on Rails (RoR) as a supplement to Oracle Application Express (Apex). It provides an overview of why a supplement may be needed, why Ruby and Rails were chosen, and how ActiveRecord in Rails simplifies database access through object mapping. Key points covered include conventions over configuration in Rails, the anatomy of Rails including ActiveRecord, and examples of ActiveRecord usage with database configuration through YAML files rather than direct connection hashes.
This document provides best practices for building modern web applications. It discusses choosing server-side technologies like the LAMP stack (Linux, Apache, MySQL, PHP), which is a common and advantageous option. It also covers the Model-View-Controller design pattern, which separates an application into these components. Models manage data, Views handle presentation, and Controllers process user input and pass data between Models and Views. The document recommends unobtrusive JavaScript, CSS for layout, and implementing AJAX after non-script functionality is established on the client-side. Overall, it outlines strategies for architecting robust and maintainable web applications.
Introduction To Angular.js - SpringPeopleSpringPeople
Angular.JS is quickly becoming the dominant JavaScript framework for professional web development. This quick 3 minute introduction will brief you about Angular.js
API Description Languages: Which is the Right One for Me?Akana
SOA Software Director of API Strategy, Laura Heritage, discusses new ways to describe and document APIs have emerged such as Swagger, RAML, API Blueprint and others, each taking a slightly different approach. Please join us in this webinar to hear how these description languages differ and how to choose right one for your API.
API Description Languages: Which is the Right One for Me?Akana
The document discusses and compares various API description languages (APIs DL) that can be used to describe RESTful APIs, including Swagger, RAML, API Blueprint, and others. It provides an overview of each API DL, how they are used, their capabilities, tooling support, and considerations for choosing one. It focuses specifically on experiences using Swagger, RAML, and API Blueprint to prototype and describe APIs. Overall, the document aims to help readers understand the different API DL options and determine which may be best for their needs and development approach.
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsSpike Brehm
This document discusses isomorphic JavaScript, which allows JavaScript code to run on both the client and server sides. It explains that isomorphic JavaScript is environment-agnostic and does not depend on browser- or server-specific properties. Popular libraries like Handlebars, Backbone, and React can be used isomorphically. Building isomorphic apps improves performance, enables search engine crawling of single-page apps, reduces code duplication, and increases flexibility. The document outlines how tools like Browserify and build systems like Grunt can be used to bundle code for both environments.
The document discusses the main languages used for web development: HTML defines the content and structure of web pages, CSS styles the visual presentation of HTML elements, and JavaScript adds interactivity. It also covers server-side scripting which programs the server's behavior, and SQL for accessing and manipulating databases.
Web Development Environments: Choose the best or go with the restgeorge.james
The document discusses various web development environments and frameworks for choosing the right one. It covers popular options like ASP.NET, Java/JSP, PHP, Python and Ruby as well as databases. For each, it provides an overview and examples of sorting data to demonstrate capabilities. It emphasizes evaluating options based on requirements rather than following trends and notes the impact that open source movements and companies can have on technologies.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
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.
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
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.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
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.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
20 Comprehensive Checklist of Designing and Developing a WebsitePixlogix Infotech
Dive into the world of Website Designing and Developing with Pixlogix! Looking to create a stunning online presence? Look no further! Our comprehensive checklist covers everything you need to know to craft a website that stands out. From user-friendly design to seamless functionality, we've got you covered. Don't miss out on this invaluable resource! Check out our checklist now at Pixlogix and start your journey towards a captivating online presence today.
Building RAG with self-deployed Milvus vector database and Snowpark Container...Zilliz
This talk will give hands-on advice on building RAG applications with an open-source Milvus database deployed as a docker container. We will also introduce the integration of Milvus with Snowpark Container Services.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Climate Impact of Software Testing at Nordic Testing Days
Web servicesoverview
1. Web Services OverviewWeb Services Overview
Marlon PierceMarlon Pierce
Community Grids LabCommunity Grids Lab
Indiana UniversityIndiana University
2. AssignmentsAssignments
Download and install Tomcat (again).Download and install Tomcat (again).
• http://jakarta.apache.org/tomcat/http://jakarta.apache.org/tomcat/
• You will need two tomcat servers.You will need two tomcat servers.
Install Apache Axis.Install Apache Axis.
• Use “HappyAxis” to make sure you have done soUse “HappyAxis” to make sure you have done so
correctly.correctly.
• http://ws.apache.org/axis/http://ws.apache.org/axis/
Design and deploy a sample web service.Design and deploy a sample web service.
Write a client application to use the web service.Write a client application to use the web service.
Use Google and Amazon WSDL to design yourUse Google and Amazon WSDL to design your
own client.own client.
3. This Lecture…This Lecture…
This lecture is intended toThis lecture is intended to introduceintroduce
the main concepts of Web Services.the main concepts of Web Services.
We will also look at some thingsWe will also look at some things
((SOAP, WSDLSOAP, WSDL) in detail…) in detail…
But the primary purpose is toBut the primary purpose is to
introduce topics that will all beintroduce topics that will all be
covered incovered in greater detailgreater detail in futurein future
lectures.lectures.
4. What Are Web Services?What Are Web Services?
Web services framework is an XML-based distributedWeb services framework is an XML-based distributed
object/service/component system.object/service/component system.
• SOAP, WSDLSOAP, WSDL, WSIL, UDDI, WSIL, UDDI
• Intended to supportIntended to support machine-to-machinemachine-to-machine interactions over theinteractions over the
network.network.
Basic ideas is to build anBasic ideas is to build an platform and programmingplatform and programming
language-independentlanguage-independent distributed invocation system out ofdistributed invocation system out of
existingexisting Web standardsWeb standards..
• Most standards defined by W3C, Oasis (IP considerations)Most standards defined by W3C, Oasis (IP considerations)
• Interoperability really works, as long as you can map XMLInteroperability really works, as long as you can map XML
message to a programming language type, structure, class,message to a programming language type, structure, class,
etc.etc.
Very loosely defined, when compared toVery loosely defined, when compared to CORBACORBA, etc., etc.
Inherit both good and bad of the webInherit both good and bad of the web
• Scalable, simple, distributedScalable, simple, distributed
• But no centralized management, system is inefficient, must beBut no centralized management, system is inefficient, must be
tolerant of failures.tolerant of failures.
5. Basic Architectures:Basic Architectures:
Servlets/CGI and Web ServicesServlets/CGI and Web Services
Browser
Web
Server
HTTP GET/POST
DB
JDBC
Web
Server
DB
JDBC
Browser
Web
Server
SOAP
GUI
Client
SOAP
WSDL
WSDL
WSDL
WSDL
6. Explanation of Previous SlideExplanation of Previous Slide
The diagram on the left represents a standardThe diagram on the left represents a standard
web application.web application.
• Browsers converse with web servers using HTTPBrowsers converse with web servers using HTTP
GET/POST methods.GET/POST methods.
• Servlets or CGI scripts process the parameters and takeServlets or CGI scripts process the parameters and take
action, like connect to a DB.action, like connect to a DB.
• Examples:Examples: Google, AmazonGoogle, Amazon
On the right, we have a Web services system.On the right, we have a Web services system.
• Interactions may be either through the browser orInteractions may be either through the browser or
through a desktop client (Java Swing, Python, Windows,through a desktop client (Java Swing, Python, Windows,
etc.)etc.)
• I will explain how to do this in several more lectures.I will explain how to do this in several more lectures.
• Examples:Examples: Google, AmazonGoogle, Amazon
7. Some TerminologySome Terminology
The diagram on the left is called aThe diagram on the left is called a client/serverclient/server
system.system.
The diagram on the right is called aThe diagram on the right is called a multi-tieredmulti-tiered
architecture.architecture.
SOAPSOAP: Simple Object Access Protocol: Simple Object Access Protocol
• XML Message format between client and service.XML Message format between client and service.
WSDLWSDL: Web Service Description Language.: Web Service Description Language.
• Describes how the service is to be usedDescribes how the service is to be used
• Compare (for example) to Java Interface.Compare (for example) to Java Interface.
• Guideline for constructing SOAP messages.Guideline for constructing SOAP messages.
• WSDL is an XML language for writingWSDL is an XML language for writing ApplicationApplication
Programmer InterfacesProgrammer Interfaces (APIs).(APIs).
8. Amazon and Google ExperimentAmazon and Google Experiment
with Web Serviceswith Web Services
Both Google and Amazon have conductedBoth Google and Amazon have conducted
open experiments with Web services.open experiments with Web services.
Why? To allow partners to develop customWhy? To allow partners to develop custom
user interfaces and applications that workuser interfaces and applications that work
Google and Amazon data and services.Google and Amazon data and services.
You can download their APIs and try them.You can download their APIs and try them.
• http://www.google.com/apis/http://www.google.com/apis/
• http://www.amazon.com/webserviceshttp://www.amazon.com/webservices
9. Why Use Web Services?Why Use Web Services?
Web services provide a cleanWeb services provide a clean separationseparation
between a capability and its user interface.between a capability and its user interface.
This allows a company (Google) with aThis allows a company (Google) with a
sophisticated capability and huge amountssophisticated capability and huge amounts
of data to make that capability available toof data to make that capability available to
its partners.its partners.
• ““Don’t worry about howDon’t worry about how PageRankPageRank works orworks or
web robots or data storage. We will do that.web robots or data storage. We will do that.
You just use this WSDL API to build your clientYou just use this WSDL API to build your client
application to use our search engine.”application to use our search engine.”
10. A Google AsideA Google Aside
Google’sGoogle’s PageRankPageRank system was developedsystem was developed
by two Stanford grad students.by two Stanford grad students.
OpenOpen algorithm published in scholarlyalgorithm published in scholarly
journals, conferences.journals, conferences.
• Previous (and lousy) search engines were allPrevious (and lousy) search engines were all
proprietary.proprietary.
See for exampleSee for example
http://www7.scu.edu.au/programme/fullphttp://www7.scu.edu.au/programme/fullp
apers/1921/com1921.htmapers/1921/com1921.htm
11. When To Use Web Services?When To Use Web Services?
Applications do not have severe restrictions onApplications do not have severe restrictions on
reliability and speedreliability and speed..
Two or more organizations need toTwo or more organizations need to cooperatecooperate
• One needs to write an application that uses another’sOne needs to write an application that uses another’s
service.service.
Services can beServices can be upgraded independentlyupgraded independently ofof
clients.clients.
• Google can improve PageRank implemenation withoutGoogle can improve PageRank implemenation without
telling me.telling me.
• Just don’t change the WSDL.Just don’t change the WSDL.
Services can be easily expressed with simpleServices can be easily expressed with simple
request/responserequest/response semantics and simplesemantics and simple statestate..
• HTTP and Cookies, for example.HTTP and Cookies, for example.
12. Relationship to PreviousRelationship to Previous
WorkWork
Connecting to Bryan’sConnecting to Bryan’s
Lectures on XML, Java, JavaLectures on XML, Java, Java
Servlets and JSP.Servlets and JSP.
13. XML OverviewXML Overview
XML is a language for building languages.XML is a language for building languages.
Basic rules: be well formed and be validBasic rules: be well formed and be valid
Particular XML “dialects” are defined by anParticular XML “dialects” are defined by an
XML Schema.XML Schema.
• XML itself is defined by its own schema.XML itself is defined by its own schema.
XML is extensible via namespacesXML is extensible via namespaces
Many non-Web services dialectsMany non-Web services dialects
• RDF, SVG,GML, XForms, XHTMLRDF, SVG,GML, XForms, XHTML
Many basic tools available: parsers, XPathMany basic tools available: parsers, XPath
and XQuery for searching/querying, etc.and XQuery for searching/querying, etc.
14. XML and Web servicesXML and Web services
XML provides a natural substrate for distributedXML provides a natural substrate for distributed
computing:computing:
• Its just a data description.Its just a data description.
• Platform, programming language independent.Platform, programming language independent.
So let’s describe the pieces.So let’s describe the pieces.
Web Services Description Language (WSDL)Web Services Description Language (WSDL)
• Describes how to invoke a service (compare with CORBADescribes how to invoke a service (compare with CORBA
IDL).IDL).
• Can bind to SOAP, other protocols for actual invocation.Can bind to SOAP, other protocols for actual invocation.
Simple Object Access Protocol (SOAP)Simple Object Access Protocol (SOAP)
• Wire protocol extension for conveying RPC calls.Wire protocol extension for conveying RPC calls.
• Can be carried over HTTP, SMTP.Can be carried over HTTP, SMTP.
15. Web Service ArchitecturesWeb Service Architectures
The following examples illustrate how WebThe following examples illustrate how Web
services interact with clients.services interact with clients.
For us, a client is typically a JSP, servlet,For us, a client is typically a JSP, servlet,
or portlet that a user accesses throughor portlet that a user accesses through
browser.browser.
You can also build other clientsYou can also build other clients
• Web serviceWeb service interoperabilityinteroperability means that clientsmeans that clients
and services can be in different programmingand services can be in different programming
languages (C/C++, python, java, etc).languages (C/C++, python, java, etc).
16. Browser Interface
User Interface
Server + Client
Stubs
Server plus
Service
Implementations
Backend
Resources
HTTP(S)
SOAP/HTTP(S)
Local invocation, JDBC
connection or Grid Protocol
UI Server has stubs
for all services (data
base access, job
submission, file
transfer, etc.)
A particular server
has several
service implementations.
Backend is a database,
application code plus
operating system.
17. User Interface Server
DB Service 1
JDBC
DB
Job Sub/Mon
And File
Services
Operating and
Queuing
Systems
User Interface
DB Service 2
JDBC
DB
Host 1 Host 2 Host 3
18. Before Going On…Before Going On…
In the next several slides we’ll go into theIn the next several slides we’ll go into the
details of WSDL and SOAP.details of WSDL and SOAP.
But in practice,But in practice, you don’t need to workyou don’t need to work
directly with eitherdirectly with either..
• Most tools that I’m familiar with generate theMost tools that I’m familiar with generate the
WSDL for you from your class.WSDL for you from your class.
• SOAP messages are constructed by classes.SOAP messages are constructed by classes.
• GeneratedGenerated client stubsclient stubs will even hide SOAPwill even hide SOAP
classes behind a local “façade” that looks like aclasses behind a local “façade” that looks like a
local class but actually constructs SOAP calls tolocal class but actually constructs SOAP calls to
the remote server.the remote server.
19. Web ServicesWeb Services
Description LanguageDescription Language
Defines what your serviceDefines what your service
does and how it is invoked.does and how it is invoked.
20. WSDL OverviewWSDL Overview
WSDL is an XML-based Interface DefinitionWSDL is an XML-based Interface Definition
Language.Language.
• You can define the APIs for all of your services in WSDL.You can define the APIs for all of your services in WSDL.
WSDL docs are broken into five major parts:WSDL docs are broken into five major parts:
• Data definitionsData definitions (in XML) for custom types(in XML) for custom types
• Abstract message definitionsAbstract message definitions (request, response)(request, response)
• Organization of messages into “Organization of messages into “portsports” and “” and “operationsoperations””
((classes and methods).classes and methods).
• Protocol bindingsProtocol bindings (to SOAP, for example)(to SOAP, for example)
• Service point locationsService point locations (URLs)(URLs)
Some interesting featuresSome interesting features
• A single WSDL document can describe several versionsA single WSDL document can describe several versions
of an interface.of an interface.
• A single WSDL doc can describe several related services.A single WSDL doc can describe several related services.
21. The Java CodeThe Java Code
public String[] execLocalCommand(Stringpublic String[] execLocalCommand(String
command) {command) {
Runtime rt = Runtime.getRuntime();Runtime rt = Runtime.getRuntime();
String stdout="",stderr="";String stdout="",stderr="";
try {try {
Process p = rt.exec(command);Process p = rt.exec(command);
BufferedReader in=BufferedReader in=
new BufferedReader(newnew BufferedReader(new
InputStreamReader(p.getInputStream()));InputStreamReader(p.getInputStream()));
BufferedReader err=BufferedReader err=
new BufferedReader(newnew BufferedReader(new
InputStreamReader(p.getErrorStream()));InputStreamReader(p.getErrorStream()));
22. Java Code ContinuedJava Code Continued
String line;String line;
while((line=in.readLine())!= null)while((line=in.readLine())!= null)
{stdout+=line+"n";}{stdout+=line+"n";}
in.close();in.close();
while ((line=err.readLine())!=null)while ((line=err.readLine())!=null)
{stderr+=line+"n";}{stderr+=line+"n";}
err.close();err.close();
}//End of try{}}//End of try{}
catch (Exception eio) {…}catch (Exception eio) {…}
String[] retstring=new String[2];String[] retstring=new String[2];
retstring[0]=stdout;retstring[0]=stdout;
retstring[1]=stderr;retstring[1]=stderr;
return retstring;return retstring;
} //End of method} //End of method
23. WSDL Example: JobWSDL Example: Job
SubmissionSubmission
Our example is a simple service that canOur example is a simple service that can
executes local (to the server) commands.executes local (to the server) commands.
Service implementation (in Java) has aService implementation (in Java) has a
single methodsingle method
• ExecLocal takes a single string argument (theExecLocal takes a single string argument (the
command to exec)command to exec)
• Returns a 2D string array (standard out andReturns a 2D string array (standard out and
error).error).
The WSDL maps to a Java interface in thisThe WSDL maps to a Java interface in this
case.case.
24. The Full WSDLThe Full WSDL
The following slide contains the WSDLThe following slide contains the WSDL
definition for the Job Submit service.definition for the Job Submit service.
• I omitted some data definitions to get into oneI omitted some data definitions to get into one
page with a decent font.page with a decent font.
As you can see, WSDL is veryAs you can see, WSDL is very verboseverbose
• Typically, you don’t write WSDLTypically, you don’t write WSDL
• This file was actually generated from my JavaThis file was actually generated from my Java
class byclass by Apache AxisApache Axis..
We will go through the parts of the doc inWe will go through the parts of the doc in
some detail.some detail.
26. WSDL Elements IWSDL Elements I
TypesTypes: describes custom XML data types: describes custom XML data types
(optional) used in messages.(optional) used in messages.
• For OO languages, types are a limited objectFor OO languages, types are a limited object
serialization.serialization.
• We’ll see an example for defining arrays.We’ll see an example for defining arrays.
MessageMessage: abstractly defines the messages that: abstractly defines the messages that
need to be exchanged.need to be exchanged.
• Conventionally messages are used to group requestsConventionally messages are used to group requests
and responses.and responses.
• Each method/function in the interface contains 0-1Each method/function in the interface contains 0-1
request and 0-1 response messages.request and 0-1 response messages.
• Consists ofConsists of partpart elements. Usually you need one part forelements. Usually you need one part for
each variable sent or received. Parts can either be XMLeach variable sent or received. Parts can either be XML
primitive types or custom complex types.primitive types or custom complex types.
27. TypesTypes for Job Submissionfor Job Submission
Recall that the job submissionRecall that the job submission
service sends a string (theservice sends a string (the
command) and returns a 2D array.command) and returns a 2D array.
StringsStrings are XML Schemaare XML Schema primitiveprimitive
typestypes, so we don’t need a special, so we don’t need a special
definition in our WSDL.definition in our WSDL.
ArraysArrays areare not primitive typesnot primitive types. They. They
are defined in the SOAP schema, soare defined in the SOAP schema, so
we will import that definition.we will import that definition.
• In other words, SOAP has rules for arrayIn other words, SOAP has rules for array
encoding; vanilla XML does not.encoding; vanilla XML does not.
29. What Does It Mean?What Does It Mean?
We start with some usefulWe start with some useful
namespace definitions.namespace definitions.
We next import the SOAP schemaWe next import the SOAP schema
• It has the array definitions we need.It has the array definitions we need.
Finally, we define our own local XMLFinally, we define our own local XML
complex type, ArrayOf_xsd_string.complex type, ArrayOf_xsd_string.
• This extends the SOAP array typeThis extends the SOAP array type
• We restrict this to String arrays.We restrict this to String arrays.
30. MessageMessage Elements for JobElements for Job
Submission ServiceSubmission Service
Our service implementation has one method ofOur service implementation has one method of
the form (in Java)the form (in Java)
public String[] execLocalCommand(String cmd)public String[] execLocalCommand(String cmd)
This will require one “request” message and oneThis will require one “request” message and one
“response” message.“response” message.
Each message has oneEach message has one part:part:
• Request message must send the String cmd.Request message must send the String cmd.
• Response must get back the String[] array (definedResponse must get back the String[] array (defined
previously as a custom type).previously as a custom type).
If we had to pass two input variables, ourIf we had to pass two input variables, our
“request” message would need two part“request” message would need two part
elements.elements.
Note the name attributes of messages areNote the name attributes of messages are
important!important!
31. Message Examples for JobMessage Examples for Job
Submission ServiceSubmission Service
<wsdl:message
name="execLocalCommandResponse">
<wsdl:part
name="execLocalCommandReturn"
type="impl:ArrayOf_xsd_string" />
</wsdl:message>
<wsdl:message
name="execLocalCommandRequest">
<wsdl:part name="in0" type="xsd:string" />
</wsdl:message>
32. portTypesportTypes
portTypeportType elements map messages toelements map messages to
operationsoperations..
You can think of portType==class,You can think of portType==class,
operation==class methods.operation==class methods.
Operations can contain input, output,Operations can contain input, output,
and/or fault bindings for messages.and/or fault bindings for messages.
An operation may support of the followingAn operation may support of the following
message styles:message styles:
• One-way: request onlyOne-way: request only
• Two-way: request/responseTwo-way: request/response
• Solicit-response: server “push” and client responseSolicit-response: server “push” and client response
• Notification: one-way server pushNotification: one-way server push
33. portType for JobSubmitportType for JobSubmit
We previously defined the messagesWe previously defined the messages
and types needed. Now we bindand types needed. Now we bind
them into the portType structure.them into the portType structure.
PortType names are importantPortType names are important
• Will be referenced byWill be referenced by bindingbinding element.element.
Note names of previously definedNote names of previously defined
messages are used as references inmessages are used as references in
the operations.the operations.
35. Some Notes on the PortTypeSome Notes on the PortType
DefinitionDefinition
PortTypes refer to messages by namePortTypes refer to messages by name
• The message attribute in <input> andThe message attribute in <input> and
<output> elements of <operation> refer to<output> elements of <operation> refer to
the name attributes of the previously definedthe name attributes of the previously defined
messages.messages.
• The operation and portType names willThe operation and portType names will
similarly be used for reference in forthcomingsimilarly be used for reference in forthcoming
tags.tags.
Also note “parameterOrder” does what youAlso note “parameterOrder” does what you
would expect. For the current example,would expect. For the current example,
there is only one input parameter.there is only one input parameter.
36. PortType BindingsPortType Bindings
portTypes are abstract interfaceportTypes are abstract interface
definitions.definitions.
• Don’t say anything about how to invoke aDon’t say anything about how to invoke a
remote method.remote method.
Remote invocations are defined inRemote invocations are defined in bindingbinding
elements.elements.
Binding elements are really just placeBinding elements are really just place
holders that are extended for specificholders that are extended for specific
protocolsprotocols
• WSDL spec provides SOAP, HTTP GET/POST,WSDL spec provides SOAP, HTTP GET/POST,
and MIME extension schema examples.and MIME extension schema examples.
37. SOAP Bindings for JobSubmitSOAP Bindings for JobSubmit
ServiceService
Note that the binding element contains a mixtureNote that the binding element contains a mixture
of tags from different namespaces (wsdl andof tags from different namespaces (wsdl and
wsdlsoap).wsdlsoap).
WSDL child elements forWSDL child elements for bindingbinding element areelement are
operation, input,operation, input, andand output.output.
WSDLSOAP elements are from a different XMLWSDLSOAP elements are from a different XML
schema (a new one, neither WSDL nor SOAP).schema (a new one, neither WSDL nor SOAP).
• This is how you extend WSDL bindings: define a newThis is how you extend WSDL bindings: define a new
schema that gives mapping instructions from WSDL toschema that gives mapping instructions from WSDL to
the protocol of choice.the protocol of choice.
The binding element name is important, will beThe binding element name is important, will be
used as a reference by the final port binding.used as a reference by the final port binding.
39. A Closer Look at SOAP BindingA Closer Look at SOAP Binding
<wsdlsoap:body<wsdlsoap:body
encodingStyle=encodingStyle=http://schemas.xmlsoap.org/http://schemas.xmlsoap.org/
soap/encoding/soap/encoding/
namespace=namespace=http://.../GCWS/services/Submihttp://.../GCWS/services/Submi
tjobtjob use="use="encodedencoded" />" />
All this really means is “encode the message byAll this really means is “encode the message by
the rules in encodingStyle and put it in the SOAPthe rules in encodingStyle and put it in the SOAP
body.”body.”
The bindings are just instructions that must beThe bindings are just instructions that must be
implemented by the SOAP message generator.implemented by the SOAP message generator.
40. Service and Port DefinitionsService and Port Definitions
So far, we have defined the classSo far, we have defined the class
method interfaces (portTypes) andmethod interfaces (portTypes) and
the rules for binding to a particularthe rules for binding to a particular
protocol.protocol.
PortPort elements define how theelements define how the
bindings (and thus the portTypes)bindings (and thus the portTypes)
are associated with a particularare associated with a particular
server.server.
TheThe serviceservice element collectselement collects ports.ports.
42. ExplanationExplanation
Note the port element’s binding attributeNote the port element’s binding attribute
points to the appropriatepoints to the appropriate bindingbinding elementelement
by name.by name.
The only purpose of the port element is toThe only purpose of the port element is to
point to a service location (a URL). This ispoint to a service location (a URL). This is
done by extension (SOAP in this case.)done by extension (SOAP in this case.)
Ports are child elements of thePorts are child elements of the serviceservice
element. A service can contain one orelement. A service can contain one or
more ports.more ports.
• Note the value of multiple ports: a singleNote the value of multiple ports: a single
portType may correspond to several ports,portType may correspond to several ports,
each with a different protocol binding andeach with a different protocol binding and
service point.service point.
43. WSDL TriviaWSDL Trivia
The schema rules allow all of the elements weThe schema rules allow all of the elements we
have discussed to appear zero or more times.have discussed to appear zero or more times.
A single WSDL file may contain many portTypesA single WSDL file may contain many portTypes
(although this is not usual).(although this is not usual).
• You may want to do this to support multiple interfaceYou may want to do this to support multiple interface
definitions of a service for backward compatibility.definitions of a service for backward compatibility.
Multiple ports may also be used to provideMultiple ports may also be used to provide
different views of a servicedifferent views of a service
• One portType defines the interface.One portType defines the interface.
• Another provides access to metadata about the service.Another provides access to metadata about the service.
• Yet another may define how the service interacts withYet another may define how the service interacts with
other servicesother services via notification/event systemsvia notification/event systems..
44. Simple Object AccessSimple Object Access
ProtocolProtocol
A message format forA message format for
exchanging structured, typedexchanging structured, typed
informationinformation
45. SOAP BasicsSOAP Basics
SOAP is often thought of as a protocol extensionSOAP is often thought of as a protocol extension
for doing RPC over HTTP.for doing RPC over HTTP.
This is not completely accurate: SOAP is an XMLThis is not completely accurate: SOAP is an XML
message format for exchanging structured, typedmessage format for exchanging structured, typed
data.data.
It may be used for RPC in client-serverIt may be used for RPC in client-server
applications but is also suitable for messagingapplications but is also suitable for messaging
systems (like JMS) that follow one-to-many (orsystems (like JMS) that follow one-to-many (or
publish-subscribe) models.publish-subscribe) models.
SOAP is not a transport protocol. You mustSOAP is not a transport protocol. You must
attach your message to a transport mechanismattach your message to a transport mechanism
like HTTP.like HTTP.
46. SOAP StructureSOAP Structure
A SOAP message is contained in anA SOAP message is contained in an
envelop.envelop.
The envelop element in turn containThe envelop element in turn contain
(in order)(in order)
• An optionalAn optional headerheader with one or morewith one or more
child entrieschild entries..
• AA bodybody element that can contain one orelement that can contain one or
more child entries. These child entriesmore child entries. These child entries
may contain arbitrary XML data.may contain arbitrary XML data.
47. SOAP HeadersSOAP Headers
Headers are really just extension pointsHeaders are really just extension points
where you can include elements fromwhere you can include elements from
other namespaces.other namespaces.
• i.e., headers can contain arbitrary XML.i.e., headers can contain arbitrary XML.
Header entries may optionally have aHeader entries may optionally have a
“mustUnderstand” attribute.“mustUnderstand” attribute.
• mustUnderstand=1 means the messagemustUnderstand=1 means the message
recipient must process the header element.recipient must process the header element.
• If mustUnderstand=0 or is missing, the headerIf mustUnderstand=0 or is missing, the header
element is optional.element is optional.
48. SOAP BodySOAP Body
Body entries are really just placeholdersBody entries are really just placeholders
for arbitrary XML from some otherfor arbitrary XML from some other
namespace.namespace.
The body contains the XML message thatThe body contains the XML message that
you are transmitting.you are transmitting.
The message format is not specified byThe message format is not specified by
SOAP.SOAP.
• The <Body></Body> tag pairs are just a wayThe <Body></Body> tag pairs are just a way
to notify the recipient that the actual XMLto notify the recipient that the actual XML
message is contained therein.message is contained therein.
• The recipient decides what to do with theThe recipient decides what to do with the
message.message.
49. Example MessagesExample Messages
Recall the WSDL interface for “SubmitJob”Recall the WSDL interface for “SubmitJob”
• Sends one string commandSends one string command
• Returns array of strings for standard out and error.Returns array of strings for standard out and error.
The envelop is decorated with a few usefulThe envelop is decorated with a few useful
namespacesnamespaces::
• soapenv defines the versionsoapenv defines the version
• xsd is the Schema definition itselfxsd is the Schema definition itself
• xsi defines some useful constants.xsi defines some useful constants.
The body is just an arbitrary XMLThe body is just an arbitrary XML
fragment.fragment.
• Assumes the recipient knows what this means.Assumes the recipient knows what this means.
• Recipient must looks up the ExecLocalCommand operation inRecipient must looks up the ExecLocalCommand operation in
the JobSubmit service and passes it one string argument.the JobSubmit service and passes it one string argument.
• The ns1 namespace tells the recipient the WSDL namespaceThe ns1 namespace tells the recipient the WSDL namespace
that defines the service.that defines the service.
• xsi:type lets the recipient know that the arbitrary XML elementxsi:type lets the recipient know that the arbitrary XML element
in0 is in fact a string, as defined by the XML Schema.in0 is in fact a string, as defined by the XML Schema.
51. Example ResponseExample Response
The structure is the same as the request.The structure is the same as the request.
The interesting thing here is that theThe interesting thing here is that the
request returns a 2-element array of tworequest returns a 2-element array of two
strings.strings.
• Arrays not defined by XML schemaArrays not defined by XML schema
• SOAP encoding does define arrays, so useSOAP encoding does define arrays, so use
xsi:type to point to this definition.xsi:type to point to this definition.
• <item></item> surrounds each array<item></item> surrounds each array
element.element.
Note that arbitrary XML returns canNote that arbitrary XML returns can
likewise be encoded this way.likewise be encoded this way.
• Use xsi:type to point to a schema.Use xsi:type to point to a schema.
54. Web Service DevelopmentWeb Service Development
ToolsTools
Web service toolkits exist for variousWeb service toolkits exist for various
programming languages:programming languages:
• C++,Python, Perl, various MicrosoftC++,Python, Perl, various Microsoft
.NET kits..NET kits.
We’ll concentrate on building JavaWe’ll concentrate on building Java
Web services with Apache Axis.Web services with Apache Axis.
Language and implementationLanguage and implementation
interoperability is addressed throughinteroperability is addressed through
WS-I.WS-I.
• http://www.ws-i.org/http://www.ws-i.org/
55. Apache Axis OverviewApache Axis Overview
Apache Axis is a toolkit for converting JavaApache Axis is a toolkit for converting Java
applications into Web services.applications into Web services.
Axis service deployment tools allow you toAxis service deployment tools allow you to
publish your service in a particularpublish your service in a particular
application server (Tomcat).application server (Tomcat).
Axis client tools allow you to convertAxis client tools allow you to convert
WSDL into client stubs.WSDL into client stubs.
Axis runtime tools accept incoming SOAPAxis runtime tools accept incoming SOAP
requests and redirect them to therequests and redirect them to the
appropriate service.appropriate service.
56. Developing and Deploying aDeveloping and Deploying a
ServiceService
Download and install Tomcat and Axis.Download and install Tomcat and Axis.
Write a Java implementationWrite a Java implementation
• Our SubmitJob is a simple example but services can getOur SubmitJob is a simple example but services can get
quite complicated.quite complicated.
• Compile it into Tomcat’s classpath.Compile it into Tomcat’s classpath.
Write a deployment descriptor (WSDD) for yourWrite a deployment descriptor (WSDD) for your
service.service.
• Will be used by Axis runtime to direct SOAP calls.Will be used by Axis runtime to direct SOAP calls.
Use Axis’s AdminClient tool to install your WSDDUse Axis’s AdminClient tool to install your WSDD
file.file.
• The tells the axis servlet to load your class and directThe tells the axis servlet to load your class and direct
SOAP requests to it.SOAP requests to it.
That’s it.That’s it.
• Axis will automatically generate the WSDL for yourAxis will automatically generate the WSDL for your
service.service.
58. ExplanationExplanation
Use Axis’s command-lineUse Axis’s command-line
AdminClient tool to deploy this to theAdminClient tool to deploy this to the
server.server.
Axis will create a service calledAxis will create a service called
• http://your.server/services/SubmitJobhttp://your.server/services/SubmitJob
WSDL for service is available fromWSDL for service is available from
• http://your.server/services/SubmitJob?http://your.server/services/SubmitJob?
wsdlwsdl
A list of all services is available fromA list of all services is available from
• http://your.server/serviceshttp://your.server/services
60. WSDL generated by
inspecting the Java
implementation. Can be
download from the
server.
(XML was shown in
earlier slides)
61. Building a Client with AxisBuilding a Client with Axis
Obtain the WSDL file.Obtain the WSDL file.
Generate client stubsGenerate client stubs
• Stubs look like local objects but reallyStubs look like local objects but really
convert method invocations into SOAPconvert method invocations into SOAP
calls.calls.
Write a client application with theWrite a client application with the
stubsstubs
• Can be a Java GUI, a JSP page, etc.Can be a Java GUI, a JSP page, etc.
Compile everything and run.Compile everything and run.
62. Sample Java Client CodeSample Java Client Code
/**Create SubmitJob client object and point to the/**Create SubmitJob client object and point to the
service you want to use */service you want to use */
SubmiJob sjws = newSubmiJob sjws = new
SubmitJobServiceLocator().getSubmitjob(newSubmitJobServiceLocator().getSubmitjob(new
URL(http://your.server/services/SubmitJob));URL(http://your.server/services/SubmitJob));
/** Invoke the method as if local. *//** Invoke the method as if local. */
String[] messages =String[] messages =
sjws.execLocalCommand(command);sjws.execLocalCommand(command);
63. Two Notes On Client StubsTwo Notes On Client Stubs
Axis stubs convert method calls intoAxis stubs convert method calls into
SOAP requests but WSDL does notSOAP requests but WSDL does not
require the use of SOAP.require the use of SOAP.
• Web Service Invocation Framework (WSIF)Web Service Invocation Framework (WSIF)
from IBM allows flexibility of protocols. (Alekfrom IBM allows flexibility of protocols. (Alek
Slominski, IU)Slominski, IU)
Client stubs introduce versioningClient stubs introduce versioning
problemsproblems..
• We are developing dynamic (stubless) clientsWe are developing dynamic (stubless) clients
that construct SOAP messages by inspectingthat construct SOAP messages by inspecting
WSDL at runtime.WSDL at runtime.
64. Web Service URLsWeb Service URLs
JavaJava
• http://xml.apache.org/axis/http://xml.apache.org/axis/
XSOAP: C++ and Java toolkits for WSXSOAP: C++ and Java toolkits for WS
• http://www.extreme.indiana.edu/xgws/xsoap/http://www.extreme.indiana.edu/xgws/xsoap/
gSOAP: C++ SOAP toolkitgSOAP: C++ SOAP toolkit
• http://www.cs.fsu.edu/~engelen/soap.htmlhttp://www.cs.fsu.edu/~engelen/soap.html
Python Web Services:Python Web Services:
• http://pywebsvcs.sourceforge.net/http://pywebsvcs.sourceforge.net/
Perl:Perl:
• http://www.soaplite.com/http://www.soaplite.com/