Hỏi về java rmi

Chào mọi người. Giả sử mình có server chứa các lớp entity nhưng bên client mình chỉ có gui. Làm sao để mình hiển thị dữ liệu lên trên client đc ạ. Mình khong hiẻu cách đóng gói các entity hay project server và gửi về client bạn nào có thể hướng dẫn mình 1 chút hoặc gửi link cho mình tham khảo cũng đc ạ

Ps :client và server mình làm ở 2 project khác nhau . Giáo viên mình nói có làm thực thể y hệt bên server cũng không được

Vậy hiện giờ client của bạn lấy dữ liệu ở đâu để hiển thị? Bạn cần cho biết rõ hơn client của bạn có thể làm được gì thì tôi mới có thể trả lời chính xác.

Vì không biết cụ thể client của bạn có thể làm gì, tôi sẽ trả lời dựa trên giả thuyết đơn giản nhất là client của bạn có khả năng đọc dữ liệu từ file trên máy mà nó đang chạy để hiển thị. Trong trường hợp đó, bạn có thể làm như sau:

  1. Phía server, bạn sẽ tạo ra Web Service hay các REST APIs để đọc dữ liệu của server. Client sẽ giao tiếp với Server qua các API hay service này.
  2. Phía client, bạn sẽ tạo ra các lớp adapter để gọi Web Service hay REST API và nhận dữ liệu trả về từ các cuộc gọi này, sau đó ghi vào file cho client đọc.

Nếu cần gởi dữ liệu từ client cho server thì bạn cũng có thể sử dụng Web Service hay REST API.
Định dạng dữ liệu được trao đổi giữa client và server có thể theo định dạng XML hay JSON là các định dạng phổ biến hiện nay.

Cách này có ưu điểm là bạn sẽ không phải sửa đổi nhiều đến mã nguồn hiện tại nhưng cho phép ứng dụng của bạn trao đổi dữ liệu qua network và có thể được viết bằng nhiều ngôn ngữ khác nhau kể cả khi ứng dụng hiện nay của bạn đang dùng Java.

RMI là chuẩn riêng của Java để gọi method từ xa (trước đó nữa là CORBA). Vì vậy, ngày nay nó không còn được sử dụng nhiều mà được phát triển trở thành Web Service hay REST API là các chuẩn độc lập với ngôn ngữ và hiệu quả hơn. Còn nếu muốn đi xa hơn nữa thì bạn có thể nghiên cứu sử dụng gRPC hay GraphQL.

Bạn có thể dễ dàng tìm ra các hướng dẫn để tạo ra Web Service hoặc REST API với Java, dưới đây là một vài Web site tôi tìm ngẫu nhiên với các từ khóa Java Web Service và Java REST API tutorial:

3 Likes

Mình đang làm đồ án về desktop app thôi bạn , ý mình là ở server mình có các thực thể như sản phẩm hóa đơn , khi thêm xóa sửa chỉ cần dùng hibernate add vào mongo qua 1 thể hiện của entity , nhưng lúc này ở client(desktop app) mình muốn lấy thông tin 1 sản phẩm chẳng hạn , lúc này mình lại không biết làm sao để dùng các entity ở server ấy bạn , server Serialization đối tượng nhưng ở client mình deSerialization thành entity để phục vụ việc hiển thị lên bảng sản phẩm thì mình làm sao để làm đc vì entity chỉ có trên server , giảng viên mình nói mình phải đóng gói project server gì đó như…(mình đang học java phân tán nên không dùng cái rest apis hay web service đc bạn)

client và server là 2 project khác nhau ấy bạn

Nếu vậy thì bạn chỉ đơn giản là dùng serialization và deserialization để trao đổi các object giữa client và server qua network thôi. Bạn có thể tham khảo ví dụ ở đây:

3 Likes

như vậy thì entity của server vẫn ko dùng cho client được . bởi mình muốn hiển thị thông tin lên table thì cần thể hiện của entity , và các entity này lại năm trên server … yêu cầu là client và server năm ở 2 project khác nha u

Dường như bạn vẫn chưa đọc kỹ câu trả lời của tôi: entity cũng chỉ là các object. Và bạn hoàn toàn có thể dùng kỹ thuật serialization và deserialization để gởi các object qua network. Bạn có thể viết code để chương trình server và client của bạn gởi và nhận các entity (cũng là các object) qua socket và stream. Điều đòi hỏi duy nhất là client và server của bạn phải có cùng mã định nghĩa các object (hay entity) sẽ được trao đổi. Việc viết mã này không khó. Bạn chỉ cần tìm với keyword “serialization and deserialization over network in Java” là có thể thấy nhiều ví dụ.

4 Likes

tui giải quyết được rồi bạn , t đóng gói project của server rồi add vào lib của client vì đây là ứng dụng desktop thôi bạn

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?