Files
spring-integration-samples/applications/stomp-chat
Spring Operator 79f13d042c URL Cleanup
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://rss.cnn.com/rss/cnn_topstories.rss (200) with 1 occurrences could not be migrated:
   ([https](https://rss.cnn.com/rss/cnn_topstories.rss) result ClosedChannelException).
* http://wsf.cdyne.com/WeatherWS/Weather.asmx (200) with 1 occurrences could not be migrated:
   ([https](https://wsf.cdyne.com/WeatherWS/Weather.asmx) result ConnectTimeoutException).

# 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://local.yahooapis.com/MapsService/V1/trafficData?appid=YdnDemo&zip= (UnknownHostException) with 1 occurrences migrated to:
  https://local.yahooapis.com/MapsService/V1/trafficData?appid=YdnDemo&zip= ([https](https://local.yahooapis.com/MapsService/V1/trafficData?appid=YdnDemo&zip=) result UnknownHostException).
* http://static.springsource.org/spring-integration/reference/htmlsingle/ (301) with 2 occurrences migrated to:
  https://docs.spring.io/spring-integration/reference/htmlsingle/ ([https](https://static.springsource.org/spring-integration/reference/htmlsingle/) result 404).
* http://schema.cloudfoundry.org (404) with 1 occurrences migrated to:
  https://schema.cloudfoundry.org ([https](https://schema.cloudfoundry.org) result 404).
* http://schema.cloudfoundry.org/spring/cloudfoundry-spring.xsd (404) with 5 occurrences migrated to:
  https://schema.cloudfoundry.org/spring/cloudfoundry-spring.xsd ([https](https://schema.cloudfoundry.org/spring/cloudfoundry-spring.xsd) result 404).
* http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP (404) with 2 occurrences migrated to:
  https://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP ([https](https://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP) result 404).
* http://ws.cdyne.com/WeatherWS/Weather.asmx (404) with 1 occurrences migrated to:
  https://ws.cdyne.com/WeatherWS/Weather.asmx ([https](https://ws.cdyne.com/WeatherWS/Weather.asmx) result 404).
* http://www.example.org/prodcuts (404) with 1 occurrences migrated to:
  https://www.example.org/prodcuts ([https](https://www.example.org/prodcuts) result 404).
* http://www.springframework.org/schema/integration/script.xsd (404) with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/script.xsd ([https](https://www.springframework.org/schema/integration/script.xsd) result 404).
* http://www.springframework.org/schema/integration/splunk/spring-integration-splunk.xsd (404) with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/splunk/spring-integration-splunk.xsd ([https](https://www.springframework.org/schema/integration/splunk/spring-integration-splunk.xsd) result 404).
* http://www.w3schools.com/xml/FahrenheitToCelsius (301) with 1 occurrences migrated to:
  https://www.w3schools.com/xml/FahrenheitToCelsius ([https](https://www.w3schools.com/xml/FahrenheitToCelsius) result 404).

## 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/peer-transport-reference.html with 1 occurrences migrated to:
  https://activemq.apache.org/peer-transport-reference.html ([https](https://activemq.apache.org/peer-transport-reference.html) result 200).
* http://activemq.apache.org/schema/core/activemq-core-5.4.2.xsd with 1 occurrences migrated to:
  https://activemq.apache.org/schema/core/activemq-core-5.4.2.xsd ([https](https://activemq.apache.org/schema/core/activemq-core-5.4.2.xsd) result 200).
* http://maven.apache.org/xsd/maven-4.0.0.xsd with 68 occurrences migrated to:
  https://maven.apache.org/xsd/maven-4.0.0.xsd ([https](https://maven.apache.org/xsd/maven-4.0.0.xsd) result 200).
* http://tiles.apache.org/dtds/tiles-config_2_1.dtd with 3 occurrences migrated to:
  https://tiles.apache.org/dtds/tiles-config_2_1.dtd ([https](https://tiles.apache.org/dtds/tiles-config_2_1.dtd) result 200).
* http://www.springframework.org/schema/aop/spring-aop.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/aop/spring-aop.xsd ([https](https://www.springframework.org/schema/aop/spring-aop.xsd) result 200).
* http://www.springframework.org/schema/beans/spring-beans.xsd with 136 occurrences migrated to:
  https://www.springframework.org/schema/beans/spring-beans.xsd ([https](https://www.springframework.org/schema/beans/spring-beans.xsd) result 200).
* http://www.springframework.org/schema/context/spring-context-4.1.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/context/spring-context-4.1.xsd ([https](https://www.springframework.org/schema/context/spring-context-4.1.xsd) result 200).
* http://www.springframework.org/schema/context/spring-context.xsd with 34 occurrences migrated to:
  https://www.springframework.org/schema/context/spring-context.xsd ([https](https://www.springframework.org/schema/context/spring-context.xsd) result 200).
* http://www.springframework.org/schema/data/mongo/spring-mongo.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/data/mongo/spring-mongo.xsd ([https](https://www.springframework.org/schema/data/mongo/spring-mongo.xsd) result 200).
* http://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsd with 9 occurrences migrated to:
  https://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsd ([https](https://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsd) result 200).
* http://www.springframework.org/schema/integration/event/spring-integration-event.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/event/spring-integration-event.xsd ([https](https://www.springframework.org/schema/integration/event/spring-integration-event.xsd) result 200).
* http://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd ([https](https://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd) result 200).
* http://www.springframework.org/schema/integration/file/spring-integration-file.xsd with 11 occurrences migrated to:
  https://www.springframework.org/schema/integration/file/spring-integration-file.xsd ([https](https://www.springframework.org/schema/integration/file/spring-integration-file.xsd) result 200).
* http://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd with 5 occurrences migrated to:
  https://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd ([https](https://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd) result 200).
* http://www.springframework.org/schema/integration/groovy/spring-integration-groovy.xsd with 5 occurrences migrated to:
  https://www.springframework.org/schema/integration/groovy/spring-integration-groovy.xsd ([https](https://www.springframework.org/schema/integration/groovy/spring-integration-groovy.xsd) result 200).
* http://www.springframework.org/schema/integration/http/spring-integration-http.xsd with 10 occurrences migrated to:
  https://www.springframework.org/schema/integration/http/spring-integration-http.xsd ([https](https://www.springframework.org/schema/integration/http/spring-integration-http.xsd) result 200).
* http://www.springframework.org/schema/integration/ip/spring-integration-ip.xsd with 8 occurrences migrated to:
  https://www.springframework.org/schema/integration/ip/spring-integration-ip.xsd ([https](https://www.springframework.org/schema/integration/ip/spring-integration-ip.xsd) result 200).
* http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd with 8 occurrences migrated to:
  https://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd ([https](https://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd) result 200).
* http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd with 11 occurrences migrated to:
  https://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd ([https](https://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd) result 200).
* http://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd with 3 occurrences migrated to:
  https://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd ([https](https://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd) result 200).
* http://www.springframework.org/schema/integration/jpa/spring-integration-jpa.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/jpa/spring-integration-jpa.xsd ([https](https://www.springframework.org/schema/integration/jpa/spring-integration-jpa.xsd) result 200).
* http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd ([https](https://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd) result 200).
* http://www.springframework.org/schema/integration/mongodb/spring-integration-mongodb.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/integration/mongodb/spring-integration-mongodb.xsd ([https](https://www.springframework.org/schema/integration/mongodb/spring-integration-mongodb.xsd) result 200).
* http://www.springframework.org/schema/integration/rmi/spring-integration-rmi.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/integration/rmi/spring-integration-rmi.xsd ([https](https://www.springframework.org/schema/integration/rmi/spring-integration-rmi.xsd) result 200).
* http://www.springframework.org/schema/integration/scripting/spring-integration-scripting.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/scripting/spring-integration-scripting.xsd ([https](https://www.springframework.org/schema/integration/scripting/spring-integration-scripting.xsd) result 200).
* http://www.springframework.org/schema/integration/sftp/spring-integration-sftp.xsd with 3 occurrences migrated to:
  https://www.springframework.org/schema/integration/sftp/spring-integration-sftp.xsd ([https](https://www.springframework.org/schema/integration/sftp/spring-integration-sftp.xsd) result 200).
* http://www.springframework.org/schema/integration/spring-integration.xsd with 125 occurrences migrated to:
  https://www.springframework.org/schema/integration/spring-integration.xsd ([https](https://www.springframework.org/schema/integration/spring-integration.xsd) result 200).
* http://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd with 27 occurrences migrated to:
  https://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd ([https](https://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd) result 200).
* http://www.springframework.org/schema/integration/twitter/spring-integration-twitter.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/twitter/spring-integration-twitter.xsd ([https](https://www.springframework.org/schema/integration/twitter/spring-integration-twitter.xsd) result 200).
* http://www.springframework.org/schema/integration/websocket/spring-integration-websocket.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/integration/websocket/spring-integration-websocket.xsd ([https](https://www.springframework.org/schema/integration/websocket/spring-integration-websocket.xsd) result 200).
* http://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd ([https](https://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd) result 200).
* http://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd ([https](https://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd) result 200).
* http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd ([https](https://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd) result 200).
* http://www.springframework.org/schema/jdbc/spring-jdbc.xsd with 5 occurrences migrated to:
  https://www.springframework.org/schema/jdbc/spring-jdbc.xsd ([https](https://www.springframework.org/schema/jdbc/spring-jdbc.xsd) result 200).
* http://www.springframework.org/schema/jee/spring-jee.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/jee/spring-jee.xsd ([https](https://www.springframework.org/schema/jee/spring-jee.xsd) result 200).
* http://www.springframework.org/schema/mvc/spring-mvc.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/mvc/spring-mvc.xsd ([https](https://www.springframework.org/schema/mvc/spring-mvc.xsd) result 200).
* http://www.springframework.org/schema/oxm/spring-oxm.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/oxm/spring-oxm.xsd ([https](https://www.springframework.org/schema/oxm/spring-oxm.xsd) result 200).
* http://www.springframework.org/schema/rabbit/spring-rabbit.xsd with 11 occurrences migrated to:
  https://www.springframework.org/schema/rabbit/spring-rabbit.xsd ([https](https://www.springframework.org/schema/rabbit/spring-rabbit.xsd) result 200).
* http://www.springframework.org/schema/security/spring-security.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/security/spring-security.xsd ([https](https://www.springframework.org/schema/security/spring-security.xsd) result 200).
* http://www.springframework.org/schema/task/spring-task-4.2.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/task/spring-task-4.2.xsd ([https](https://www.springframework.org/schema/task/spring-task-4.2.xsd) result 200).
* http://www.springframework.org/schema/task/spring-task.xsd with 8 occurrences migrated to:
  https://www.springframework.org/schema/task/spring-task.xsd ([https](https://www.springframework.org/schema/task/spring-task.xsd) result 200).
* http://www.springframework.org/schema/tx/spring-tx.xsd with 3 occurrences migrated to:
  https://www.springframework.org/schema/tx/spring-tx.xsd ([https](https://www.springframework.org/schema/tx/spring-tx.xsd) result 200).
* http://www.springframework.org/schema/util/spring-util.xsd with 7 occurrences migrated to:
  https://www.springframework.org/schema/util/spring-util.xsd ([https](https://www.springframework.org/schema/util/spring-util.xsd) result 200).
* http://www.w3schools.com/xml/tempconvert.asmx with 1 occurrences migrated to:
  https://www.w3schools.com/xml/tempconvert.asmx ([https](https://www.w3schools.com/xml/tempconvert.asmx) result 200).
* http://www.eaipatterns.com/MessagingGateway.html (302) with 2 occurrences migrated to:
  https://www.enterpriseintegrationpatterns.com/MessagingGateway.html ([https](https://www.eaipatterns.com/MessagingGateway.html) result 301).
* http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd with 2 occurrences migrated to:
  https://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd ([https](https://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd) result 302).
* http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd with 5 occurrences migrated to:
  https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd ([https](https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd) result 302).
* http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd with 1 occurrences migrated to:
  https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd ([https](https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd) result 302).
* http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd with 1 occurrences migrated to:
  https://java.sun.com/xml/ns/persistence/persistence_2_0.xsd ([https](https://java.sun.com/xml/ns/persistence/persistence_2_0.xsd) result 302).

# Ignored
These URLs were intentionally ignored.

* http://activemq.apache.org/schema/core with 2 occurrences
* http://jakarta.apache.org/log4j/ with 1 occurrences
* http://java.sun.com/xml/ns/j2ee with 4 occurrences
* http://java.sun.com/xml/ns/javaee with 8 occurrences
* http://java.sun.com/xml/ns/persistence with 2 occurrences
* http://localhost:8080/http/receiveGateway with 1 occurrences
* http://localhost:8080/multipart-http/inboundAdapter.htm with 1 occurrences
* http://localhost:8080/postGateway with 1 occurrences
* http://localhost:8084/traffic/v1/incidents?key= with 1 occurrences
* http://maven.apache.org/POM/4.0.0 with 136 occurrences
* http://schema.cloudfoundry.org/spring with 9 occurrences
* http://www.example.org/orders with 2 occurrences
* http://www.springframework.org/schema/aop with 2 occurrences
* http://www.springframework.org/schema/beans with 273 occurrences
* http://www.springframework.org/schema/context with 69 occurrences
* http://www.springframework.org/schema/data/mongo with 4 occurrences
* http://www.springframework.org/schema/integration with 250 occurrences
* http://www.springframework.org/schema/integration/amqp with 18 occurrences
* http://www.springframework.org/schema/integration/event with 2 occurrences
* http://www.springframework.org/schema/integration/feed with 2 occurrences
* http://www.springframework.org/schema/integration/file with 21 occurrences
* http://www.springframework.org/schema/integration/ftp with 10 occurrences
* http://www.springframework.org/schema/integration/groovy with 10 occurrences
* http://www.springframework.org/schema/integration/http with 20 occurrences
* http://www.springframework.org/schema/integration/ip with 16 occurrences
* http://www.springframework.org/schema/integration/jdbc with 16 occurrences
* http://www.springframework.org/schema/integration/jms with 22 occurrences
* http://www.springframework.org/schema/integration/jmx with 6 occurrences
* http://www.springframework.org/schema/integration/jpa with 2 occurrences
* http://www.springframework.org/schema/integration/mail with 9 occurrences
* http://www.springframework.org/schema/integration/mongodb with 4 occurrences
* http://www.springframework.org/schema/integration/rmi with 4 occurrences
* http://www.springframework.org/schema/integration/script with 4 occurrences
* http://www.springframework.org/schema/integration/scripting with 8 occurrences
* http://www.springframework.org/schema/integration/sftp with 6 occurrences
* http://www.springframework.org/schema/integration/splunk with 2 occurrences
* http://www.springframework.org/schema/integration/stream with 57 occurrences
* http://www.springframework.org/schema/integration/twitter with 8 occurrences
* http://www.springframework.org/schema/integration/websocket with 4 occurrences
* http://www.springframework.org/schema/integration/ws with 8 occurrences
* http://www.springframework.org/schema/integration/xml with 2 occurrences
* http://www.springframework.org/schema/integration/xmpp with 4 occurrences
* http://www.springframework.org/schema/jdbc with 10 occurrences
* http://www.springframework.org/schema/jee with 2 occurrences
* http://www.springframework.org/schema/mvc with 4 occurrences
* http://www.springframework.org/schema/oxm with 4 occurrences
* http://www.springframework.org/schema/p with 2 occurrences
* http://www.springframework.org/schema/rabbit with 22 occurrences
* http://www.springframework.org/schema/security with 2 occurrences
* http://www.springframework.org/schema/task with 18 occurrences
* http://www.springframework.org/schema/tx with 6 occurrences
* http://www.springframework.org/schema/util with 14 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 211 occurrences
2019-03-20 15:31:01 -04:00
..
2019-03-20 15:31:01 -04:00
2019-03-20 15:31:01 -04:00
2014-10-14 15:02:56 -04:00

WebSockets Stomp Chat Sample

This application demonstrates the Web chat based on STOMP WebSocket sub-protocol with Spring Integration Adapters.

Server

The server is presented only with a single org.springframework.integration.samples.websocket.standard.server.Application class, which is based on the Spring Boot AutoConfiguration and Spring Integration xml configuration @ImportResource. It is a main and starts an embedded Tomcat server on the default 8080 port. The WebSocket endpoint is mapped to the /chat path.

The server also can be run from Gradle gradlew :stomp-chat:run

The server application demonstrates how Spring Integration can be used as a STOMP Broker.

  1. webSocketSessionStore - the SimpleMetadataStore to keep track of WebSocketSession and its user.
  2. chatMessagesStore - the SimpleMessageStore to store messages for chat rooms.
  3. chatRoomSessions - the Map<String, Tuple2<String, String>> to keep track of WebSocketSession subscriptions to the concrete chat room - STOMP destination.
  4. <int-event:inbound-channel-adapter channel="routeStompEvents"> is subscribed to the AbstractSubProtocolEvent type to handle STOMP sub-protocol events.
  5. <int:payload-type-router input-channel="routeStompEvents"> is mapped to the appropriate AbstractSubProtocolEvent type to provide the specific integration flow for each event type.
  6. <int-websocket:inbound-channel-adapter> receives STOMP messages, store them to the appropriate messageGroup (according to the STOMP destination) and forward to the <int-websocket:outbound-channel-adapter> to send to each WebSocketSession subscribed to that STOMP destination - chat room.

Client

The index.html in the src/main/resources/static directory of this project demonstrates a JavaScript STOMP client over SockJS client.

This application covers classical STOMP scenario:

  • connect - requirement to enter the user name - chat member;
  • subscribe - the Join operation on the one of chat rooms and receiving messages to that subscription for the destination;
  • send and receive - just chat messages;
  • unsubscribe - the Leave operation on the chat room: the current web socket session stops receiving messages for the destination;
  • disconnect - close current web socket session and unsubscribe from all its subscriptions.

To get real chat interaction it's just enough to open several tabs in browser. When the user joins to the chat room, his subscription receives all messages, sent by other users to that room, immediately.

Test Case

The org.springframework.integration.samples.chat.stomp.server.ApplicationTests demonstrates the Spring Boot test framework and just starts Server on the random port to be sure that this application is run correctly.