2008-12-03 1 views
7

Tôi có một ứng dụng java được kết nối với chế độ xem trên một db Oracle từ xa.Màn hình thay đổi bảng Oracle

Có ai biết cách nào trong Java để theo dõi bảng này để thay đổi không? I E. nếu có chèn thông tin cập nhật, vv tôi sẽ cần phải phản ứng.

+0

Theo dõi bảng cơ sở dữ liệu để thay đổi là 'mùi thiết kế'. Bạn nên xem xét giới thiệu một kiến ​​trúc hướng sự kiện (EDA) được hỗ trợ bởi một Enterprise Service Bus (ESB). Ví dụ: Mule (www.mulesoft.com). –

+5

Trả lời đúng hơn – Gaius

Trả lời

5

Bạn có thể đặt trình kích hoạt INSERT/UPDATE/DELETE trên bảng để thực hiện một số hành động khi thay đổi 'dữ liệu' được thực hiện cho bảng. (trái ngược với thay đổi cấu trúc của bảng)

Tôi tin rằng 10g cũng hỗ trợ trình kích hoạt trên chế độ xem.

nhưng tôi không chắc chắn làm thế nào bạn có thể notifiy quá trình java này khác sau đó bằng cách bỏ phiếu.

xin lỗi.

bạn có thể có thể tạo một số giải pháp trong đó ứng dụng java có máy chủ 'nghe' và cơ sở dữ liệu đẩy nó trở lại một thông báo. nhưng có vẻ khó để duy trì.

Justin Cave trong các nhận xét cho thấy bạn có thể định cấu hình luồng Oracle để gửi các bản ghi thay đổi lôgic (LCR) mà ứng dụng Java có thể đăng ký qua JMS. Hoặc trình kích hoạt có thể ghi các bản ghi vào một Hàng đợi Tiên tiến mà Java có thể đăng ký thông qua JMS.

bạn vẫn sẽ cần phải được cảnh giác với transations Oracle .. do cách giao dịch Oracle làm việc, cò sẽ cháy về việc thay đổi, nhưng nó cũng có thể bắn nhiều lần ..

và trong anycase sự ứng dụng java sẽ không thể 'xem' các thay đổi cho đến khi một cam kết được thực hiện.

+0

Tùy thuộc vào mức độ kiến ​​trúc cần thiết, bạn có thể định cấu hình Luồng Oracle để gửi các bản ghi thay đổi lôgic (LCR) mà ứng dụng Java có thể đăng ký qua JMS. Hoặc trình kích hoạt có thể ghi các bản ghi vào một Hàng đợi Tiên tiến mà Java có thể đăng ký thông qua JMS. –

+0

Cảm ơn rực rỡ trông giống như vé – LenW

+0

Vấn đề là luồng hoạt động ở cấp đối tượng, không chắc chắn bạn có thể định cấu hình Luồng để gửi LCR cho chế độ xem. Có phải chế độ xem như vậy mà bạn có thể xác định một số (các) bảng để đăng ký các thay đổi và sau đó thăm dò ý kiến ​​xem liệu hàng bạn quan tâm thực sự có thay đổi không? –

10

Nhìn vào Oracle Change Notification, một tính năng thú vị của Oracle.

Từ tài liệu Oracle: "Thông báo thay đổi cơ sở dữ liệu là một tính năng cho phép ứng dụng khách đăng ký truy vấn với cơ sở dữ liệu và nhận thông báo cơ sở dữ liệu khi giao dịch DML hoặc DDL cam kết. "

+0

Có vẻ như nó chỉ hoạt động cho các cuộc gọi lại PL/SQL hoặc C nhưng đó là khá nhiều thứ tôi cần - bây giờ làm thế nào để nối nó lên ứng dụng java ... :) – LenW

+0

Tôi tin rằng Oracle có thể gọi các thủ tục lưu sẵn Java, tôi chỉ không biết làm thế nào để làm điều đó. Tuy nhiên, http://www.oracle.com/technology/sample_code/tech/java/jsp/oracle9ijsp.html có thể trợ giúp. – Powerlord