在Java中将字符串转换为JMS字节消息

在Java中将字符串转换为JMS字节消息,java,Java,我正在尝试将字符串转换为JMS字节消息。有什么好办法吗 我需要这样做,因为我有一个方法,它接受一个被解密的字符串,我需要将它转换成ByteMessage来解密消息 谢谢您可以使用 byte[] String#getBytes() 要从字符串中获取字节数组并将其写入BytemMessage,可以使用 byte[] String#getBytes() byte[] bArray = "foo".getBytes("UTF-8"); BytesMessage msg = session.cre

我正在尝试将字符串转换为JMS字节消息。有什么好办法吗

我需要这样做,因为我有一个方法,它接受一个被解密的字符串,我需要将它转换成ByteMessage来解密消息

谢谢

您可以使用

byte[] String#getBytes()
要从字符串中获取字节数组并将其写入BytemMessage,可以使用

byte[] String#getBytes()
 byte[] bArray = "foo".getBytes("UTF-8");
 BytesMessage msg = session.createBytesMessage(); // throws JMSException
 msg.writeBytes(bArray);
从字符串中获取字节数组并将其写入字节消息

 byte[] bArray = "foo".getBytes("UTF-8");
 BytesMessage msg = session.createBytesMessage(); // throws JMSException
 msg.writeBytes(bArray);
当然,正如Arcadien所说,您需要在适当的环境中执行代码,以便从中获取javax.jms.Session对象

当然,正如Arcadien所说,您需要在适当的环境中执行代码,以便从中获取javax.jms.Session对象。

有点晚, 但迟做总比不做好

@Carlo的答案基本上是正确的, 但如果使用getBytes,则必须捕获异常 使用字符串参数

下面是getBytes调用的一个变体,它不会引发异常:

final byte[] byteArray = "blammy".getBytes(StandardCharsets.UTF_8);
final BytesMessage bytesMessage = session.createBytesMessage();

bytesMessage.writeBytes(byteArray);
StandardCharsets类定义了保证在Java平台的每个实现上都可用的字符集。

有点晚了, 但迟做总比不做好

@Carlo的答案基本上是正确的, 但如果使用getBytes,则必须捕获异常 使用字符串参数

下面是getBytes调用的一个变体,它不会引发异常:

final byte[] byteArray = "blammy".getBytes(StandardCharsets.UTF_8);
final BytesMessage bytesMessage = session.createBytesMessage();

bytesMessage.writeBytes(byteArray);

StandardCharsets类定义了保证在Java平台的每个实现上都可用的字符集。

您想确切知道什么?如何创建BytesMessage?您尝试过String.getBytesCharset吗?我想获取一个我已经拥有的字符串,并将其转换为BytesMessage。我对ByteMessage不太熟悉,因为我正在对现有代码进行更改,所以这样做是错误的吗?是的,我已经这样做了,我可以将字符串转换成bytes[]数组,但是有没有办法将其转换成BytesMessage?如果目标是加密消息,为什么不使用JMS提供程序的内置功能呢?您想确切知道什么?如何创建BytesMessage?您尝试过String.getBytesCharset吗?我想获取一个我已经拥有的字符串,并将其转换为BytesMessage。我对ByteMessage不太熟悉,因为我正在对现有代码进行更改,所以这样做是错误的吗?是的,我已经这样做了,我可以将字符串转换成bytes[]数组,但是有没有办法将其转换成BytesMessage?如果目标是加密消息,为什么不使用JMS提供程序的内置功能呢?BytesMessage是一个接口,而不是一个类。您必须在JMS中找到工厂或其实现才能使用它;虽然我对它的了解还不足以给出一个解决方案。BytesMessage是一个接口,而不是一个类。您必须在JMS中找到工厂或其实现才能使用它;虽然我知道的还不足以给你答案。