2010-09-17 21 views
6

Özellikleri bir JMS iletisinden diğerine kopyalamanın kolay bir yolu var mı?Kopya JMS İleti özellikleri

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; 
      ... 
     } 
    } 
} 

Ama bu ciddi çirkin:

böyle bir şey tahmin edebilirsiniz. başka bir yol Burada

cevap

9

olmalı ben ile sona erdi çözüm ...

@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); 
    } 
} 
+1

A LinkedHashMap düzeni korumak için daha iyidir var – mcoolive