2009-12-23 37 views
10

Tôi có một dll chứa mã C cũ, tôi gọi dll này qua JNI, nhưng đôi khi mã C bị lỗi và khiến JVM chấm dứt. Có cách nào để tránh va chạm JVM không? Tôi có thể xử lý lỗi JNI và để JVM tồn tại không? :)Xử lý sự cố JNI

Trả lời

3

Nếu đó là mã C bị lỗi, thì cách duy nhất để ngăn không cho nó lấy JVM với nó là để ngăn chặn mã C bị lỗi ngay từ đầu. Đó là một trong những mối nguy hiểm chính mà bạn nhận được khi viết mã JNI vì nó làm cho sự kết hợp của Java và C phần nào mỏng manh hơn so với một cái gì đó được viết bằng Java thuần túy.

4

Như Timo đã nói, bạn không có cách thay thế thực sự nào khác ngoài việc làm cho mã JNI mạnh mẽ hơn. Nếu bạn không thể làm điều đó (ví dụ nếu bạn không có nguồn) thì có lẽ bạn có thể đi cho một giải pháp liên tiến trình. Đặt mã JNI trong một quy trình máy chủ riêng biệt, thực hiện các cuộc gọi RMI hoặc HTTP qua. Nếu nó bị treo, hãy khởi động lại "máy chủ" nhưng JVM chính vẫn tồn tại. Rõ ràng là có một chi phí thực hiện, và sự gia tăng phức tạp, nhưng có lẽ bạn có thể đủ khả năng này?

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