2012-07-19 21 views
5

Tôi có một ứng dụng web java được triển khai trong hai EAR - một cho tầng UI (chứa mô-đun WAR) và một cho tầng nghiệp vụ (chứa một mô-đun EJB). Cả hai tầng được triển khai đến Máy chủ ứng dụng WebSphere 7. Các tầng được kết nối thông qua các hạt phiên không trạng thái EJB 3.0. Các hạt cà phê được nhìn lên thông qua JNDI.Các UID tuần tự không khớp trong EJB Phương thức từ xa - java.util.date & DBTimestamp

Chúng tôi sử dụng Hibernate để lưu giữ lâu bền và cơ sở dữ liệu DB2.

Khi cuộc gọi EJB từ xa được trả lại, các lỗi sau xảy ra trên các mặt hàng:

java.rmi.MarshalException: CORBA MARSHAL 0x4942f896 No; nested exception is: 
    org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Mismatched serialization UIDs : Source (RepId RMI:java.util.Date:AC117E28FE36587A:686A81014B597419) = 686A81014B597419 whereas Target (RepId RMI:com.ibm.db2.jcc.DBTimestamp:AA774DBE96ECCE99:7AFCE1FB570D419C) = 7AFCE1FB570D419C vmcid: IBM minor code: 896 completed: No 

Trường java.util.Date trên đối tượng đang được trả lại từ Hibernate như một lĩnh vực com.ibm.db2.jcc.DBTimestamp, kéo dài java.sql.Timestamp kéo dài java.util.Date . Vì nó là một phân lớp của java.util.Date và có thể tuần tự hóa, nên điều này không được xử lý?

Tôi đã nói chuyện với một người có kinh nghiệm nhiều hơn, người đã nói nguyên nhân có khả năng là phiên bản JVM hoặc DBTimestamp phiên bản lớp khác nhau giữa máy chủ web cấp doanh nghiệp và WAS. Cả hai máy chủ đều có cùng phiên bản JVM, WAS và JAR.

Tôi cũng có máy chủ WAS 7 cục bộ, nơi cả hai cấp được triển khai vào cùng một máy chủ. Các EJB vẫn được giải quyết từ xa thông qua một cuộc gọi JNDI đến localhost. Ứng dụng hoạt động tốt trên máy chủ cục bộ của tôi. Sự khác biệt duy nhất tôi biết là một phiên bản vi mô khác của WAS, cũng như triển khai cả hai tầng cho cùng một máy chủ.

nguyên nhân của vấn đề là gì? Có phải lớp DBTimestamp không thể tìm thấy trên tầng web hay phiên bản của lớp khác nhau? Hay nó là một vấn đề với đa hình, hay cái gì khác hoàn toàn?

Ngoài câu trả lời, tôi cũng đánh giá cao bất kỳ lời khuyên nào về những gì gỡ lỗi để thử - Tôi hết ý tưởng.

Trả lời

2

Tôi đã cố gắng khắc phục sự cố bằng cách đóng gói JAR trình điều khiển DB2 có liên quan trong EAR cấp web.

Nguyên nhân của sự cố là do lớp không có sẵn trên đường dẫn lớp của tầng web. Tôi sẽ cần phải điều tra việc thiết lập môi trường để tìm ra lý do tại sao nó không có sẵn, nhưng ít nhất vấn đề là rõ ràng bây giờ.

Các vấn đề liên quan