2009-12-19 4 views
7

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

+2

Вы имеете в виду, например, спутник, Интернет или AM/FM-радио? Или, если нет, можем ли мы увидеть класс? Дай нам код чувак! \ o/Все! Пока он все еще движется, немного .. – 0scar

+0

Кстати, вы попросили лучшую технологию, чтобы выполнить свой вопрос, а не образец кода, как это сделать. Вот почему у вас есть 3 ответа на использование технологий. Если вам нужен пример кода, попросите образец кода, и вам будет предоставлен образец кода от нескольких людей о том, как это сделать, используя разные технологии или используя то же самое, но у вас будет больше выбора. –

ответ

7

вы можете создавать потоки объектов с помощью 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

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

  • J2EE
  • RMI
  • Объект сериализации толкая биты через сокет
  • WebServices

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

2

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

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

1

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

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

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

Смежные вопросы