我正在從zookeeper讀取序列化對象的UI上進行反序列化,然後將其轉換爲JSON。出於某種原因,我無法取消對MQTopic對象的解除關聯。但是我能夠對其他對象做同樣的事情。readObject()之後的代碼不運行
這是將byte []轉換爲MQTopic對象的部分。
if (tester != null && tester.contains("com.ibm.mq.jms.MQTopic")) {
System.out.println(getValue());
ByteArrayInputStream in = new ByteArrayInputStream(this.value);
ObjectInputStream is = new ObjectInputStream(in);
System.out.println("after deserializing..");
topic = (MQTopic) is.readObject();
System.out.println("after typecasting..");
System.out.println(topic.getTopicName());
System.out.println(topic.toString());
is.close();
in.close();
}
這裏值是序列化後的對象的字節數組。 topic = (MQTopic) is.readObject();
後什麼也沒有運行。甚至沒有打印報表。程序既不終止,也不會引發或捕獲異常。
編輯:全法
public String getStrValue() {
FtpConnectionInfo ftp = null;
MQTopic topic = null;
try {
String tester = new String(this.value, "UTF-8");
if (tester != null && tester.contains("FtpConnectionInfo")) {
ByteArrayInputStream in = new ByteArrayInputStream(this.value);
ObjectInputStream is = new ObjectInputStream(in);
ftp = (FtpConnectionInfo) is.readObject();
in.close();
is.close();
Gson gson = new Gson();
return gson.toJson(ftp);
} else if (tester != null
&& tester.contains("com.ibm.mq.jms.MQTopic")) {
ByteArrayInputStream in = new ByteArrayInputStream(this.value);
ObjectInputStream is = new ObjectInputStream(in);
System.out.println("after deserializing..");
topic = (MQTopic) is.readObject();
System.out.println("after typecasting..");
System.out.println(topic.getTopicName());
System.out.println(topic.toString());
is.close();
in.close();
} else {
return new String(this.value, "UTF-8");
}
} catch (UnsupportedEncodingException ex) {
System.out.println("unsupported error ");
ex.printStackTrace();
//logger.error(Arrays.toString(ex.getStackTrace()));
} catch (Exception e) {
System.out.println("Exception in new logic.");
e.printStackTrace();
}
System.out.println("im out of try");
return null;
}
的FTP,如果環路正常工作,但主題循環不超過類型轉換工作。
編輯2:這給其他球隊存儲對象到動物園管理員
public static byte[] serialize(Object obj) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(out);
os.writeObject(obj);
return out.toByteArray();
}
字節[]存儲在動物園管理員,這就是我在我的UI我檢索。
編輯3:我做了一個調試進程,並在被調用的地方,這些是值。任何人都可以告訴我,如果對象是正確的?
您的代碼中是否啓用了記錄器?根據您的評論,可能在讀取對象時出現異常。 – Arvind
*有*是該線上的異常。 JVM不會隨機停止執行代碼。您是否嘗試過使用調試器來查看實際發生的事情? – Raniz
你的意思是試試看?我不明白記者的意思。 – v1shnu