This document provides an overview of Representational State Transfer (REST) architectural style and how to design RESTful web services. It discusses different service styles like RPC, message-oriented and resource-oriented services. It explains REST constraints like client-server, stateless, cache etc. and how REST uses HTTP methods and URIs to manipulate resources. The document also provides examples of Amazon S3 REST API and developing RESTful services using JAX-RS in Java.
This document provides an introduction to Lucene, an open-source information retrieval library. It discusses Lucene's components and architecture, how it models content and performs indexing and searching. It also summarizes how to build search applications using Lucene, including acquiring content, building documents, analyzing text, indexing documents, and querying. Finally, it discusses frameworks that are built on Lucene like Compass and Solr.
This document provides an overview of Lucene scoring and sorting algorithms. It describes how Lucene constructs a Hits object to handle scoring and caching of search results. It explains that Lucene scores documents by calling the getScore() method on a Scorer object, which depends on the type of query. For boolean queries, it typically uses a BooleanScorer2. The scoring process advances through documents matching the query terms. Sorting requires additional memory to cache fields used for sorting.
Tutorial on developing a Solr search component pluginsearchbox-com
In this set of slides we give a step by step tutorial on how to develop a fully functional solr search component plugin. Additionally we provide links to full source code which can be used as a template to rapidly start creating your own search components.
This document provides an overview and introduction to the Solr search platform. It describes how Solr can be used to index and search content, integrate with other systems, and handle common search issues. The presentation also discusses Lucene, the search library that powers Solr, and how content from various sources like databases, files, and rich documents can be indexed.
Elasticsearch is a search engine based on Apache Lucene that provides distributed, full-text search capabilities. It allows users to store and search documents of any structure in near real-time. Documents are organized into indexes, shards, and clusters to provide scalability and fault tolerance. Elasticsearch uses analysis and mapping to index documents for full-text search. Queries can be built using the Elasticsearch DSL for complex searches. While Elasticsearch provides fast search, it has disadvantages for transactional operations or large document churn. Elastic HQ is a web plugin that provides monitoring and management of Elasticsearch clusters through a browser-based interface.
The document discusses Thomas Rabaix's involvement with Symfony including developing plugins, writing a book, and now working for Ekino. It also provides an overview of a talk on Solr including indexing, searching, administration and deployment of Solr. The talk covers what Solr is, indexing documents, filtering queries, and how Solr integrates with Apache projects like Nutch and Tika.
The document provides an overview of how search engines and the Lucene library work. It explains that search engines use web crawlers to index documents, which are then stored and searched. Lucene is an open source library for indexing and searching documents. It works by analyzing documents to extract terms, indexing the terms, and allowing searches to match indexed terms. The document details Lucene's indexing and searching process including analyzing text, creating an inverted index, different query types, and using the Luke tool.
Apache Lucene: Searching the Web and Everything Else (Jazoon07)dnaber
Apache Lucene is a free and open-source search library that provides indexing and searching capabilities. It includes Lucene Java, a core Java library, Solr, a search server with web administration, and Nutch, an open-source web crawler and search engine. Lucene Java provides indexing and searching capabilities, Solr adds web-based administration and HTTP access, and Nutch crawls websites and indexes content.
This document provides an introduction to Lucene, an open-source information retrieval library. It discusses Lucene's components and architecture, how it models content and performs indexing and searching. It also summarizes how to build search applications using Lucene, including acquiring content, building documents, analyzing text, indexing documents, and querying. Finally, it discusses frameworks that are built on Lucene like Compass and Solr.
This document provides an overview of Lucene scoring and sorting algorithms. It describes how Lucene constructs a Hits object to handle scoring and caching of search results. It explains that Lucene scores documents by calling the getScore() method on a Scorer object, which depends on the type of query. For boolean queries, it typically uses a BooleanScorer2. The scoring process advances through documents matching the query terms. Sorting requires additional memory to cache fields used for sorting.
Tutorial on developing a Solr search component pluginsearchbox-com
In this set of slides we give a step by step tutorial on how to develop a fully functional solr search component plugin. Additionally we provide links to full source code which can be used as a template to rapidly start creating your own search components.
This document provides an overview and introduction to the Solr search platform. It describes how Solr can be used to index and search content, integrate with other systems, and handle common search issues. The presentation also discusses Lucene, the search library that powers Solr, and how content from various sources like databases, files, and rich documents can be indexed.
Elasticsearch is a search engine based on Apache Lucene that provides distributed, full-text search capabilities. It allows users to store and search documents of any structure in near real-time. Documents are organized into indexes, shards, and clusters to provide scalability and fault tolerance. Elasticsearch uses analysis and mapping to index documents for full-text search. Queries can be built using the Elasticsearch DSL for complex searches. While Elasticsearch provides fast search, it has disadvantages for transactional operations or large document churn. Elastic HQ is a web plugin that provides monitoring and management of Elasticsearch clusters through a browser-based interface.
The document discusses Thomas Rabaix's involvement with Symfony including developing plugins, writing a book, and now working for Ekino. It also provides an overview of a talk on Solr including indexing, searching, administration and deployment of Solr. The talk covers what Solr is, indexing documents, filtering queries, and how Solr integrates with Apache projects like Nutch and Tika.
The document provides an overview of how search engines and the Lucene library work. It explains that search engines use web crawlers to index documents, which are then stored and searched. Lucene is an open source library for indexing and searching documents. It works by analyzing documents to extract terms, indexing the terms, and allowing searches to match indexed terms. The document details Lucene's indexing and searching process including analyzing text, creating an inverted index, different query types, and using the Luke tool.
Apache Lucene: Searching the Web and Everything Else (Jazoon07)dnaber
Apache Lucene is a free and open-source search library that provides indexing and searching capabilities. It includes Lucene Java, a core Java library, Solr, a search server with web administration, and Nutch, an open-source web crawler and search engine. Lucene Java provides indexing and searching capabilities, Solr adds web-based administration and HTTP access, and Nutch crawls websites and indexes content.
This document provides an overview of using Apache Lucene and Solr for building a search engine. It outlines the basic search engine pipeline of crawling, parsing, indexing, ranking and searching data. It then introduces Lucene as a free and open source indexing and search library, describing its strengths like speed and flexibility. It provides examples of using the Lucene API for indexing, searching and deleting documents. Finally, it describes Apache Solr as a wrapper for Lucene that provides a REST API and administration interface for building search applications.
Multi faceted responsive search, autocomplete, feeds engine & logginglucenerevolution
Presented by Remi Mikalsen, Search Engineer, The Norwegian Centre for ICT in Education
Learn how utdanning.no leverages open source technologies to deliver a blazing fast multi-faceted responsive search experience and a flexible and efficient feeds engine on top of Solr 3.6. Among the key open source projects that will be covered are Solr, Ajax-Solr, SolrPHPClient, Bootstrap, jQuery and Drupal. Notable highlights are ajaxified pivot facets, multiple parents hierarchical facets, ajax autocomplete with edge-n-gram and grouping, integrating our search widgets on any external website, custom Solr logging and using Solr to deliver Atom feeds. utdanning.no is a governmental website that collects, normalizes and publishes study information for related to secondary school and higher education in Norway. With 1.2 million visitors each year and 12.000 indexed documents we focus on precise information and a high degree of usability for students, potential students and counselors.
This document provides an overview of searching and Apache Lucene. It discusses what a search engine is and how it builds an index and answers queries. It then describes Apache Lucene as a high-performance Java-based search engine library. Key features of Lucene like its powerful query syntax, relevance ranking, and flexibility are outlined. Examples of indexing and searching code in Lucene are also provided. The document concludes with a discussion of Lucene's scalability and how it can handle increasing query rates, index sizes, and update rates.
After a thorough overview of the main features and benefits of Apache Solr (an open source search server), the architecture of Solr and strategies to adopt it for your PHP application and data model will be presented. The main lessons learned around dealing with a mix of structured and non-structured content, multilingual aspects, tuning and the various state-of-the-art features of Solr will be shared as well
Got data? Let's make it searchable! This presentation will demonstrate getting documents into Solr quickly, will provide some tips in adjusting Solr's schema to match your needs better, and finally will discuss how to showcase your data in a flexible search user interface. We'll see how to rapidly leverage faceting, highlighting, spell checking, and debugging. Even after all that, there will be enough time left to outline the next steps in developing your search application and taking it to production.
The document discusses Lucene indexing which is used to build search indexes. It describes the key components of a Lucene index including documents, fields, terms, and inverted indexes. It explains the indexing and search algorithms used by Lucene to add and retrieve documents from the index in an efficient manner through the use of techniques like segmenting, merging, skipping, and compression.
The document discusses content extraction with Apache Tika. It introduces Tika and describes how it can be used to extract full text and metadata from various file formats. It also discusses using Tika with Solr and Lucene, including feeding parsed content directly into a Lucene index and using the ExtractingRequestHandler with Solr. Special considerations for large documents and link extraction are also covered.
OData is an open protocol that allows sharing and consuming data across systems and applications. It uses RESTful web APIs and Atom formats to expose entity data. An OData service exposes a data model and supports CRUD operations through URLs. Clients can retrieve, query, create, update and delete data through OData requests and responses are formatted in JSON or Atom. Examples demonstrate retrieving a list of people, an individual person's data, querying with filters, creating a new person, relating resources, and invoking functions.
This document provides an introduction to Apache Lucene and Solr. It begins with an overview of information retrieval and some basic concepts like term frequency-inverse document frequency. It then describes Lucene as a fast, scalable search library and discusses its inverted index and indexing pipeline. Solr is introduced as an enterprise search platform built on Lucene that provides features like faceting, scalability and real-time indexing. The document concludes with examples of how Lucene and Solr are used in applications and websites for search, analytics, auto-suggestion and more.
Applied Semantic Search with Microsoft SQL ServerMark Tabladillo
Text mining is projected to dominate data mining, and the reasons are evident: we have more text available than numeric data. Microsoft introduced a new technology to SQL Server 2012 called Semantic Search. This session's detailed description and demos give you important information for the enterprise implementation of Tag Index and Document Similarity Index. The demos include a web-based Silverlight application, and content documents from Wikipedia. We'll also look at strategy tips for how to best leverage the new semantic technology with existing Microsoft data mining.
Introduction to Lucene & Solr and UsecasesRahul Jain
Rahul Jain gave a presentation on Lucene and Solr. He began with an overview of information retrieval and the inverted index. He then discussed Lucene, describing it as an open source information retrieval library for indexing and searching. He discussed Solr, describing it as an enterprise search platform built on Lucene that provides distributed indexing, replication, and load balancing. He provided examples of how Solr is used for search, analytics, auto-suggest, and more by companies like eBay, Netflix, and Twitter.
Faceted search is a powerful technique to let users easily navigate the search results. It can also be used to develop rich user interfaces, which give an analyst quick insights about the documents space. In this session I will introduce the Facets module, how to use it, under-the-hood details as well as optimizations and best practices. I will also describe advanced faceted search capabilities with Lucene Facets.
- A URL stands for Uniform Resource Locator and provides a unique address for files and documents on the internet, similar to a street address.
- A URL contains the protocol, domain/IP address, pathway, and file. The protocol specifies how to access the resource, the domain/IP points to the destination server, the pathway indicates the location of the resource on that server, and the file is the specific document or resource.
- URLs were created in 1994 to standardize how internet resources are located and addressed globally on the world wide web.
Semantic search in SQL Server 2012 improves search accuracy by understanding search intent and contextual meaning. It is built on full-text search and requires a predefined external database containing language statistics that is attached to the SQL Server instance and configured for semantic search. Semantic search functions return statistically significant phrases, similar documents, and key phrases explaining document similarities.
A presentation from ApacheCon Europe 2015 / Apache Big Data Europe 2015
Apache Tika detects and extracts metadata and text from a huge range of file formats and types. From Search to Big Data, single file to internet scale, if you've got files, Tika can help you get out useful information!
Apache Tika has been around for nearly 10 years now, and in that time, a lot has changed. Not only has the number of formats supported gone up and up, but the ways of using Tika have expanded, and some of the philosophies on the best way to handle things have altered with experience. Tika has gained support for a wide range of programming languages to, and more recently, Big-Data scale support, and ways to automatically compare effects of changes to the library.
Whether you're an old-hand with Tika looking to know what's hot or different, or someone new looking to learn more about the power of Tika, this talk will have something in it for you!
The document describes the PLAZI Markup System, which includes tools for semantically enhancing biodiversity literature. The GoldenGATE Editor allows for interactive markup of documents to extract structured information like treatments, taxon names, and citations. The PLAZI Server stores the marked-up documents and makes extracted information searchable through the PLAZI Search Portal. External data sources help annotate names and citations in the documents. The goal is to facilitate access to biodiversity knowledge in literature.
Berlin Buzzwords 2013 - How does lucene store your data?Adrien Grand
This document summarizes how Lucene stores data in segments. It explains that each segment is a fully functional index that stores metadata, inverted indexes, norms, doc values, stored fields, and term vectors. It describes how these components are stored efficiently using techniques like fixed-length data, variable-length data, string compression, and bit packing. The document also outlines improvements to Lucene's storage since version 4.0, including better compression and no seeking on write. Finally, it provides a benchmark showing storage improvements between Lucene 4.0 and 4.4.
1. The document summarizes new features in Oracle Text 11g and the roadmap for Oracle's search products, including Oracle Text and Secure Enterprise Search.
2. Key new features in Oracle Text 11g include composite domain indexes, automatic language recognition with context-sensitive stemming, and offline index creation. Oracle Text 11.2.0.2 introduces entity extraction, name search, and a result set interface that returns XML results.
3. The roadmap discusses merging Oracle Text and Secure Enterprise Search and bringing additional natural language processing, partitioning, faceted navigation, and performance improvements to Oracle's search products.
Search is everywhere, and therefore so is Apache Lucene. While providing amazing out-of-the-box defaults, there’s enough projects weird enough to require custom search scoring and ranking. In this talk, I’ll walk through how to use Lucene to implement your custom scoring and search ranking. We’ll see how you can achieve both amazing power (and responsibility) over your search results. We’ll see the flexibility of Lucene’s data structures and explore the pros/cons of custom Lucene scoring vs other methods of improving search relevancy.
Building your own search engine with Apache SolrBiogeeks
Grow-your-own search engine
Solr is a search server built on Lucene that provides indexing, relevance ranking, and other search features through REST web services. It allows configuring search through XML without coding and is used by many large companies. Solr can index various data types including documents, databases, and crawled content. Queries are parsed and run against the index to return ranked search results based on factors like term frequency and inverse document frequency. Case studies show how Solr can improve search performance for databases like CATH by indexing its protein structure data.
This document provides an overview of web services and compares SOAP and RESTful web services. It defines web services as application components that provide useful functionality via standard Internet protocols. SOAP is a protocol for sending messages in an XML format, while REST is an architectural style using resources identified by URLs and HTTP methods. The document explains how web services work and key concepts for both SOAP and REST like WSDL, UDDI, requests, and responses.
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 provides an overview of using Apache Lucene and Solr for building a search engine. It outlines the basic search engine pipeline of crawling, parsing, indexing, ranking and searching data. It then introduces Lucene as a free and open source indexing and search library, describing its strengths like speed and flexibility. It provides examples of using the Lucene API for indexing, searching and deleting documents. Finally, it describes Apache Solr as a wrapper for Lucene that provides a REST API and administration interface for building search applications.
Multi faceted responsive search, autocomplete, feeds engine & logginglucenerevolution
Presented by Remi Mikalsen, Search Engineer, The Norwegian Centre for ICT in Education
Learn how utdanning.no leverages open source technologies to deliver a blazing fast multi-faceted responsive search experience and a flexible and efficient feeds engine on top of Solr 3.6. Among the key open source projects that will be covered are Solr, Ajax-Solr, SolrPHPClient, Bootstrap, jQuery and Drupal. Notable highlights are ajaxified pivot facets, multiple parents hierarchical facets, ajax autocomplete with edge-n-gram and grouping, integrating our search widgets on any external website, custom Solr logging and using Solr to deliver Atom feeds. utdanning.no is a governmental website that collects, normalizes and publishes study information for related to secondary school and higher education in Norway. With 1.2 million visitors each year and 12.000 indexed documents we focus on precise information and a high degree of usability for students, potential students and counselors.
This document provides an overview of searching and Apache Lucene. It discusses what a search engine is and how it builds an index and answers queries. It then describes Apache Lucene as a high-performance Java-based search engine library. Key features of Lucene like its powerful query syntax, relevance ranking, and flexibility are outlined. Examples of indexing and searching code in Lucene are also provided. The document concludes with a discussion of Lucene's scalability and how it can handle increasing query rates, index sizes, and update rates.
After a thorough overview of the main features and benefits of Apache Solr (an open source search server), the architecture of Solr and strategies to adopt it for your PHP application and data model will be presented. The main lessons learned around dealing with a mix of structured and non-structured content, multilingual aspects, tuning and the various state-of-the-art features of Solr will be shared as well
Got data? Let's make it searchable! This presentation will demonstrate getting documents into Solr quickly, will provide some tips in adjusting Solr's schema to match your needs better, and finally will discuss how to showcase your data in a flexible search user interface. We'll see how to rapidly leverage faceting, highlighting, spell checking, and debugging. Even after all that, there will be enough time left to outline the next steps in developing your search application and taking it to production.
The document discusses Lucene indexing which is used to build search indexes. It describes the key components of a Lucene index including documents, fields, terms, and inverted indexes. It explains the indexing and search algorithms used by Lucene to add and retrieve documents from the index in an efficient manner through the use of techniques like segmenting, merging, skipping, and compression.
The document discusses content extraction with Apache Tika. It introduces Tika and describes how it can be used to extract full text and metadata from various file formats. It also discusses using Tika with Solr and Lucene, including feeding parsed content directly into a Lucene index and using the ExtractingRequestHandler with Solr. Special considerations for large documents and link extraction are also covered.
OData is an open protocol that allows sharing and consuming data across systems and applications. It uses RESTful web APIs and Atom formats to expose entity data. An OData service exposes a data model and supports CRUD operations through URLs. Clients can retrieve, query, create, update and delete data through OData requests and responses are formatted in JSON or Atom. Examples demonstrate retrieving a list of people, an individual person's data, querying with filters, creating a new person, relating resources, and invoking functions.
This document provides an introduction to Apache Lucene and Solr. It begins with an overview of information retrieval and some basic concepts like term frequency-inverse document frequency. It then describes Lucene as a fast, scalable search library and discusses its inverted index and indexing pipeline. Solr is introduced as an enterprise search platform built on Lucene that provides features like faceting, scalability and real-time indexing. The document concludes with examples of how Lucene and Solr are used in applications and websites for search, analytics, auto-suggestion and more.
Applied Semantic Search with Microsoft SQL ServerMark Tabladillo
Text mining is projected to dominate data mining, and the reasons are evident: we have more text available than numeric data. Microsoft introduced a new technology to SQL Server 2012 called Semantic Search. This session's detailed description and demos give you important information for the enterprise implementation of Tag Index and Document Similarity Index. The demos include a web-based Silverlight application, and content documents from Wikipedia. We'll also look at strategy tips for how to best leverage the new semantic technology with existing Microsoft data mining.
Introduction to Lucene & Solr and UsecasesRahul Jain
Rahul Jain gave a presentation on Lucene and Solr. He began with an overview of information retrieval and the inverted index. He then discussed Lucene, describing it as an open source information retrieval library for indexing and searching. He discussed Solr, describing it as an enterprise search platform built on Lucene that provides distributed indexing, replication, and load balancing. He provided examples of how Solr is used for search, analytics, auto-suggest, and more by companies like eBay, Netflix, and Twitter.
Faceted search is a powerful technique to let users easily navigate the search results. It can also be used to develop rich user interfaces, which give an analyst quick insights about the documents space. In this session I will introduce the Facets module, how to use it, under-the-hood details as well as optimizations and best practices. I will also describe advanced faceted search capabilities with Lucene Facets.
- A URL stands for Uniform Resource Locator and provides a unique address for files and documents on the internet, similar to a street address.
- A URL contains the protocol, domain/IP address, pathway, and file. The protocol specifies how to access the resource, the domain/IP points to the destination server, the pathway indicates the location of the resource on that server, and the file is the specific document or resource.
- URLs were created in 1994 to standardize how internet resources are located and addressed globally on the world wide web.
Semantic search in SQL Server 2012 improves search accuracy by understanding search intent and contextual meaning. It is built on full-text search and requires a predefined external database containing language statistics that is attached to the SQL Server instance and configured for semantic search. Semantic search functions return statistically significant phrases, similar documents, and key phrases explaining document similarities.
A presentation from ApacheCon Europe 2015 / Apache Big Data Europe 2015
Apache Tika detects and extracts metadata and text from a huge range of file formats and types. From Search to Big Data, single file to internet scale, if you've got files, Tika can help you get out useful information!
Apache Tika has been around for nearly 10 years now, and in that time, a lot has changed. Not only has the number of formats supported gone up and up, but the ways of using Tika have expanded, and some of the philosophies on the best way to handle things have altered with experience. Tika has gained support for a wide range of programming languages to, and more recently, Big-Data scale support, and ways to automatically compare effects of changes to the library.
Whether you're an old-hand with Tika looking to know what's hot or different, or someone new looking to learn more about the power of Tika, this talk will have something in it for you!
The document describes the PLAZI Markup System, which includes tools for semantically enhancing biodiversity literature. The GoldenGATE Editor allows for interactive markup of documents to extract structured information like treatments, taxon names, and citations. The PLAZI Server stores the marked-up documents and makes extracted information searchable through the PLAZI Search Portal. External data sources help annotate names and citations in the documents. The goal is to facilitate access to biodiversity knowledge in literature.
Berlin Buzzwords 2013 - How does lucene store your data?Adrien Grand
This document summarizes how Lucene stores data in segments. It explains that each segment is a fully functional index that stores metadata, inverted indexes, norms, doc values, stored fields, and term vectors. It describes how these components are stored efficiently using techniques like fixed-length data, variable-length data, string compression, and bit packing. The document also outlines improvements to Lucene's storage since version 4.0, including better compression and no seeking on write. Finally, it provides a benchmark showing storage improvements between Lucene 4.0 and 4.4.
1. The document summarizes new features in Oracle Text 11g and the roadmap for Oracle's search products, including Oracle Text and Secure Enterprise Search.
2. Key new features in Oracle Text 11g include composite domain indexes, automatic language recognition with context-sensitive stemming, and offline index creation. Oracle Text 11.2.0.2 introduces entity extraction, name search, and a result set interface that returns XML results.
3. The roadmap discusses merging Oracle Text and Secure Enterprise Search and bringing additional natural language processing, partitioning, faceted navigation, and performance improvements to Oracle's search products.
Search is everywhere, and therefore so is Apache Lucene. While providing amazing out-of-the-box defaults, there’s enough projects weird enough to require custom search scoring and ranking. In this talk, I’ll walk through how to use Lucene to implement your custom scoring and search ranking. We’ll see how you can achieve both amazing power (and responsibility) over your search results. We’ll see the flexibility of Lucene’s data structures and explore the pros/cons of custom Lucene scoring vs other methods of improving search relevancy.
Building your own search engine with Apache SolrBiogeeks
Grow-your-own search engine
Solr is a search server built on Lucene that provides indexing, relevance ranking, and other search features through REST web services. It allows configuring search through XML without coding and is used by many large companies. Solr can index various data types including documents, databases, and crawled content. Queries are parsed and run against the index to return ranked search results based on factors like term frequency and inverse document frequency. Case studies show how Solr can improve search performance for databases like CATH by indexing its protein structure data.
This document provides an overview of web services and compares SOAP and RESTful web services. It defines web services as application components that provide useful functionality via standard Internet protocols. SOAP is a protocol for sending messages in an XML format, while REST is an architectural style using resources identified by URLs and HTTP methods. The document explains how web services work and key concepts for both SOAP and REST like WSDL, UDDI, requests, and responses.
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.
The document discusses REST with JAX-RS and security in Java EE 6, including an overview of REST principles, building a RESTful web service with JAX-RS, and securing the service through authentication, authorization, and encryption. It provides examples of configuring security in the web.xml file to require authentication for certain resources and roles, and to encrypt communications through SSL.
(ATS6-PLAT02) Accelrys Catalog and Protocol ValidationBIOVIA
Accelrys Catalog is a powerful new technology for creating an index of the protocols and components within your organization. You will learn about strategies for indexing and how search capabilities can be deployed to professional client and Web Port end users. You will also learn how to use this technology to find out about system usage to aid with system upgrades, server consolidations, and general system maintenance. The protocol validation capability in the admin portal allows administrators to created standard reports on server usage characteristics. You will learn how to report on violations of IT policies (e.g. around security), bad protocol authoring practices, or missing or incomplete protocol documentation. Developers will also learn how to extend and customize the rules used to create these reports.
The document provides an overview of REST methodologies and the Richardson Maturity Model. It discusses the four levels of the Richardson Maturity Model - from level 0 where only one entry point and method are used, to level 3 where hypermedia controls and content negotiation are implemented. The bulk of the document focuses on best practices for designing RESTful APIs, including URI design, HTTP verbs, status codes, conditional requests, caching, security, and versioning. It concludes with references for further reading.
This document provides an overview of RESTful web services using Java. It defines REST as a design pattern for developing web services using existing standards like HTTP and URL. Key aspects of REST include being resource-based, stateless, and using a uniform interface. The document describes the client-server request-response model and standard HTTP methods. It provides examples of REST URIs and discusses Java standards like JAX-RS for building RESTful services. The document also compares REST to SOAP and covers Spring MVC support for building RESTful APIs.
The document discusses APIs and provides examples of RESTful APIs. It describes how RESTful APIs are built upon a domain model to provide resources that can be navigated through requests. This allows clients to construct custom requests to get precisely the data needed, rather than requiring multiple calls or getting excess data. The domain model also provides a unified framework for request and response semantics.
This document provides an introduction to dynamic web content and web application technologies. It discusses how web servers, browsers, HTML, CSS, JavaScript, and other technologies work together to deliver dynamic web pages and applications to users. Key points covered include how browsers make HTTP requests to servers, how servers respond with HTML documents, and how languages like JavaScript can be used to add interactivity to web pages. Network concepts like TCP connections, ports, and IP addresses are also briefly summarized.
This document provides an introduction and overview of web services and RESTful APIs. It discusses the benefits of separating an application into logical layers and exposing business logic through services. It defines web services, microservices, and REST principles. It explains how RESTful resources are addressed with URIs and represented with formats like JSON. It outlines the HTTP methods GET, POST, PUT, PATCH, and DELETE and how they map to create, retrieve, update, and delete operations. It also covers SOAP and challenges it addresses compared to REST. Finally, it discusses HTTP status codes for indicating success and error responses.
This document discusses the evolution of APIs from REST to GraphQL. It begins by describing RESTful microservices and their limitations in needing multiple requests to retrieve related data. Next, it introduces GraphQL as providing a better solution through allowing clients to request specific data in a single query using a defined schema. The document provides an example GraphQL query and describes how Apollo GraphQL can be used to create a GraphQL server and support federated data. It concludes by noting GraphQL addresses issues with REST by being faster, requiring less data transfer and hosting costs, and through integrated development tools.
The Java EE platform is a complete platform for developing multi-tier distributed applications. It consists of the Java Virtual Machine, Java SE APIs, a Java EE application server, and Java EE APIs. Java EE specifications are defined by the Java Community Process and implemented through Java Specification Requests. Different implementations can exist for the same API. Java EE provides features like persistence, transaction processing, security, and deployment of software components to a server.
Abstract:
Jini has served Orbitz well, but at the cost of tight coupling due in part to shared code and Java™ platform serialization rules. To improve agility, Orbitz is migrating to a RESTful Web services architecture using protocol buffers to define message formats. The result is loosely coupled services with autonomous lifecycles supporting evolvability and innovative mashup-style development.
This session is intended for experienced architects and tech leads who are familiar with distributed systems and data encoding methods.
It covers
• Using document schemas to constitute language-neutral contracts
• Using standard HTTP plumbing and intermediaries
• Implementing a reverse proxy for request routing based on RESTful URLs
• Applying OLAs for governance and service isolation
• Writing automated service layer tests to ensure backward compatibility
Boost Your Environment With XMLDB - UKOUG 2008 - Marco GralikeMarco Gralike
This document summarizes key concepts and capabilities of Oracle XML DB including:
1. The Protocol Server which handles XML storage and access via HTTP, FTP, and WebDAV. Its configuration involves files like listener.ora and xdbconfig.xml.
2. Various HTTP APIs for XML DB access like PL/SQL gateways, native database web services (NDWS), and the DBUri servlet for browsing database data.
3. URITypes for representing URIs that target database data (DBUriType), URLs outside the database (HTTPUriType), and resources in the XML DB repository (XDBUriType).
4. Combining XML DB with capabilities like BFILE to select and
The document provides guidelines and best practices for designing RESTful APIs, including:
- Using JSON over XML and making the API stateless and secure.
- Following conventions for HTTP verbs and status codes.
- Keeping data structures consistent and handling data with modern frameworks.
- Providing comprehensive documentation for data types, methods, and samples.
The document provides an introduction to web spider web weaving and discusses key concepts related to HTTP requests and responses between clients and servers. It explains common web technologies like web servers, browsers, spiders, and scripting languages. It also discusses database servers, web models like LAMP and WAMP, HTTP sessions, and introducing a uniform server.
Data interchange integration, HTML XML Biological XML DTDAnushaMahmood
Data interchange integration. Data interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML
This document summarizes a Solr Recipes Workshop presented by Erik Hatcher of Lucid Imagination. It introduces Lucene and Solr, describes how to index different content sources into Solr including CSV, XML, rich documents, and databases, and provides an overview of using the DataImportHandler to index from a relational database.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on automated letter generation for Bonterra Impact Management using Google Workspace or Microsoft 365.
Interested in deploying letter generation automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Tatiana Kojar
Skybuffer AI, built on the robust SAP Business Technology Platform (SAP BTP), is the latest and most advanced version of our AI development, reaffirming our commitment to delivering top-tier AI solutions. Skybuffer AI harnesses all the innovative capabilities of the SAP BTP in the AI domain, from Conversational AI to cutting-edge Generative AI and Retrieval-Augmented Generation (RAG). It also helps SAP customers safeguard their investments into SAP Conversational AI and ensure a seamless, one-click transition to SAP Business AI.
With Skybuffer AI, various AI models can be integrated into a single communication channel such as Microsoft Teams. This integration empowers business users with insights drawn from SAP backend systems, enterprise documents, and the expansive knowledge of Generative AI. And the best part of it is that it is all managed through our intuitive no-code Action Server interface, requiring no extensive coding knowledge and making the advanced AI accessible to more users.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
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.
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.
This presentation provides valuable insights into effective cost-saving techniques on AWS. Learn how to optimize your AWS resources by rightsizing, increasing elasticity, picking the right storage class, and choosing the best pricing model. Additionally, discover essential governance mechanisms to ensure continuous cost efficiency. Whether you are new to AWS or an experienced user, this presentation provides clear and practical tips to help you reduce your cloud costs and get the most out of your budget.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
2. Contents
1. Types of services
2. What is REST?
3. Web services and the REST way
4. Example: S3
5. Security
6. Jersey/JAX-RS
7. CTR
JHUG 17 Dec 2011
3. Distributed services
• The everlasting need to (re-)use logic as black box
• Even across different machines and platforms
• Gave birth to distributed objects and several protocols for
remoting (e.g. CORBA, DCOM, RMI)
• Web services prevailed because the web is ubiquitous and
scalable
• Web services provide the means to integrate disparate systems
and expose reusable business functions over HTTP
• Mostly SOAP services up to now in RPC style
• Some serve HTML, JSON, plain text, or binary documents, but most
use XML
• WSDL and the WS-* specs
• HTTP is used as the transport service not the application protocol
JHUG 17 Dec 2011
4. Service styles
• RPC services
• Message oriented services
• Resource oriented services
JHUG 17 Dec 2011
5. RPC style
• The request message identifies the procedure to be
executed, and the fixed set of parameters that map
directly to the parameters of the remote procedure
• XML-RPC and later the WS-* stack
• Procedure arguments are tightly coupled messages
• Usually flat APIs
• Communication through proxies that have to be
regenerated in case of change
• e.g. JAX-WS
JHUG 17 Dec 2011
6. Message oriented
• Services that have Message APIs (a.k.a. Document APIs)
receive one or more self-descriptive message types at a
given URI
• They are not coupled to procedure names hence they can
easier change
• They can constitute commands, events or just documents
• They contain values that identify their type and/or
handling
JHUG 17 Dec 2011
7. making a Google search the SOAP way
POST search/beta2
HTTP/1.1 Host: api.google.com
Content-Type: application/soap+xml
SOAPAction: urn:GoogleSearchAction
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<gs:doGoogleSearch xmlns:gs="urn:GoogleSearch">
<key>00000000000000000000000000000000</key>
<q>jhug user group</q>
<start>0</start>
<maxResults>10</maxResults>
<filter>true</filter>
<restrict />
<safeSearch>false</safeSearch>
<lr />
<ie>latin1</ie>
<oe>latin1</oe>
</gs:doGoogleSearch>
</soap:Body>
</soap:Envelope>
JHUG 17 Dec 2011
8. Resource oriented
• It’s like object oriented – Resources are objects
• Resource is the design of data; what we perceive data to
be; it is what we think others might find interesting about
our data
• Everything can be a resource
• Resources are accessed through a Uniform Interface
• Resources are interconnected
• Resources have multiple representations
• Communication is stateless
JHUG 17 Dec 2011
9. Resources
• Everything can be a resource (like everything can be an object)
• A procedure, instances of domain data, files
• Examples:
• A list of search results about ‘Mullus barbatus’
• An article
• The jhug meeting on Dec 17
• The latest jhug meeting
• The software version release 1.1.2.3
• The latest release
• The list of unresolved issues of type ‘bug’ and component ‘Launcher’
• Every resource should have a unique identifier, a URI
• http://www.jhug.gr/meetings/meet-up/17-dec-2011
JHUG 17 Dec 2011
10. What is REST?
• Architectural style
• Architectural constraints
• A way to evaluate architectures
• Design principles
• Key properties of a simple (not simplistic) application
• The null style: Start with system needs as a whole,
without constraints, and then incrementally identifies and
applies constraints to elements of the system in order to
differentiate the design space
• Representational State Transfer
• You request a resource and a representation of its state is
returned
JHUG 17 Dec 2011
11. HTTP Example
Request
GET /meetups/latest HTTP/1.1
Host: www.jhug.gr
Accept: application/xml
Response
HTTP/1.1. 200 OK
Date: Sat, 17 Dec 2011 13:45:34 GMT
Server: Apache/1.3.6
Content-Type: application/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<meetup xmlns="...">
<occurred date=".."/>
<presentations>
...
</presentations>
<next uri=".."/>
</meetup>
JHUG 17 Dec 2011
12. HTTP, URIs & XML define the web
• Operations: GET, PUT, DELETE, POST
• And the less known HEAD, OPTIONS
• Headers
• content-type
• Accept-Language
• Media types
• text/plain
• text/xml
• application/atom+xml
• Response codes
• 2xx Success
• 3xx Redirect
• 4xx Client Error
• 5xx Server Error
• URIs and URLs define the web
• XML: content attributes and structure
An Application protocol for service logic
JHUG 17 Dec 2011
13. REST constraints (Fielding dissertation)
• Client/server
• Uniform Interface
• Layered System
• Stateless
• Cache
• Code on Demand
JHUG 17 Dec 2011
14. Resources and the uniform interface
• HTTP standard methods: GET, PUT, POST, DELETE
• HEAD and GET should not modify anything
• Idempotent: PUT DELETE GET HEAD
• HTTP is the application protocol defining service
behaviors
• GET /meetups/latest instead of getLatestMeetup()
• RPC verbs become REST nouns
• GET the more recent state of the resource
• PUT/POST a representation that alters the state of the
resource
JHUG 17 Dec 2011
15. Representations
• Representations have media types
• Multiple formats for different needs
• Content negotiation
• Accept: application/json (request)
• Content-Type: application/json (response)
• URI
• /meetups/latest.json
JHUG 17 Dec 2011
16. Addressability
• Representations should be addressable
• Increase the surface of the service
• Client can enter the application where convenient
• A URI can never point to more than one resource
JHUG 17 Dec 2011
17. Interconnected Resources
•
•
•
•
•
•
Resources are not just data but hypermedia
Hypermedia as the engine of state
Representations contain links to other resources
A representation may contain links ot other states of the resource
Paths a client can follow
Makes clients more resilient to changes
<?xml version="1.0" encoding="UTF-8"?>
<meetup xmlns="...">
<occurred date="17-12-2011"/>
<presentations>
<presentation ref="/presentations/title/disruptor"/>
<presentation ref="/presentations/title/rest"/>
<presentation ref="/presentations/title/sw-dev-practices"/>
</presentations>
<next ref="/meetings/date/17-01-2011"/>
</meetup>
JHUG 17 Dec 2011
18. Stateless
• HTTP is stateless
• All information needed for processing part of the request
• No session on the server
• No session ids exchanged (jsessionId, phpSessionId, etc. )
• Application state belongs to the client
• Resource state alone belongs to the server
• Simplifies server and client logic, allows scalability
e.g. http://www.google.gr/search?q=jhug&start=20
JHUG 17 Dec 2011
19. Cacheability
• Conditional queries
• Cacheable when last-modified and etag are used (response
headers)
• If- Modified-Since and If-None-Match (request headers)
• 304 Response Code when not modified with no entity body
• Cache proxies and other commodity caching technologies
JHUG 17 Dec 2011
20. REST Patterns
• Paths for hierarchy
• jhug/discussions/april
• Post for not owned URIs
• Container items
• Jhug/discussions/1342
• PUT for URIs defined by the client
• Jhug/presentations/rest
• Semicolon (;) or comma (,) for name/value or matrix
values
• jhug/presentations/author,gkorilas/rest
• Query string for algorithmic resources
• Jhug/search?q=“rest”
JHUG 17 Dec 2011
21. Think Resource Oriented
• Define the data set
• Expose data as resources
• Assign URIs to resources
• Decide the UI commands accepted
• Decide the representations accepted
• Decide the representations served
• Add hypermedia links between them
JHUG 17 Dec 2011
22. REST +
• Serve representations suitable for many clients
• The uniform interface allows all http clients to easily consume a
suitable representation
• Content negotiation can allow a single URL to serve content to a
browser, a JS client that is interested in JSON or a mobile phone client
interested in an XML representation
• Cacheable by commodity technologies
• Scalable
• Fail over
• Clients:
• Browser friendly
• Easy support by many languages
• Bookmarkable
• Data formats
• It is the natural way of the web!
JHUG 17 Dec 2011
24. The Amazon S3 Service
• S3 “buckets” and S3 “objects”
• Bucket can only contain objects
• Bucket names are unique in S3
• Object has a name (key) and content (value)
• Object has a reference to the parent bucket
• Object has metadata key-value pairs; can also be http headers like
content-type or content-disposition
• Three types of resources
• List of your buckets (https://s3.amazonaws.com/)
• A particular bucket (https://s3.amazonaws.com/{name-of-bucket}/). There
can be up to 100 resources of this type.
• A particular S3 object inside a bucket (https://s3.amazonaws.com/
{name-of- bucket}/{name-of-object}
JHUG 17 Dec 2011
25. S3 resources and methods
GET
HEAD
PUT
DELETE
(/)
List your
buckets
-
-
-
/{bucket}
List objects of
bucket
-
Create the
bucket
Delete the
bucket
/{bucket}/
{object}
Object’s value Object’s
and metadata metadata
Set the
object’s value
and metadata
Delete the
object
JHUG 17 Dec 2011
26. S3 Security
• Message digest of the canonical string of the request with a
secret key (amazon knows it too)
• {http method}{content-type}{date}{amazon headers}{path}
• Add it to http Authorization: header
• Add it to query string together with expires date to make
bookmarkable (https://s3.amazonaws.com/stelinio/rest.pdf# ?
Signature=J%2Qu6krT3j0zaaFXjsLbowdfzExQ%3D #
&Expires=1162156788&AWSAccessKeyId=0F9RBCLB5274NK
TJ4DA3")
• Access policies
• Private, public-read, public-write, authenticated read
JHUG 17 Dec 2011
27. HTTP security, OAuth
• http basic
• http digest
• http client certificate
• OAuth
• Delegated user authentication solution - Valet key principle
• Client, server, resource owner (OAuth love triangle)
• client credentials, temporary credentials, and token credentials
JHUG 17 Dec 2011
28. Java REST Services
• Java EE 6 specification: JAX-RS
• Jersey: Reference implementation of JSR 311
• Available as standalone and enterprise
JHUG 17 Dec 2011
30. JAX-RS Resources
Annotate POJOs
@Path("/meetups")
@Singleton()
public class MeetUpsResource {
@GET()
@Path("/latest")
@Produces("text/plain")
public String getLatestMeetUp() {
return getDataService().getLatestMeetUp().toString();
}
@GET()
@Path("/next")
@Produces("text/plain")
public String getNextMeetUp() {
return getDataService().getNextMeetUp().toString();
}
@GET()
@Produces(MediaType.APPLICATION_JSON)
public MeetUps getAllMeetUps() {
return getDataService().getAllMeetUps();
}
}
JHUG 17 Dec 2011
31. Methods & Paths
• @javax.ws.rs.GET
• @javax.ws.rs.PUT
• @javax.ws.rs.POST
• @javax.ws.rs.DELETE
• @javax.ws.rs.HEAD
• Paths: Most specific match wins
JHUG 17 Dec 2011
32. JAX-RS Injection
• @javax.ws.rs.PathParam
• values from URI template parameters
• @javax.ws.rs.MatrixParam
• URI’s matrix parameters.
• @javax.ws.rs.QueryParam
• Query String parameters
• @javax.ws.rs.FormParam
• form-encoded key-value pairs
• @javax.ws.rs.HeaderParam
• HTTP request headers
• @javax.ws.rs.CookieParam
• HTTP cookies set by the client
• @javax.ws.rs.core.Context
• All-purpose injection annotation. It allows you to inject various helper and
informational objects that are provided by the JAX-RS API e.g.
• @Context final HttpServletRequest request
• @Context final SecurityContext secCtx
JHUG 17 Dec 2011
34. JAX-RS Error Handling
• HTTP Error Codes
• WebApplicationException
• ExceptionMapper
throw new WebApplicationException(new RuntimeException (“Timeframe
not an Integer"),
Response.Status.NOT_ACCEPTABLE);
@Provider
public class EntityNotFoundMapper implements
ExceptionMapper<EntityNotFoundException>
{
public Response toResponse(EntityNotFoundException e){
return Response.status(Response.Status.NOT_FOUND).build();
}
}
JHUG 17 Dec 2011
35. Enforcing security
• @RolesAllowed({“admin”,”client-admin”})
• @PermitAll
• Any authenticated user
• @SecurityContext
public interface SecurityContext
{
public static final String BASIC_AUTH = "BASIC";
public static final String CLIENT_CERT_AUTH = "CLIENT_CERT";
public static final String DIGEST_AUTH = "DIGEST";
public static final String FORM_AUTH = "FORM";
public Principal getUserPrincipal();
public boolean isUserInRole(String role);
public boolean isSecure();
public String getAuthenticationScheme();
}
JHUG 17 Dec 2011
36. Example
@Path(”/presentations")
@Singleton()
public class PresentationsResource {
@PUT()
@Path(”/presentation/{name}”)
@RolesAllowed(”admin”)
public void addPresentation(@PathParam name, InputStream is){
return getDataService().addPresentation(is);
}
@GET()
@Path(”/presentation/{name}")
public StreamingOutput getPresentation(@PathParam name) {
return new StreamingOutput() {
@Override
public void write(OutputStream output) throws
IOException {
stream(
getDataService().getPresentation(name)
, output
);
}
}
}
}
JHUG 17 Dec 2011
37. CTR
• Clinical Trials Register
• (https://www.clinicaltrialsregister.eu/)
• Rest services
• Data to other agency html pages
• Content to the World Health Organization
• Data to the web application users
• Rest clients
• JS code as the client
• Controller servlet
• JSP <c:import url=“/trial/2010-022009-16/GB”/>
• A guy at World Health Organization every Tuesday at 19:00
JHUG 17 Dec 2011
38. Data consumed by html pages (1/3)
@Path("/trials")
@Singleton()
public class TrialsMetaDataResource {
@GET()
@Path("/count/public")
@Produces("text/plain")
public String countPublicTrials() {
return getDataService().countPublicClinicalTrials().toString();
}
@GET()
@Path("/count/public/under18")
@Produces("text/plain")
public String countUnder18PublicTrials() {
return getDataService().countPublicClinicalTrialsWithSubjectsUnder18().toString();
}
@GET()
@Path("/landing")
@Produces(MediaType.APPLICATION_JSON)
public LandingPageMetadata landingPageMetadata() {
Integer total = getDataService().countPublicClinicalTrials();
Integer under18 = getDataService().countPublicClinicalTrialsWithSubjectsUnder18();
}
…
}
LandingPageMetadata metadata = new LandingPageMetadata(total, under18);
return metadata;
JHUG 17 Dec 2011
39. Data consumed by html pages (2/3)
@XmlRootElement()
@XmlAccessorType(value = XmlAccessType.PROPERTY)
public class LandingPageMetadata implements Serializable {
private static final long serialVersionUID = -8784258618018188874L;
private Integer numberOfPublicClinicalTrials;
private Integer numberOfPublicClinicalTrialsWithSubjectsUnder18;
public LandingPageMetadata() {…}
public LandingPageMetadata(Integer numberOfPublicClinicalTrials,
Integer numberOfPublicClinicalTrialsWithSubjectsUnder18) {…}
@XmlElement(name="total")
public Integer getNumberOfPublicClinicalTrials() {…}
public void setNumberOfPublicClinicalTrials(Integer numberOfPublicClinicalTrials) {…}
@XmlElement(name="under18")
public Integer getNumberOfPublicClinicalTrialsWithSubjectsUnder18() {…}
public void setNumberOfPublicClinicalTrialsWithSubjectsUnder18(Integer
numberOfPublicClinicalTrialsWithSubjectsUnder18) {…}
@Override
public String toString() {…}
}
JHUG 17 Dec 2011
40. Data consumed by html pages (3/3)
function showNumbers() {
$.getJSON('api/trials/landing', function(data) {
var total = data['total'];
var under18 = data['under18'];
$("#total").text(total);
$("#under18").text(under18);
});
}
JHUG 17 Dec 2011
41. Streaming Content (1/2)
@Path("/download")
public class DownloadResource {
@GET
@Path("/summary")
public Response downloadSummaryTrials(@Context final HttpServletRequest request, @QueryParam
("mode") final String mode) {
return Response.ok(new SummaryStreamingOutput(request, mode),MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition","attachment; filename = trials-summary.txt").build();
}
@GET
@Path("/full")
public Response downloadFullTrials(@Context final HttpServletRequest request, @QueryParam
("mode") final String mode) {
return Response.ok(new FullStreamingOutput(request, mode),MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition","attachment; filename = trials-full.txt").build();
}
@GET
@Path("/trial/{eudractnumber}/{nca}")
public Response downloadFullCta(@Context final HttpServletRequest req, @PathParam
("eudractnumber") String eudractnumber, @PathParam("nca") String nca) {
return Response.ok(new CtaStreamingOutput(req, eudractnumber, nca),MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition","attachment; filename = trial.txt").build();
}
}
JHUG 17 Dec 2011
42. Streaming Content (2/2)
public class CtaStreamingOutput implements StreamingOutput
{
public CtaStreamingOutput(HttpServletRequest
request, String euNumber, String nca) {…}
}
public void write(OutputStream output) throws
IOException {
TextSerializer ser = new TextSerializer();
ser.setOutputStream(output);
CtaIdentification pubCta = mapper.map
(eudractNumber, nca);
ser.serializeCtaFull(pubCta);
}
JHUG 17 Dec 2011
43. RSS 2.0 instead of built in Atom (1/2)
@GET
@Path("/bydates”)
@Produces("application/rss+xml")
public SyndFeed getFeed(@Context final HttpServletRequest request) {
String feedType = "rss_2.0”;
SyndFeed feed = new SyndFeedImpl();
feed.setFeedType(feedType);
String url = request.getRequestURL().toString().replaceFirst("/rest/
feed/bydates", ”/search") + "?" + request.getQueryString();
feed.setLink(url);
feed.setTitle("EU Clinical Trials Register RSS Feed");
feed.setDescription("This provides a regular feed of new or updated
clinical trial information published on the EU
Clinical Trial Register and matching the search
subscribed to.");
List<CtrDocument> docs = search(request);
for(CtrDocument doc: docs){
SyndEntry entry = buildEntry(doc, entryBasicUrl, countryUrl);
feed.getEntries().add(entry);
}
LOG.info("Generated RSS feed {}", feed.getLink());
return feed;
}
JHUG 17 Dec 2011
44. RSS 2.0 instead of built in Atom (2/2)
@Provider
@Produces("application/rss+xml")
@Consumes("application/rss+xml")
public class RomeRssSupport implements MessageBodyWriter<Object>{
public boolean isWriteable(Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
return (SyndFeed.class.isAssignableFrom(type));
}
public long getSize(Object t, Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
return -1;
}
}
public void writeTo(Object feedOrEntry, Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders, OutputStream outputStream)
throws IOException {
if (feedOrEntry instanceof SyndFeed) {
SyndFeed feed = (SyndFeed)feedOrEntry;
SyndFeedOutput output = new SyndFeedOutput();
doc = output.outputW3CDom(feed);
Source source = new DOMSource(doc);
Result result = new StreamResult(outputStream);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.transform(source, result);
}
}
JHUG 17 Dec 2011
45. Resources
• Restful Web Services - Leonard Richardson and Sam
Ruby
• Service Design Patterns - Robert Daigneau
• Restful Java - Bill Burke
• www.amazon.com
• http://icondrawer.com
• http://www.iconeden.com
• http://www.iconshock.com
JHUG 17 Dec 2011