Возможно ли удаленно выставить загрузку 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

Надеюсь, это поможет вам выйти из кроличьей дыры.