This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener). # HTTP URLs that Could Not Be Fixed These URLs were unable to be fixed. Please review them to see if they can be manually resolved. * [ ] http://blueprintcss.org (200) with 3 occurrences could not be migrated: ([https](https://blueprintcss.org) result AnnotatedConnectException). * [ ] http://jmesnil.net/ (200) with 1 occurrences could not be migrated: ([https](https://jmesnil.net/) result ConnectTimeoutException). * [ ] http://jtds.sourceforge.net (200) with 1 occurrences could not be migrated: ([https](https://jtds.sourceforge.net) result AnnotatedConnectException). * [ ] http://www.jmesnil.net/stomp-websocket/doc/ (301) with 1 occurrences could not be migrated: ([https](https://www.jmesnil.net/stomp-websocket/doc/) result ConnectTimeoutException). * [ ] http://enfranchisedmind.com/blog/posts/jquery-periodicalupdater-ajax-polling/ (404) with 1 occurrences could not be migrated: ([https](https://enfranchisedmind.com/blog/posts/jquery-periodicalupdater-ajax-polling/) result SSLHandshakeException). # Fixed URLs ## Fixed But Review Recommended These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended. * [ ] http://smokejumperit.com (301) with 1 occurrences migrated to: https://blog.enfranchisedmind.com/posts/author/candide/?coming_from=smokejumperit.com ([https](https://smokejumperit.com) result UnknownHostException). * [ ] http://sockjs.org (303) with 2 occurrences migrated to: https://github.com/sockjs/sockjs-client ([https](https://sockjs.org) result AnnotatedConnectException). * [ ] http://platform.beta.mapquest.com/traffic/ (UnknownHostException) with 1 occurrences migrated to: https://platform.beta.mapquest.com/traffic/ ([https](https://platform.beta.mapquest.com/traffic/) result UnknownHostException). * [ ] http://en.wikipedia.org/wiki/Caf%C3%A9 (301) with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Caf%25C3%25A9 ([https](https://en.wikipedia.org/wiki/Caf%C3%A9) result 400). * [ ] http://ws.cdyne.com/WeatherWS/ (403) with 3 occurrences migrated to: https://ws.cdyne.com/WeatherWS/ ([https](https://ws.cdyne.com/WeatherWS/) result 403). * [ ] http://blogs.oracle.com/swinger/entry/collections_trick_i_lru_cache (404) with 1 occurrences migrated to: https://blogs.oracle.com/swinger/entry/collections_trick_i_lru_cache ([https](https://blogs.oracle.com/swinger/entry/collections_trick_i_lru_cache) result 404). * [ ] http://static.springsource.org/spring-integration/docs/latest-ga/reference/html/samples.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring-integration/docs/latest-ga/reference/html/samples.html ([https](https://static.springsource.org/spring-integration/docs/latest-ga/reference/html/samples.html) result 404). * [ ] http://static.springsource.org/spring-integration/reference/html/messaging-routing-chapter.html (301) with 3 occurrences migrated to: https://docs.spring.io/spring-integration/reference/html/messaging-routing-chapter.html ([https](https://static.springsource.org/spring-integration/reference/html/messaging-routing-chapter.html) result 404). * [ ] http://docs.spring.io/spring-integration/reference/html/samples.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring-integration/reference/html/samples.html ([https](https://docs.spring.io/spring-integration/reference/html/samples.html) result 404). * [ ] http://static.springsource.org/spring-integration/reference/htmlsingle/ (301) with 4 occurrences migrated to: https://docs.spring.io/spring-integration/reference/htmlsingle/ ([https](https://static.springsource.org/spring-integration/reference/htmlsingle/) result 404). * [ ] http://xml.apache.org/xslt (404) with 3 occurrences migrated to: https://xml.apache.org/xslt ([https](https://xml.apache.org/xslt) result 404). * [ ] http://customcode.info (503) with 1 occurrences migrated to: https://customcode.info ([https](https://customcode.info) result 503). ## Fixed Success These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended. * [ ] http://activemq.apache.org/ with 1 occurrences migrated to: https://activemq.apache.org/ ([https](https://activemq.apache.org/) result 200). * [ ] http://db.apache.org/derby/ with 1 occurrences migrated to: https://db.apache.org/derby/ ([https](https://db.apache.org/derby/) result 200). * [ ] http://developer.mapquest.com/ with 1 occurrences migrated to: https://developer.mapquest.com/ ([https](https://developer.mapquest.com/) result 200). * [ ] http://docs.oracle.com/javase/tutorial/jmx/mbeans/index.html with 1 occurrences migrated to: https://docs.oracle.com/javase/tutorial/jmx/mbeans/index.html ([https](https://docs.oracle.com/javase/tutorial/jmx/mbeans/index.html) result 200). * [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/ip/tcp/serializer/ByteArrayCrLfSerializer.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring-integration/api/org/springframework/integration/ip/tcp/serializer/ByteArrayCrLfSerializer.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/ip/tcp/serializer/ByteArrayCrLfSerializer.html) result 200). * [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/ip/tcp/serializer/ByteArrayStxEtxSerializer.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring-integration/api/org/springframework/integration/ip/tcp/serializer/ByteArrayStxEtxSerializer.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/ip/tcp/serializer/ByteArrayStxEtxSerializer.html) result 200). * [ ] http://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageGroupStoreReaper.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStoreReaper.html ([https](https://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageGroupStoreReaper.html) result 200). * [ ] http://static.springsource.org/spring-integration/docs/2.2.0.RC3/reference/htmlsingle/ (301) with 2 occurrences migrated to: https://docs.spring.io/spring-integration/docs/2.2.0.RC3/reference/htmlsingle/ ([https](https://static.springsource.org/spring-integration/docs/2.2.0.RC3/reference/htmlsingle/) result 200). * [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/core/convert/ConversionService.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/convert/ConversionService.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/core/convert/ConversionService.html) result 200). * [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/core/serializer/Deserializer.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/serializer/Deserializer.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/core/serializer/Deserializer.html) result 200). * [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/core/serializer/Serializer.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/serializer/Serializer.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/core/serializer/Serializer.html) result 200). * [ ] http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html ([https](https://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html) result 200). * [ ] http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol ([https](https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol) result 200). * [ ] http://en.wikipedia.org/wiki/Binary_Synchronous_Communications with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Binary_Synchronous_Communications ([https](https://en.wikipedia.org/wiki/Binary_Synchronous_Communications) result 200). * [ ] http://en.wikipedia.org/wiki/CURL with 1 occurrences migrated to: https://en.wikipedia.org/wiki/CURL ([https](https://en.wikipedia.org/wiki/CURL) result 200). * [ ] http://en.wikipedia.org/wiki/Control_character with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Control_character ([https](https://en.wikipedia.org/wiki/Control_character) result 200). * [ ] http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol with 2 occurrences migrated to: https://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol ([https](https://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol) result 200). * [ ] http://en.wikipedia.org/wiki/Java_Message_Service with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Java_Message_Service ([https](https://en.wikipedia.org/wiki/Java_Message_Service) result 200). * [ ] http://en.wikipedia.org/wiki/Netcat with 2 occurrences migrated to: https://en.wikipedia.org/wiki/Netcat ([https](https://en.wikipedia.org/wiki/Netcat) result 200). * [ ] http://en.wikipedia.org/wiki/Newline with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Newline ([https](https://en.wikipedia.org/wiki/Newline) result 200). * [ ] http://en.wikipedia.org/wiki/OAuth with 1 occurrences migrated to: https://en.wikipedia.org/wiki/OAuth ([https](https://en.wikipedia.org/wiki/OAuth) result 200). * [ ] http://en.wikipedia.org/wiki/SOAP with 1 occurrences migrated to: https://en.wikipedia.org/wiki/SOAP ([https](https://en.wikipedia.org/wiki/SOAP) result 200). * [ ] http://en.wikipedia.org/wiki/Telnet with 2 occurrences migrated to: https://en.wikipedia.org/wiki/Telnet ([https](https://en.wikipedia.org/wiki/Telnet) result 200). * [ ] http://en.wikipedia.org/wiki/Transmission_Control_Protocol with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Transmission_Control_Protocol ([https](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) result 200). * [ ] http://en.wikipedia.org/wiki/XML with 1 occurrences migrated to: https://en.wikipedia.org/wiki/XML ([https](https://en.wikipedia.org/wiki/XML) result 200). * [ ] http://en.wikipedia.org/wiki/XPath with 1 occurrences migrated to: https://en.wikipedia.org/wiki/XPath ([https](https://en.wikipedia.org/wiki/XPath) result 200). * [ ] http://en.wikipedia.org/wiki/XSLT with 1 occurrences migrated to: https://en.wikipedia.org/wiki/XSLT ([https](https://en.wikipedia.org/wiki/XSLT) result 200). * [ ] http://hillert.blogspot.com/2011/01/marshal-json-data-using-jackson-in.html with 1 occurrences migrated to: https://hillert.blogspot.com/2011/01/marshal-json-data-using-jackson-in.html ([https](https://hillert.blogspot.com/2011/01/marshal-json-data-using-jackson-in.html) result 200). * [ ] http://hillert.blogspot.com/2011/05/testing-email-notifications-with-apache.html with 1 occurrences migrated to: https://hillert.blogspot.com/2011/05/testing-email-notifications-with-apache.html ([https](https://hillert.blogspot.com/2011/05/testing-email-notifications-with-apache.html) result 200). * [ ] http://james.apache.org/ with 1 occurrences migrated to: https://james.apache.org/ ([https](https://james.apache.org/) result 200). * [ ] http://james.apache.org/server/3/quick-start.html with 1 occurrences migrated to: https://james.apache.org/server/3/quick-start.html ([https](https://james.apache.org/server/3/quick-start.html) result 200). * [ ] http://jquery.com/ with 1 occurrences migrated to: https://jquery.com/ ([https](https://jquery.com/) result 200). * [ ] http://meyerweb.com/eric/tools/dencoder/ with 1 occurrences migrated to: https://meyerweb.com/eric/tools/dencoder/ ([https](https://meyerweb.com/eric/tools/dencoder/) result 200). * [ ] http://projects.spring.io/spring-integration/ with 2 occurrences migrated to: https://projects.spring.io/spring-integration/ ([https](https://projects.spring.io/spring-integration/) result 200). * [ ] http://sizzlejs.com/ with 1 occurrences migrated to: https://sizzlejs.com/ ([https](https://sizzlejs.com/) result 200). * [ ] http://tomcat.apache.org/ with 1 occurrences migrated to: https://tomcat.apache.org/ ([https](https://tomcat.apache.org/) result 200). * [ ] http://twitter.com/huntchr with 1 occurrences migrated to: https://twitter.com/huntchr ([https](https://twitter.com/huntchr) result 200). * [ ] http://www.360innovate.co.uk with 1 occurrences migrated to: https://www.360innovate.co.uk ([https](https://www.360innovate.co.uk) result 200). * [ ] http://www.amqp.org/ with 1 occurrences migrated to: https://www.amqp.org/ ([https](https://www.amqp.org/) result 200). * [ ] http://tempuri.org/ (302) with 1 occurrences migrated to: https://www.bing.com/ ([https](https://tempuri.org/) result 200). * [ ] http://www.eclipse.org/jetty/ with 1 occurrences migrated to: https://www.eclipse.org/jetty/ ([https](https://www.eclipse.org/jetty/) result 200). * [ ] http://www.eaipatterns.com/ (302) with 2 occurrences migrated to: https://www.enterpriseintegrationpatterns.com/ ([https](https://www.eaipatterns.com/) result 200). * [ ] http://www.eaipatterns.com/gregor.html (302) with 1 occurrences migrated to: https://www.enterpriseintegrationpatterns.com/gregor.html ([https](https://www.eaipatterns.com/gregor.html) result 200). * [ ] http://www.eaipatterns.com/ramblings/18_starbucks.html (302) with 1 occurrences migrated to: https://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html ([https](https://www.eaipatterns.com/ramblings/18_starbucks.html) result 200). * [ ] http://www.gnu.org/licenses/gpl.html with 1 occurrences migrated to: https://www.gnu.org/licenses/gpl.html ([https](https://www.gnu.org/licenses/gpl.html) result 200). * [ ] http://fusesource.com (302) with 1 occurrences migrated to: https://www.jboss.org/ ([https](https://fusesource.com) result 200). * [ ] http://www.microsoft.com/en-us/download/details.aspx?id=23650 with 2 occurrences migrated to: https://www.microsoft.com/en-us/download/details.aspx?id=23650 ([https](https://www.microsoft.com/en-us/download/details.aspx?id=23650) result 200). * [ ] http://www.postgresql.org/ with 1 occurrences migrated to: https://www.postgresql.org/ ([https](https://www.postgresql.org/) result 200). * [ ] http://www.rabbitmq.com/ with 6 occurrences migrated to: https://www.rabbitmq.com/ ([https](https://www.rabbitmq.com/) result 200). * [ ] http://www.w3schools.com/xml/ with 1 occurrences migrated to: https://www.w3schools.com/xml/ ([https](https://www.w3schools.com/xml/) result 200). * [ ] http://forum.springsource.org/archive/index.php/t-84006.html (301) with 1 occurrences migrated to: https://forum.spring.io/archive/index.php/t-84006.html ([https](https://forum.springsource.org/archive/index.php/t-84006.html) result 301). * [ ] http://forum.spring.io/forum/spring-projects/integration/117523-starting-multiple-consumers?p=589517 with 1 occurrences migrated to: https://forum.spring.io/forum/spring-projects/integration/117523-starting-multiple-consumers?p=589517 ([https](https://forum.spring.io/forum/spring-projects/integration/117523-starting-multiple-consumers?p=589517) result 301). * [ ] http://forum.spring.io/forum/spring-projects/integration/119081-dynamic-inbound-channel-adapter-creation with 1 occurrences migrated to: https://forum.spring.io/forum/spring-projects/integration/119081-dynamic-inbound-channel-adapter-creation ([https](https://forum.spring.io/forum/spring-projects/integration/119081-dynamic-inbound-channel-adapter-creation) result 301). * [ ] http://jira.springframework.org/browse/ROO-909 with 1 occurrences migrated to: https://jira.springframework.org/browse/ROO-909 ([https](https://jira.springframework.org/browse/ROO-909) result 301). * [ ] http://jquery.org/license with 1 occurrences migrated to: https://jquery.org/license ([https](https://jquery.org/license) result 301). * [ ] http://junit.org/ with 1 occurrences migrated to: https://junit.org/ ([https](https://junit.org/) result 301). * [ ] http://mina.apache.org/sshd-project with 1 occurrences migrated to: https://mina.apache.org/sshd-project ([https](https://mina.apache.org/sshd-project) result 301). * [ ] http://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx with 1 occurrences migrated to: https://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx ([https](https://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx) result 301). * [ ] http://projects.spring.io/spring-boot with 1 occurrences migrated to: https://projects.spring.io/spring-boot ([https](https://projects.spring.io/spring-boot) result 301). * [ ] http://springsource.com with 1 occurrences migrated to: https://springsource.com ([https](https://springsource.com) result 301). * [ ] http://support.microsoft.com/default.aspx?scid=kb;EN-US;914277 with 2 occurrences migrated to: https://support.microsoft.com/default.aspx?scid=kb;EN-US;914277 ([https](https://support.microsoft.com/default.aspx?scid=kb;EN-US;914277) result 301). * [ ] http://www.360innovate.co.uk/blog/2009/03/periodicalupdater-for-jquery/ with 1 occurrences migrated to: https://www.360innovate.co.uk/blog/2009/03/periodicalupdater-for-jquery/ ([https](https://www.360innovate.co.uk/blog/2009/03/periodicalupdater-for-jquery/) result 301). * [ ] http://www.eaipatterns.com/eaipatterns.html (302) with 1 occurrences migrated to: https://www.enterpriseintegrationpatterns.com/eaipatterns.html ([https](https://www.eaipatterns.com/eaipatterns.html) result 301). * [ ] http://www.google.com/talk/ with 1 occurrences migrated to: https://www.google.com/talk/ ([https](https://www.google.com/talk/) result 301). * [ ] http://www.gradle.org with 4 occurrences migrated to: https://www.gradle.org ([https](https://www.gradle.org) result 301). * [ ] http://www.gradle.org/docs/current/userguide/application_plugin.html with 10 occurrences migrated to: https://www.gradle.org/docs/current/userguide/application_plugin.html ([https](https://www.gradle.org/docs/current/userguide/application_plugin.html) result 301). * [ ] http://www.gradle.org/docs/current/userguide/jetty_plugin.html with 1 occurrences migrated to: https://www.gradle.org/docs/current/userguide/jetty_plugin.html ([https](https://www.gradle.org/docs/current/userguide/jetty_plugin.html) result 301). * [ ] http://www.mapquestapi.com/ with 1 occurrences migrated to: https://www.mapquestapi.com/ ([https](https://www.mapquestapi.com/) result 301). * [ ] http://www.mongodb.org/display/DOCS/Querying with 1 occurrences migrated to: https://www.mongodb.org/display/DOCS/Querying ([https](https://www.mongodb.org/display/DOCS/Querying) result 301). * [ ] http://www.opensource.org/licenses/mit-license.php with 1 occurrences migrated to: https://www.opensource.org/licenses/mit-license.php ([https](https://www.opensource.org/licenses/mit-license.php) result 301). * [ ] http://www.oracle.com/technetwork/indexes/downloads/index.html with 2 occurrences migrated to: https://www.oracle.com/technetwork/indexes/downloads/index.html ([https](https://www.oracle.com/technetwork/indexes/downloads/index.html) result 301). * [ ] http://www.rabbitmq.com/install.html with 4 occurrences migrated to: https://www.rabbitmq.com/install.html ([https](https://www.rabbitmq.com/install.html) result 301). * [ ] http://www.springsource.org/node/3598 with 1 occurrences migrated to: https://www.springsource.org/node/3598 ([https](https://www.springsource.org/node/3598) result 301). * [ ] http://www.springsource.org/spring-amqp with 4 occurrences migrated to: https://www.springsource.org/spring-amqp ([https](https://www.springsource.org/spring-amqp) result 301). * [ ] http://www.springsource.org/spring-integration with 35 occurrences migrated to: https://www.springsource.org/spring-integration ([https](https://www.springsource.org/spring-integration) result 301). * [ ] http://www.springintegration.org/ (301) with 7 occurrences migrated to: https://www.springsource.org/spring-integration/ ([https](https://www.springintegration.org/) result 301). * [ ] http://www.springsource.org/spring-security with 1 occurrences migrated to: https://www.springsource.org/spring-security ([https](https://www.springsource.org/spring-security) result 301). * [ ] http://www.springsource.org/spring-web-services with 1 occurrences migrated to: https://www.springsource.org/spring-web-services ([https](https://www.springsource.org/spring-web-services) result 301). * [ ] http://www.springsource.org/sts with 1 occurrences migrated to: https://www.springsource.org/sts ([https](https://www.springsource.org/sts) result 301). * [ ] http://www.youtube.com/SpringSourceDev with 2 occurrences migrated to: https://www.youtube.com/SpringSourceDev ([https](https://www.youtube.com/SpringSourceDev) result 301). * [ ] http://dev.twitter.com with 1 occurrences migrated to: https://dev.twitter.com ([https](https://dev.twitter.com) result 302). * [ ] http://dev.twitter.com/ with 4 occurrences migrated to: https://dev.twitter.com/ ([https](https://dev.twitter.com/) result 302). * [ ] http://visualvm.java.net/ with 1 occurrences migrated to: https://visualvm.java.net/ ([https](https://visualvm.java.net/) result 302). * [ ] http://www.springsource.com/developer/sts with 4 occurrences migrated to: https://www.springsource.com/developer/sts ([https](https://www.springsource.com/developer/sts) result 302). # Ignored These URLs were intentionally ignored. * http://java.sun.com/JSP/Page with 40 occurrences * http://java.sun.com/jsp/jstl/core with 34 occurrences * http://java.sun.com/jsp/jstl/fmt with 2 occurrences * http://java.sun.com/jsp/jstl/functions with 29 occurrences * http://localhost:8080/broadcast/foo with 2 occurrences * http://localhost:8080/chat with 1 occurrences * http://localhost:8080/foo with 3 occurrences * http://localhost:8080/monitoring with 1 occurrences * http://localhost:8080/multipart-http/inboundAdapter.htm with 1 occurrences * http://localhost:8080/rest-http/services/employee/ with 3 occurrences * http://localhost:8080/rest-http/services/employee/0/search with 1 occurrences * http://localhost:8080/rest-http/services/employee/1/search with 1 occurrences * http://localhost:8080/shutdown with 1 occurrences * http://localhost:8080/sockjs.js with 2 occurrences * http://localhost:8080/stomp.js with 1 occurrences * http://localhost:8080/time with 1 occurrences * http://localhost:8080/ws-inbound-gateway/echoservice with 2 occurrences * http://localhost:8082 with 1 occurrences * http://schemas.xmlsoap.org/soap/envelope/ with 1 occurrences * http://tiles.apache.org/tags-tiles with 1 occurrences * http://www.example.org/orders with 3 occurrences * http://www.example.org/orders-bigbooks with 2 occurrences * http://www.springframework.org/spring-ws/samples/echo with 5 occurrences * http://www.springframework.org/tags with 34 occurrences * http://www.springframework.org/tags/form with 18 occurrences * http://www.w3.org/1999/XSL/Transform with 1 occurrences
8.2 KiB
Spring Integration - Stored Procedure Example - Oracle
Overview
This sample application illustrates the usage of the Spring Integration Stored Procedure components using an Oracle™ database as a backend. Actually 2 samples are provided:
- Sample 1 Capitalizes Strings
- Sample 2 Retrieves Coffee Data
- This is sample is similar to the Stored Procedure Sample for PostgreSql
Running the Sample
Pre-requisites
This sample was tested against: Oracle Database Express Edition 11g Release 2 (which can be downloaded and used for free). Nevertheless, the example should work with other versions as well.
- Access to a Oracle or Oracle XE database instance
- Install Oracle JDBC Driver to your local Maven repository (~/.m2)
JDBC Driver Installation for Oracle
-
Go to https://www.oracle.com/technetwork/indexes/downloads/index.html
-
Under "JDBC Drivers", download the appropriate driver relevant to your Oracle and JDK version (This sample was tested using "Oracle Database 11g Release 2 JDBC Drivers")
-
Once downloaded, install the driver to your local Maven repository:
$ mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=~/dev/ojdbc6.jar -DgeneratePom=true -
Now you can uncomment the
ojdbc6dependency in the build.gradle file forstored-procedures-oracleproject.
After that you can run the sample application using Gradle Application Plugin:
$ gradlew :stored-procedures-oracle:run
Common Oracle Setup
Create Tablespace
CREATE TABLESPACE procedure_test
DATAFILE 'c:/data/procedure_test.dbf'
SIZE 10M
AUTOEXTEND ON NEXT 10M
MAXSIZE 100M;
Create User
CREATE USER storedproc
IDENTIFIED BY storedproc
DEFAULT TABLESPACE procedure_test
TEMPORARY TABLESPACE temp;
Grant Rights
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO storedproc;
ALTER USER storedproc QUOTA unlimited ON procedure_test;
Setting up the Spring Application Context
You may have to update the Oracle DB properties in:
/src/main/resources/META-INF/spring/integration/spring-integration-context.xml
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="connectionCachingEnabled" value="true" />
<property name="URL" value="jdbc:oracle:thin:@//localhost:1521/XE" />
<property name="password" value="storedproc" />
<property name="user" value="storedproc" />
<property name="connectionCacheProperties">
<props merge="default">
<prop key="MinLimit">3</prop>
<prop key="MaxLimit">20</prop>
</props>
</property>
</bean>
Running Sample 1 - Capitalizes Strings
This example provides a simple example using the stored procedure outbound gateway adapter. This example will call an Oracle Stored Procedure as well as an Oracle Function using the StoredProc Outbound Gateway.
Creating the Stored Procedure
create or replace
PROCEDURE CAPITALIZE_STRING(inoutString IN OUT VARCHAR) IS
BEGIN
SELECT upper(inoutString) INTO inoutString from dual ;
END;
Creating the Stored Function
create or replace
FUNCTION GET_COOL_NUMBER
RETURN NUMBER
IS cool_number NUMBER(11,2);
BEGIN
cool_number := 12345;
RETURN cool_number;
END;
Execute the Sample
-
running the "Main" class from within STS (Right-click on Main class --> Run As --> Java Application)
-
or from the command line:
$ gradlew :stored-procedures-oracle:run
You should see the following output:
16:05:19.556 INFO [main][org.springframework.integration.samples.storedprocedure.Main]
=========================================================
Welcome to Spring Integration's
Stored Procedure/Function Sample for Oracle
For more information please visit:
https://www.springsource.org/spring-integration
=========================================================
Please enter a choice and press <enter>:
1. Execute Sample 1 (Capitalize String)
2. Execute Sample 2 (Coffee Service)
q. Quit the application
Select Opion 1.
=========================================================
Please press 'q + Enter' to quit the application.
=========================================================
Please enter a string and press <enter>: hello world
Converting String to Uppcase using Stored Procedure...
Retrieving Numeric value via Sql Function...
Converted 'hello world' - End Result: 'HELLO WORLD_12345'.
When you enter a text, the text will be converted into upper-case using the Oracle Stored Procedure named CAPITALIZE_STRING. Afterwards, the String is concatenated with the result from calling the Oracle Stored Function GET_COOL_NUMBER.
Running Sample 2 - Coffee Service
Create Table COFFEE_BEVERAGES
CREATE TABLE "COFFEE_BEVERAGES"(
"ID" NUMBER(10,0) NOT NULL,
"COFFEE_NAME" VARCHAR2(50 CHAR) NOT NULL,
"COFFEE_DESCRIPTION" VARCHAR2(500 CHAR) NOT NULL,
CONSTRAINT "COFFEE_BEVERAGES_PK" PRIMARY KEY ("ID"));
Add Sample Data to Table COFFEE_BEVERAGES
REM INSERTING into COFFEE_BEVERAGES
SET DEFINE OFF;
Insert into COFFEE_BEVERAGES (ID,COFFEE_NAME,COFFEE_DESCRIPTION) values (1,'Espresso','Espressos keep developers going in the morning. There are never enough of them.');
Insert into COFFEE_BEVERAGES (ID,COFFEE_NAME,COFFEE_DESCRIPTION) values (2,'Cappuccino','For the finer moments. Wrap your espresso in a tasty layer of foam.');
Insert into COFFEE_BEVERAGES (ID,COFFEE_NAME,COFFEE_DESCRIPTION) values (3,'Mocha','Mmmmh, chocolate.');
Insert into COFFEE_BEVERAGES (ID,COFFEE_NAME,COFFEE_DESCRIPTION) values (4,'Latte','If you are more into milk than into foam.');
Creating the Stored Functions
Please create the following Stored Functions:
Find All Coffee Beverages
create or replace
package types
as
type cursorType is ref cursor;
end;
create or replace
FUNCTION find_all_coffee_beverages return types.cursortype
AS
l_cursor types.cursorType;
BEGIN
OPEN l_cursor FOR SELECT "ID", "COFFEE_NAME", "COFFEE_DESCRIPTION" FROM "COFFEE_BEVERAGES";
RETURN l_cursor;
END;
Find Specific Coffee Beverage
create or replace
FUNCTION find_coffee(coffee_id IN integer)
RETURN VARCHAR2 is description VARCHAR2(1000);
begin
SELECT COFFEE_DESCRIPTION into description from COFFEE_BEVERAGES where ID=coffee_id;
return description;
end;
Execute the Sample
-
running the "Main" class from within STS (Right-click on Main class --> Run As --> Java Application)
-
or from the command line:
$ gradlew :stored-procedures-oracle:run
You should see the following output:
16:05:19.556 INFO [main][org.springframework.integration.samples.storedprocedure.Main]
=========================================================
Welcome to Spring Integration's
Stored Procedure/Function Sample for Oracle
For more information please visit:
https://www.springsource.org/spring-integration
=========================================================
Please enter a choice and press <enter>:
1. Execute Sample 1 (Capitalize String)
2. Execute Sample 2 (Coffee Service)
q. Quit the application
Select Opion 2.
This should result in the following output:
* Please enter 'list' and press <enter> to get a list of coffees.
* Enter a coffee id, e.g. '1' and press <enter> to get a description.
* Please press 'q + Enter' to quit the application.
This sample also periodically polls the Oracle database using a Stored Procedure Inbound Channel Adapter:
16:06:46.669 INFO [task-scheduler-1][org.springframework.integration.handler.LoggingHandler] [Payload=[CoffeeBeverage [id=1,...
For help please take a look at the Spring Integration documentation: