Возможно ли удаленно выставить загрузку bean в spring с помощью REST и httpInvoker
Мне нужно выставить некоторую услугу для удаленного использования клиентами Java (они должны использовать httpinvoker) и другие языки (они должны использовать REST).
Могу ли я настроить загрузку spring для демонстрации обоих? (Я бы не возражал, если бы использовались два отдельных экземпляра с разными портами, например, в этом сообщении).
Я отказался от идеи предоставления API для клиентов Java, которые внутренне используют REST, потому что довольно утомительно подключать все конечные точки REST в код вручную, используя RestTemplate.
Мне нравится концепция HttpInvoker, потому что ProxyFactoryBean
автоматически используется. Если Spring Remoting мог бы сделать это таким образом, чтобы это можно было сделать для JMS, AMQP и других, которые я бы возглавил таким образом.
Ответы
Ответ 1
Вы можете использовать что-то вроде этого. Предоставляйте свои услуги в качестве службы отдыха. Затем заставьте ваши java-клиенты использовать эти службы, используя http или другую библиотеку. Если заинтересована и другая сторона, они тоже могут потреблять ее по-своему.
Кроме того, вы можете создать свою собственную банку, которая будет использовать ваши службы отдыха, и пусть ваши клиенты java используют это, не зная о сервисе отдыха.
Ответ 2
Отображение конечных точек HTTP-вызовов в Spring Загрузка на самом деле настолько проста, что кажется, что чего-то не хватает. В @SpringBootApplication
, который имеет spring-webmvc
на своем пути (например, используя spring-boot-starter-web
POM), добавьте следующее определение bean:
@Bean(name = "/my.service")
public HttpInvokerServiceExporter myHttpInvokerServiceExporter(MyService myServiceImpl) {
HttpInvokerServiceExporter exporter = new HttpInvokerServiceExporter();
exporter.setServiceInterface(MyService.class);
exporter.setService(myServiceImpl);
return exporter;
}
Конечная точка HTTP-вызывающего абонента теперь отображается в /my.service
и не будет влиять на другие сопоставления. Вы можете добавить столько конечных точек, сколько захотите; а затем немного @RequestMapping
для REST сверху.
Ответ 3
Мы используем оба метода здесь. HttpInvoker для Java-to-Java-вызовов. Обычный JSON через HTTP для других клиентов (аналогично REST, но не true REST). Я думаю, что проект jsonrpc4j предоставляет хороший способ реализовать HTTP-материал.
Ответ 4
Посмотрите на spring -rest-invoker. Он связывает интерфейсы Java с службами REST. Это не решает проблему "разоблачения" службы, но значительно облегчает ее использование.
https://github.com/ggeorgovassilis/spring-rest-invoker
Ответ 5
HttpInvoker был сброшен после spring -интеграции 2.x: http://docs.spring.io/spring-integration/docs/2.0.x/reference/html/httpinvoker.html (! Важный заголовок дает подробности). В версиях 3.x и 4.x есть ссылка на HTTP-поддержку: http://docs.spring.io/spring-integration/docs/latest-ga/reference/html/http.html
Существует также другая публикация SO, в которой кто-то спрашивает о поддержке HTTP и spring для загрузки с некоторой соответствующей информацией: Spring Интеграция Http с spring Загрузка и @RequestMapping
Надеюсь, это поможет вам выйти из кроличьей дыры.