close
J2EE server: Weblogic
發生時機:Web project 呼叫 EJB 取回 訂單資訊物件OrderStatusVO時
EJB 去 DB查詢出資料,直接將entity裡的日期變數set給vo
但是web project 取到OrderStatusVO時
日期欄位卻是null
如果web project lib 用的是
Server_weblogic\modules\org.apache.openjpa_0.9.7.jar
則不會有exception
如果用的是openjpa-1.0.1.jar
則會出現
<2008/1/15 下午02時20分06秒 CST>
java.io.InvalidClassException: org.apache.openjpa.util.java$util$Date$proxy; local class incompatible: stream classdesc serialVersionUID = -2376150941703416254, local class serialVersionUID = -4069550581237679268
java.io.InvalidClassException: org.apache.openjpa.util.java$util$Date$proxy; local class incompatible: stream classdesc serialVersionUID = -2376150941703416254, local class serialVersionUID = -4069550581237679268
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:519)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1546)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
javax.ejb.EJBException: nested exception is: java.rmi.UnmarshalException: Incoming message header or abbreviation processing failed ; nested exception is:
java.io.InvalidClassException: org.apache.openjpa.util.java$util$Date$proxy; local class incompatible: stream classdesc serialVersionUID = -2376150941703416254, local class serialVersionUID = -4069550581237679268
所以
要將entity 裡 date型態的變數set 進 拿來傳遞的vo裡
以下作法會有問題
NasSkypeOrder so = soDAO.getSkypeOrder(no.getOrderId());
...
OrderStatusVO os = new OrderStatusVO();
os.setUsingDate(so.getSorderConfirmedDate());
以下作法就Ok,要再轉一次
NotifyVO nvo = new NotifyVO();
nvo.setStatusDate(new Date(vds.getVdataStatusDate().getTime()));
//vds is an entity
發生時機:Web project 呼叫 EJB 取回 訂單資訊物件OrderStatusVO時
EJB 去 DB查詢出資料,直接將entity裡的日期變數set給vo
但是web project 取到OrderStatusVO時
日期欄位卻是null
如果web project lib 用的是
Server_weblogic\modules\org.apache.openjpa_0.9.7.jar
則不會有exception
如果用的是openjpa-1.0.1.jar
則會出現
<2008/1/15 下午02時20分06秒 CST>
java.io.InvalidClassException: org.apache.openjpa.util.java$util$Date$proxy; local class incompatible: stream classdesc serialVersionUID = -2376150941703416254, local class serialVersionUID = -4069550581237679268
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:519)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1546)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
javax.ejb.EJBException: nested exception is: java.rmi.UnmarshalException: Incoming message header or abbreviation processing failed ; nested exception is:
java.io.InvalidClassException: org.apache.openjpa.util.java$util$Date$proxy; local class incompatible: stream classdesc serialVersionUID = -2376150941703416254, local class serialVersionUID = -4069550581237679268
所以
要將entity 裡 date型態的變數set 進 拿來傳遞的vo裡
以下作法會有問題
NasSkypeOrder so = soDAO.getSkypeOrder(no.getOrderId());
...
OrderStatusVO os = new OrderStatusVO();
os.setUsingDate(so.getSorderConfirmedDate());
以下作法就Ok,要再轉一次
NotifyVO nvo = new NotifyVO();
nvo.setStatusDate(new Date(vds.getVdataStatusDate().getTime()));
//vds is an entity
全站熱搜
留言列表