Отправка объекта через Интернет - PullRequest
7 голосов
/ 19 декабря 2009

Я определяю класс, а затем устанавливаю объект этого типа класса. Я хочу прозрачно отправить этот объект в другое приложение Java, работающее на другом компьютере. Какова лучшая технология для достижения этой цели?

Ответы [ 5 ]

11 голосов
/ 19 декабря 2009

Начните с изучения сериализации с помощью интерфейса Java Serializable . У Sun есть хорошая статья под названием Откройте для себя секреты Java Serialization API .

См. Учебник Java Sockets для получения информации о фактической передаче сериализованного объекта по сети.

8 голосов
/ 19 декабря 2009

вы можете создавать потоки объектов с помощью API Java и отправлять любые сериализуемые объекты. но вы должны иметь в виду, что они остаются незашифрованными по сети:

на стороне отправителя:

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

и на принимающей стороне:

ServerSocket server = new ServerSocket(1234);
Socket s = server.accept();
ObjectInputStream in = new ObjectInputStream(s.getInputStream());
CustomObject objectReceived = (CustomObject) in.readObject();
6 голосов
/ 19 декабря 2009

Есть много способов сделать это. Вот некоторые вещи, на которые стоит обратить внимание, и вы можете выбрать ту, которая лучше всего подойдет для вашего приложения.

  • J2EE
  • RMI
  • Сериализация объектов, помещающая биты в сокет
  • Webservices

Практически любая коммуникационная среда позволит вам перемещать объекты по сети тем или иным способом. Вам просто нужно просмотреть их и посмотреть, что работает для вашего приложения. Быстрый Google должен найти еще больше методов.

2 голосов
/ 02 сентября 2015

Java обеспечивает (двоичную) сериализацию объектов с использованием ObjectOutputStream (и ObjectInputStream). Вы можете просто записатьObject () в поток и readObject () на другом конце. Все, что вам нужно сделать, чтобы это работало, это реализовать интерфейс Serializable.

Но вместо того, чтобы делать это вручную, вас может заинтересовать переход на один уровень вверх и использование удаленного вызова метода. С RMI вы можете вызывать методы для объектов, которые живут в другой JVM, и вся сериализация и работа в сети происходят изнутри.

И для полноты картины также существует сериализация XML-бина, если вы не можете использовать двоичный формат. Этот формат XML очень универсален (читай: многословно и безобразно), но есть некоторые популярные библиотеки (например, XStream), которые создают альтернативные сериализации XML.

2 голосов
/ 19 декабря 2009

(де-факто) стандарт для реализации этого будет заключаться в использовании веб-службы , например, с использованием JAX-WS , который входит в состав Java 6. См. this учебник для примера java-first (т.е. с использованием аннотаций). Это довольно просто и легко.

Существуют и другие подходы, такие как Serialization через сокет , RMI, EJB, но при работе через Интернет веб-службы являются своего рода естественным выбором, поскольку они полагаются на существующих стандартах (SOAP, HTTP) и легко справляться с брандмауэрами (что может быть реальной проблемой для всех других решений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...