Mirror of Apache ActiveMQ
Go to file
Christopher L. Shannon 6f2b70d8d5 AMQ-8398 - Fix Stomp to OpenWire UTF-8 translation
This commit fixes conversion of messages that are sent or received
using Stomp when the body contains characters that require 4 bytes
for encoding using standard UTF-8.

ActiveMQ and OpenWire currently use a modified UTF-8
encoding that only uses 3 bytes so the conversion previously was
breaking because the body was encoded using standard JDK UTF-8 encoding
and set directly on an ActiveMQText message which was leading to
decoding errors later when the ActiveMQMessage tried to decode using the
modified encoder. The reverse was also was true and was breaking
in some cases.

The fix now makes sure to correctly decode the Stomp message back to a
String first and set that on the ActiveMQ message so it can be
re-encoded correctly. The reverse is fixed as well so both
conversion from Stomp -> OpenWire and OpenWire -> Stomp work. Tests have
been added for Stomp -> OpenWire, OpenWire -> Stomp, and Stomp -> Stomp
which is really Stomp -> OpenWire -> Stomp.

(cherry picked from commit 3ddf515597)
(cherry picked from commit 73a8d5ca67)
2024-08-28 15:06:34 -04:00
activemq-all [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-amqp [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-blueprint [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-broker [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-cf [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-client [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-client-jakarta [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-console [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-http [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-jaas [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-jdbc-store [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-jms-pool [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-kahadb-store AMQ-9547 - Remove setLength() and usage from RecoverableRandomAccessFile 2024-08-08 16:15:33 -04:00
activemq-karaf [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-karaf-itest [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-log4j-appender [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-mqtt [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-openwire-generator [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-openwire-legacy [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-osgi [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-partition [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-pool [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-ra [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-rar [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-run [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-runtime-config [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-shiro [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-spring [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-stomp AMQ-8398 - Fix Stomp to OpenWire UTF-8 translation 2024-08-28 15:06:34 -04:00
activemq-tooling [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-unit-tests [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-web [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-web-console [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
activemq-web-demo [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
assembly [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00
committer-tools Add ASF header in release-validate.sh script 2020-12-02 20:19:07 +01:00
docs/img Update logos 2020-09-29 11:11:21 -05:00
etc/css NO-JIRA: remove script, moved into dist dev repo to simplify use, now under https://dist.apache.org/repos/dist/dev/activemq/activemq 2017-09-21 17:35:58 +01:00
.gitignore [AMQ-7502] Remove leveldb 2021-03-25 18:54:53 +01:00
Jenkinsfile [#8133] Add s390x as a parameter for Jenkins (#956) 2023-01-14 14:14:00 -06:00
KEYS NO-JIRA: Add gpg key for jbonofre 2019-08-26 10:31:32 -04:00
LICENSE AMQ-7454 - Remove xmpp artifacts 2020-03-26 11:36:41 +00:00
NOTICE Update copyright to include 2023 2023-02-11 07:28:02 +01:00
README.md Prepare 5.18.0 release 2023-03-14 13:55:24 +01:00
SECURITY.md Prepare 5.18.0 release 2023-03-14 13:55:24 +01:00
doap.rdf Update copyright to include 2023 2023-02-11 07:28:02 +01:00
pom.xml [maven-release-plugin] prepare for next development iteration 2024-07-18 14:53:29 +02:00

README.md

Welcome to Apache ActiveMQ

Apache ActiveMQ is a high performance Apache 2.0 licensed Message Broker. ActiveMQ supports several API and protocols:

  • JMS 1.1, 2.0.3, 3.1.0
  • AMQP
  • MQTT
  • HTTP/WS ActiveMQ also provides advanced features like:
  • network of brokers
  • scheduling
  • and much more!

Getting Started

To help you get started, try the following links:

Getting Started

Building

Examples

We welcome contributions of all kinds, for details of how you can help https://activemq.apache.org/contributing.html

Please refer to the website for details of finding the issue tracker, email lists, wiki or IRC channel at https://activemq.apache.org/

Please help us make Apache ActiveMQ better - we appreciate any feedback you may have.

Enjoy!

Licensing

This software is licensed under the terms you may find in the file named "LICENSE" in this directory.

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See https://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software:

ActiveMQ supports the use of SSL TCP connections when used with with a JVM supporting the Java Cryptography extensions https://www.oracle.com/java/technologies/javase/javase-tech-security.html. ActiveMQ does not include these libraries itself, but is designed to use them.