Самый простой способ сопоставить URL с обработчиками запросов в Java - PullRequest
0 голосов
/ 22 июня 2011

Я создаю прототип простого RPC-сервера на Java для внутреннего приложения.

Хотя в конечном итоге я хотел бы переключиться на специализированную высокопроизводительную RPC-библиотеку, такую ​​как MessagePack, Apache Avro или привязки Java, к 0mq, сейчас я бы хотел сделать вещи максимально простыми, поэтому я начинаю с JSON через HTTP. Я хотел бы использовать Jetty, чтобы я мог встраивать веб-сервер и максимально упростить установку и развертывание. Но у меня нет большого опыта работы с Java webdev, и я зацикливался на очень простой задаче - связать каждый из определенных объектов-обработчиков запросов с определенным URL-адресом. У меня общее впечатление, что это может быть то, для чего используется файл web.xml, но я бы предпочел подключить его в исходный код, если это возможно.

Я должен подчеркнуть, что мне не нужны интересные функциональные возможности веб-приложений, такие как сессии, шаблоны, доступ к базе данных и т. Д. Мне просто нужно получить строку JSON из тела запроса POST, выполнить что-то, а затем написать строку в ответе. ,

Так что, в общем, каков наилучший способ, скажем, написать два обработчика запросов (сервлеты?), Которые возвращают тело запроса в верхнем и нижнем регистре соответственно и регистрируют их с путями "/ upper" и "/ lower" в мой сервер, желательно без использования файла конфигурации. Это будет происходить во встроенном приложении Jetty, но вам точно не нужно зависеть от этого, если вы не хотите.

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Лично я бы сделал это с Spring.Spring может многое сделать, и, как вы сказали, вам не нужно тонны веб-функций, но вы все равно можете выбирать из них нужные вам функции.

Для того, что вам нужно, вы бынастройте Spring с одним контроллером и используйте аннотацию @ResponseBody для метода, обрабатывающего запрос.Затем вы говорите Spring для сериализации объектов ответа в JSON (я думаю, что это на самом деле по умолчанию).Затем Spring обрабатывает сериализацию для вас, а ваш код имеет дело только с объектами Java.

Вот более подробная статья о функциональности, о которой я говорю: http://java.dzone.com/articles/spring-3-rest-json-path-variables

, если вы будете искать вокругвы, вероятно, увидите множество примеров с кучей неприятных настроек xml, но не волнуйтесь, более поздние версии Spring могут быть настроены с помощью всего лишь нескольких строк кода Java.

Чтобы обратиться к вашей заметке оиспользуя Avro, это на самом деле не так сложно, как вы могли бы подумать, чтобы настроить его.Вот полный пример приложения, использующего Avro внутри контейнера сервлета для вашего серверного компонента: http://code.google.com/p/avro-http-example/wiki/Guide

0 голосов
/ 22 июня 2011

Если вы не хотите настраивать конфигурационный файл, Jetty API должен быть очень удобным для вас.Начните здесь .

...