2011-06-20 11 views
5

Tôi cần chuyển thông tin từ tập lệnh shell (được gọi từ ứng dụng dựa trên Linux) sang ứng dụng java.Java có thể tương tác với hàng đợi tin nhắn System V linux không?

Ống có tên là một sự đau đớn vì tôi không thể bắt đầu/dừng dịch vụ mà không xem xét các hậu quả phức tạp đến đầu đọc/ghi của ống.

Sockets là khó khăn vì nếu quá trình nghe được khởi động lại không có cơ chế xếp hàng, và triển khai đơn giản yêu cầu socket mới được liên tục tạo ra (khác các shell script sẽ nhận được rất phức tạp với check-and-khởi động lại-socket, và xếp hàng mã).

Gần đây tôi đã đọc về các hàng đợi tin nhắn này Hệ thống thông báo linux V/POSIX. Tôi đang chạy Fedora 12, và tự hỏi nếu có một cách tốt để cấu hình các hàng đợi tin nhắn và tương tác với chúng từ Java.

+1

bản sao có thể có của [Java Posix IPC Có API không?] (Http://stackoverflow.com/questions/2278208/java-posix-ipc-is-there-an-api) – bdonlan

+0

Bạn định tương tác như thế nào với chúng từ một kịch bản shell? – Gabe

+1

Sẽ dễ dàng hơn khi viết một trình bao bọc C đơn giản để liên kết một tập lệnh shell với hàng đợi thông điệp posix hơn là liên kết với JNI ... – bdonlan

Trả lời

1

Bạn không thể sử dụng chúng trực tiếp, bạn phải thực hiện một số thuật sĩ JNI để kết nối chúng với nhau.

Bạn đang gặp phải vấn đề gì với Ống? Java xem những tệp đó chỉ là các tệp chung chung. Tôi đã không sử dụng chúng rộng rãi, nhưng tôi không có bất kỳ vấn đề thực sự với Pipes. Các chi tiết duy nhất có đầu đọc ống cần phải liên tục mở lại đường ống nếu các nhà sản xuất không thể theo kịp.

Nhưng nếu một trong hai bên không thành công, phía bên kia chỉ chặn người khác đang khôi phục.

Bạn chỉ cần cẩn thận với bộ đệm đọc từ đường ống. Nếu bạn đọc từ đường ống vào bộ đệm, và sau đó thất bại, dữ liệu đó sẽ bị mất.

+0

Tôi đã kết thúc chiến đấu với các đường ống được đặt tên, chúng hơi lạ khi toàn bộ lớp đầu vào/đầu ra sẽ chặn trên hàm khởi tạo cho đến khi đầu kia của đường ống mở, vì vậy bạn phải làm việc này, và bạn đã đề cập, theo dõi cẩn thận cho EOF và mở lại. Phải mất một chút của khỉ xung quanh để tìm ra 3 hoặc 4 quirks cần thiết để có được nó đúng, nhưng tôi nghĩ rằng tôi nhận chúng bây giờ, nó chỉ có vẻ không thanh lịch, và mọi thứ đã được một chút phản trực giác. Cố gắng để có được kịch bản đúng là một vấn đề lớn, mèo, tee và utils phổ biến khác hành động rất kỳ quặc khi kết thúc khác mở/đóng cửa. –