можно ли вызвать сервлет Java из кольца / compojure?

Мне нужно вызвать сервлет, написанный на Java, из веб-приложения Clojure, и я не понимаю, как это сделать.

При разработке веб-приложения на Java мне пришлось описать все сопоставления в web.xml. В Compojure, как я понимаю, я должен описывать маршруты. Итак, могу ли я привязать Java-сервлет к одному из таких маршрутов?

Извините, если мой вопрос глупый, но я много искал и не нашел ответа; Я только начинаю разработку для Интернета.


person Lexx Cherry    schedule 30.08.2011    source источник
comment
Сейчас я изучаю тестовые пакеты, предоставляемые Ring. Я обнаружил, что Ring позволяет преобразовывать свои обработчики в сервлеты. Существует функция run-servlet, которая фактически делает то, что я хочу - она ​​вызывает сервлет, созданный из обработчика, вызывая свой метод обслуживания. Но на данный момент я не могу сказать, что знаю, как правильно его использовать, потому что еще есть что изучить и попробовать.   -  person Lexx Cherry    schedule 30.08.2011


Ответы (2)


Два полезных указателя:

Вот пример того, как полностью сгенерировать сервлет Vaadin из Clojure на github

И вот вопрос SO о как сопоставить java-фильтр с маршрутами

person Nicolas Modrzyk    schedule 30.08.2011
comment
Я видел тот же пример для Vaadin, где класс сервлета был реализован в Clojure с прокси. Он работает отлично и частично отвечает моим целям, но не совсем. Я смотрел вопрос о фильтре сервлетов. Решение основано на уровне контейнера сервлета. Это не соответствует моим пожеланиям, потому что он основан на уровне контейнера сервлетов, но Ring предоставляет адаптер только для причала. Исправьте меня, если я ошибаюсь. Мне нужно обрабатывать все сопоставления для Java и Clojure с помощью Compojure / ring независимо от конкретного контейнера сервлета. - person Lexx Cherry; 30.08.2011

Предлагаю, есть только один способ справиться со своими задачами. Мне нужно вручную создать экземпляры сервлетов Java в веб-приложении Clojure и сформировать их параметры запроса и ответа. Тестовый пакет для Библиотека ring.util.servlet подробно описывает этот подход, но в случае превращения обработчика Ring в сервлет Java.

В случае развертывания приложения Clojure и сервлетов Java в контейнере сервлетов по отдельности нет необходимости определять дополнительные маршруты Compojure или обработчики Ring для путей, отображаемых контейнером.

Скажите, пожалуйста, неверны ли мои предложения.

person Lexx Cherry    schedule 01.09.2011