2014-12-06 5 views
0

Это похоже на предыдущую публикацию, но фокусируется на конкретном аспекте, потому что я действительно должен знать ответ на этот конкретный вопрос, прежде чем я смогу даже продвинуться вперед на этом этапе. Мне нужно отправить информацию в виде объекта JSON из приложения Java SE в веб-приложение Java EE. Веб-приложение Java EE работает от NetBeans в GlassFish. Приложения Java SE и Java EE работают на одном компьютере.Запрос на сокет или HTTP POST?

Что было бы лучшим средством для взаимодействия между двумя приложениями, учитывая, что они оба находятся на одном компьютере: соединение сокета, соединение с почтовым сообщением HTTP или комбинация соединения сокета и HTTP-сообщения?

Я бы очень признателен за любые ответы.

+0

HTTP требует сокетов, поэтому любое HTTP-соединение также является подключением к сокету, но не соединение сокетов с HTTP-соединением. Таким образом, HTTP вводит дополнительные накладные расходы. –

+0

Кстати, спасибо за ответ. Соединило бы соединение сокета сделать то, что мне нужно сделать в описанном выше сценарии? – Daron

+0

Сокетное соединение может использоваться для переноса любого потока байтов, как и HTTP. В обоих случаях вам необходимо сериализовать объект. –

ответ

1

Выбор между самопринятым сокетом или использованием HTTP, если вы уже используете Glassfish, не вызывает затруднений: используйте HTTP.

Glassfish уже доказал и протестировал код, чтобы поговорить с клиентами через сокет-соединение, реализовал протокол HTTP protocoll, использует пулы потоков и т. Д. Единственное, что вам нужно сделать, это реализовать небольшой класс сервлета, абстрагирующий всю сложную транспортировку подробности прочь.

На стороне клиента вы можете использовать библиотеку, такую ​​как Apache HTTP client.

Уверенный, что вы можете использовать простые розетки. Но хотите ли вы реализовать свой собственный протокол? Зачем? И тогда он может работать для клиента и сервера на одном компьютере. Но, возможно, позже вы захотите использовать соединение через Интернет с прокси-сервером или межсетевым экраном между ними. С помощью HTTP с использованием правильных библиотек это не проблема.

+0

vanje ... будет ли запрос HTTP-сообщения разрешать мне общаться на одном компьютере? Кроме того, на стороне Java EE, сколько мест я буду помещать в код? Поместил бы код только в один сервлет. Или мне придется закодировать xml-файл или любые другие места? – Daron

+0

Да, он будет работать на одном компьютере. Используйте интерфейс loopback 127.0.0.1 (localhost). Вы можете написать свой сервлет без необходимости настраивать XML-файл. Посмотрите здесь http://stackoverflow.com/questions/5031018/how-to-invoke-a-servlet-without-mapping-in-web-xml – vanje

+0

Я все еще просматриваю информацию, которую вы мне прислали, и большое спасибо за то, что нашли время, чтобы помочь мне. Это так важно для меня. Два последних вопроса: имеет ли значение, где размещается этот сервлет, и нужно ли jar Apache HTTP Client разместить в приложениях Java SE и Java EE? – Daron

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