Каков был бы Spring способ использовать соединения TCP?

Я читаю и запись XML по соединению TCP (не HTTP) как часть веб-сервиса, который я разрабатываю, и я задавался вопросом, существует ли больше "springified" пути (или даже другие идеи) достижения, что я пробую ниже:

    InputStream is = null;
    OutputStream os = null;
    Socket s = null;
    try {
        s = new Socket(address, portNo);
        os = s.getOutputStream();
        os.write(msg.getBytes());
        os.flush();
        is = s.getInputStream();
        String xml = IOUtils.toString(is);
        return xml;
    } finally {
        IOUtils.closeQuietly(os);
        IOUtils.closeQuietly(is);
        if (s != null) s.close();
    }

Отметьте, у меня нет управления сервером, таким образом, я не думаю, что смогу использовать дистанционную работу Spring, но задавался вопросом, может ли это быть улучшено сродни JdbcTemplates пружины.

Править:

Отметьте, просто для уточнения IOUtils является свободным-городским-населением-io Apache...

7
задан beny23 19 January 2010 в 14:24
поделиться

3 ответа

Взгляните на Webservicetemplate . Это основная пружина абстракции обеспечивает доступ к клиентскому веб-сервису. Несмотря на то, что ваш сервер не является типичным веб-службой, пока он использует тот же шаблон запроса-ответ, вы все равно можете использовать это в качестве основы для вашего решения. Класс предоставляет крючки для каждой части связи (Marshalling, отправка запроса, получение ответа, неуместности и т. Д.). JavadoC перечисляет все шаги, необходимые для выполнения звонков веб-сервисов, и вы можете отключить все что угодно. Так, например, вы можете использовать встроенный Marshalling Support, но переопределить CreateConnection для создания пользовательского подключения TCP.

1
ответ дан 7 December 2019 в 05:23
поделиться

«Весенний подход» применяется здесь не к тому, как вы делаете коммуникации сокетов TCP, но как классы, которые совместно с этим классом взаимодействуют с ним.

Итак, я думаю, что «весенний подход» будет скрывать любой сокет связи позади сообщений (ужасное имя, я знаю) интерфейс, так что классы сотрудников должны иметь дело только с Сообщения И оставайся слепым к тому, что любой вид коммуникации низкоуровневого сокета продолжается для достижения отправки этого сообщения.

2
ответ дан 7 December 2019 в 05:23
поделиться

У меня установлено load.on.activate = 1 в моем sciteuser.properties, которые работают как очарование.

Редактировать:

Используйте его в сочетании с Save.on.deactivate = 1 и Reload.preserves.undo = 1 . knedocs расскажет вам больше.

-121--3612813-

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

Использование HTTP или RMI в качестве отправной точки сэкономит много хлопот на уровне сокета. Есть тонны хороших библиотек веб-сервисов для абстрактных деталей сокета от пользователя. Я бы порекомендовал использовать JAX-WS . Весна имеет реализацию JAX-WS в своем проекте Spring-WS. Apache CXF также позволяет конфигурацию веб-сервисов через пружину.

RMI также вариант. Возможность отказа от протокола RMI протокол от вашего кода, позволяющего сосредоточиться на функциональности. Он не дает вам доступа к сокетам, но это, вероятно, не то, что вы хотите сделать в любом случае.

0
ответ дан 7 December 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: