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
79 lines
3.9 KiB
Markdown
79 lines
3.9 KiB
Markdown
SFTP Sample
|
|
===========
|
|
|
|
This example demonstrates the following aspects of the SFTP support available with Spring Integration:
|
|
|
|
1. SFTP Inbound Channel Adapter (transfers files from remote to local directory)
|
|
2. SFTP Outbound Channel Adapter (transfers files from local to the remote directory)
|
|
|
|
In order to run this sample for the 'real' SFTP Server you need to:
|
|
|
|
1. generate private/public keys. Below is simple directions what needs to be done
|
|
2. update user.properties file with appropriate values
|
|
3. run the sample
|
|
|
|
By default this sample uses an [Apache MINA](https://mina.apache.org/sshd-project) embedded `SshServer` with predefined
|
|
private and public keys.
|
|
Note, the embedded Server is started only when the `port` property remains as `-1`. In this case the target port
|
|
for the Embedded Server is selected randomly. For a real SFTP server you should specify correct `host/port` properties.
|
|
|
|
NOTE: The test cases will create/delete a directory `si.sftp.sample`.
|
|
|
|
## INBOUND CHANNEL ADAPTER
|
|
|
|
To run the NBOUND CHANNEL ADAPTER sample execute **SftpInboundReceiveSample** test. You will see that based on configuration it will access the sample remote directory which contains 3 files and will attempt to securely copy them to a local directory which will be generated. The output should look like this:
|
|
|
|
Received first file message: [Payload=local-dir/a.txt][Headers={timestamp=1290066001349, id=9dca686a-cfd4-4d96-a1a7-761feb005e43}]
|
|
Received second file message: [Payload=local-dir/b.txt][Headers={timestamp=1290066001650, id=d33a475d-fa71-4c5b-b73e-3147969f1c6f}]
|
|
No third file was received null
|
|
|
|
As you can see, although the remote directory had 3 files we only received 2 since we were filtering only the files that end with **txt**.
|
|
|
|
## OUTBOUND CHANNEL ADAPTER
|
|
|
|
To run the OUTBOUND CHANNEL ADAPTER sample execute the **SftpOutboundTransferSample** test. You will see that based on the configuration it will attempt to transfer the **README.md** file to a remote directory **remote-target-dir**. The output should look like this:
|
|
|
|
Successfully transferred 'README.md' file to a remote location under the name 'README.md_foo'
|
|
|
|
NOTE: You can see that we are using *SpEL* via the **remote-filename-generator-expression** attribute to define the remote file name by simply appending **_foo** to the original file name.
|
|
|
|
## OUTBOUND GATEWAY
|
|
|
|
Run the **FtpOutoundGateway** sample as a JUnit test; it creates 2 files, retrieves and removes them over ftp. It cleans up by removing the retrieved files. The test assumes full access to the filesystem via **/tmp** where the test files are created. Requires **sshd** to be running on localhost.
|
|
|
|
This sample uses a property **private.keyfile** to point to the location of your private key. Requires setting of **user**, **private.keyfile** and, optionally, **passphrase** in **user.properties**.
|
|
|
|
### HOW TO GENERATE KEYS
|
|
|
|
>$ ssh-keygen
|
|
Generating public/private rsa key pair.
|
|
Enter file in which to save the key (/Users/ozhurakousky/.ssh/id_rsa): ./sftp_rsa
|
|
Enter passphrase (empty for no passphrase):
|
|
Enter same passphrase again:
|
|
Your identification has been saved in ./sftp_rsa.
|
|
Your public key has been saved in ./sftp_rsa.pub.
|
|
The key fingerprint is:
|
|
2c:30:7c:18:3c:a0:d5:83:68:78:7e:c1:5f:c1:3e:3d ozhurakousky@oleg.home
|
|
The key's randomart image is:
|
|
+--[ RSA 2048]----+
|
|
|..o*. ... |
|
|
|o+o.Bo o |
|
|
|oo ==.o . |
|
|
| . .+..o E |
|
|
| . . S. . |
|
|
| . |
|
|
| |
|
|
| |
|
|
| |
|
|
+-----------------+
|
|
>$ ls
|
|
sftp_rsa sftp_rsa.pub
|
|
>$
|
|
|
|
* Create a file ~/.ssh/authorized_keys and give it the required permissions
|
|
|
|
>$ chmod 600 ~/.ssh/authorized_keys
|
|
|
|
* Then edit **authorized_keys** file and paste in the contents of the public key file **sftp_rsa.pub**.
|
|
* Move your private key file **sftp_rsa** to the directory **/src/test/resources/META-INF/keys/** directory.
|