2015-10-16 82 views
0

我有一個場景,我必須將JMS消息保存在磁盤上。我寫使用GSON庫JSON格式的消息如下:將JSON字符串轉換爲JMS消息

Gson gson = new Gson(); 
String json = gson.toJson(message); 
bufferedWriter.write(json); 

但是,當我嘗試讀取這個消息,

Message m = gson.fromJson(json, Message.class); 
System.out.println(m.getJMSType()); 

我得到一個異常:

java.lang.RuntimeException: Unable to invoke no-args constructor for interface javax.jms.Message. Register an InstanceCreator with Gson for this type may fix this problem. 
    at com.google.gson.internal.ConstructorConstructor$12.construct(ConstructorConstructor.java:210) 
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:207) 
    at com.google.gson.Gson.fromJson(Gson.java:814) 
    at com.google.gson.Gson.fromJson(Gson.java:779) 
    at com.google.gson.Gson.fromJson(Gson.java:728) 
    at com.google.gson.Gson.fromJson(Gson.java:700) 

如何我從Json字符串中讀取JMS消息嗎?

回答

0

Message是一個接口。 Gson無法初始化它。如果實際的實現類是已知的/你的控制之下 - 你可以用一些替代反序列化一樣

Message m = gson.fromJson(json, ActiveMQBlobMessage.class); 

否則,如果你需要的界面 - 你可以看this崗位。