Копировать свойства сообщения JMS
есть ли простой способ копирования свойств из одного сообщения JMS в другое?
Я могу представить что-то вроде этого:
private void copyMessageProperties (Message msg1, Message msg2) throws JMSException {
Enumeration srcProperties = msg1.getPropertyNames();
while (srcProperties.hasMoreElements()) {
String propertyName = (String) srcProperties.nextElement ();
// Now try to read and set
try {
Object obj = msg1.getObjectProperty (propertyName);
msg2.setObjectProperty (propertyName, obj);
continue;
} catch (Exception e) {}
try {
String str = msg1.getStringProperty (propertyName);
msg2.setStringProperty (propertyName, str);
continue;
...
}
}
}
но это серьезно некрасиво. Должен быть другой способ!--2-->
1 ответов
вот решение, которое я получил...
@SuppressWarnings("unchecked")
private static HashMap<String, Object> getMessageProperties(Message msg) throws JMSException
{
HashMap<String, Object> properties = new HashMap<String, Object> ();
Enumeration srcProperties = msg.getPropertyNames();
while (srcProperties.hasMoreElements()) {
String propertyName = (String)srcProperties.nextElement ();
properties.put(propertyName, msg.getObjectProperty (propertyName));
}
return properties;
}
private static void setMessageProperties(Message msg, HashMap<String, Object> properties) throws JMSException {
if (properties == null) {
return;
}
for (Map.Entry<String, Object> entry : properties.entrySet()) {
String propertyName = entry.getKey ();
Object value = entry.getValue ();
msg.setObjectProperty(propertyName, value);
}
}