2009-12-19 31 views
7

Tôi định nghĩa một lớp và sau đó tôi instate một đối tượng thuộc loại lớp đó. Tôi muốn gửi đối tượng này đến một ứng dụng Java khác chạy trên một máy tính khác nhau một cách minh bạch. Công nghệ tốt nhất để thực hiện điều này là gì?Gửi một đối tượng qua Internet

+2

Ý của bạn là - vệ tinh, Internet hoặc đài AM/FM? Hoặc nếu không, chúng ta có thể thấy lớp học không? Hãy cho chúng tôi mã dude! \ o/Bất cứ điều gì! Miễn là nó vẫn đang di chuyển, một chút .. – 0scar

+0

BTW, bạn yêu cầu công nghệ tốt nhất để thực hiện câu hỏi của bạn không phải mẫu mã làm thế nào để làm điều đó. Đó là lý do tại sao bạn có 3 câu trả lời cho các công nghệ để sử dụng. Nếu bạn muốn mã mẫu sau đó yêu cầu mã mẫu và bạn sẽ được cung cấp mã mẫu từ nhiều người về cách thực hiện bằng cách sử dụng các công nghệ khác nhau hoặc sử dụng cùng một công nghệ nhưng bạn sẽ có nhiều lựa chọn hơn. –

Trả lời

7

bạn có thể tạo luồng đối tượng bằng cách sử dụng API java và gửi bất kỳ đối tượng tuần tự nào. nhưng bạn sẽ phải nhớ rằng những đi không được mã hóa thông qua mạng:

về phía người gửi:

CustomObject objectToSend=new CustomObject(); 
Socket s = new Socket("yourhostname", 1234); 
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); 
out.writeObject(objectToSend); 
out.flush(); 

và ngày kết thúc nhận:

ServerSocket server = new ServerSocket(1234); 
Socket s = server.accept(); 
ObjectInputStream in = new ObjectInputStream(s.getInputStream()); 
CustomObject objectReceived = (CustomObject) in.readObject(); 
6

Có rất nhiều cách để thực hiện việc này. Dưới đây là một số điều cần xem xét và bạn có thể chọn một thứ phù hợp nhất với ứng dụng của mình.

  • J2EE
  • RMI
  • Object Serialization đẩy các bit trên một Socket
  • Webservices

Khá nhiều bất kỳ khuôn khổ truyền thông sẽ cho phép bạn để đẩy đối tượng qua mạng bằng cách này hay khác. Bạn chỉ cần xem lại chúng và xem chúng hoạt động cho ứng dụng của bạn. Một google nhanh chóng sẽ tìm thấy nhiều phương pháp hơn nữa.

2

Một tiêu chuẩn (de facto) để thực hiện điều này, hãy sử dụng dịch vụ web , ví dụ: sử dụng JAX-WS được gói trong Java 6. Xem this tutorial cho mẫu java đầu tiên (tức là sử dụng chú thích). Điều này là khá thẳng về phía trước và dễ dàng.

Có cách tiếp cận khác như Serialization hơn một Socket, RMI, EJB nhưng, khi làm việc trên Internet, các dịch vụ web là một loại lựa chọn tự nhiên như họ dựa trên các tiêu chuẩn hiện hành (SOAP, HTTP) và đối phó dễ dàng với tường lửa (có thể là một vấn đề thực sự cho tất cả các giải pháp khác).

1

Java cung cấp tuần tự đối tượng (nhị phân) bằng cách sử dụng ObjectOutputStream (và ObjectInputStream). Bạn chỉ có thể writeObject() vào luồng và readObject() ở đầu bên kia. Tất cả những gì bạn cần làm để làm việc này là thực hiện giao diện Serializable.

Nhưng thay vì làm điều đó theo cách thủ công, bạn có thể quan tâm đến việc đưa nó lên một cấp và sử dụng Gọi phương thức từ xa. Với RMI, bạn có thể gọi các phương thức trên các đối tượng sống trong một JVM khác, và tất cả các serialization và networking xảy ra dưới mui xe.

Và vì mục đích hoàn chỉnh, cũng có xê-ri đậu XML, nếu bạn không thể sử dụng định dạng nhị phân. Định dạng XML đó rất chung chung (đọc: tiết và xấu), nhưng có một số thư viện phổ biến (như XStream) tạo ra các chuỗi XML thay thế.

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