Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Дублирование одинаковых веб-сервисов  [new]
JDS
Member

Откуда:
Сообщений: 651
Есть кучка SOAP веб-сервсиов, с одинаковым wsdl (т.е. отличаются только адреса этих сервисов).
Задача сделать клиент для каждого сервиса (т.е. задеплоить на веб-сервер несколько клиентов, каждый из которых будет работать со своим сервисом).

Пока делаю так:
1. Один общий проект, в котором генерим клиент на базе wsdl средствами ide (нетбинз)
2. В одном из классов (из тех, что сгенерированны по wsdl) перед тем как сбилдить, руками прописываем нужный адрес сервиса.
3. Билдим, даем варнику нужное имя и деплоим на сервер.
4. Повторяем 2-3 по числу пар клиент-сервер

Но по-моему, это корявый подход.

Поэтому вопрос.
Какова зе бест практис в такой ситуации?
Когда штук 20 веб-сервисов с одинаковым интерфейсом и для каждого надо сделать отдельный клиент и задеплоить на одном сервере.

Например хотелось бы доставать линк на требуемый сервис по настройкам в БД (вместе с другими настройками клиента) по имени приложения например. То есть перед сборкой в конфиге прописываем параметр типа "имя приложения" и дальше по нему из БД тащим все настройки клиента. Пока начал курить спринг с его @Configuration, может там что путное найдется.

А возможно будет ситуация, когда надо наоборот быстро перекомпилить все клиенты, а не собирать по одному из одного шаблонного проекта. Тогда наверно проще иметь кол-во проектов по пол-ву клиентов и не мучиться. А возможно например что-то общее вынести в библиотеку и если что, то менять только ее с передеплоем приложений.

Наверняка есть варианты автоматизированной сборки скриптами, пока не смотрел.

В общем как по-человечьи сейчас делают? )
15 июл 19, 20:45    [21927071]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
andreykaT
Member

Откуда:
Сообщений: 2421
Если спринг то там есть профили.
15 июл 19, 21:15    [21927084]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
irbis_al
Member

Откуда: Симферополь
Сообщений: 1545
JDS
В одном из классов (из тех, что сгенерированны по wsdl) перед тем как сбилдить, руками прописываем нужный адрес сервиса.

Я вот это не понял "ВААЩЕ".
1.Вы сгенерировали классы на основе wsdl ...он как я понял одинаков...разные только url
ну так вперёд

mport javax.xml.namespace.QName;
import javax.xml.ws.Service;

private Webservice get_client(String url){
        Service service = Service.create(
                        new URL(url+"/webserviceService/webservice?wsdl"),
                        new QName("urn:HolldataIntf-IXmldata", "webserviceService"));
        Webservice websoap=service.getPort(Webservice.class);
return websoap;
//"/webserviceService/webservice?wsdl" Это уже Ваши pointы
//"urn:HolldataIntf-IXmldata", "webserviceService" Ваши xml namespacы
//Webservice.class Это Ваш сгенерированный

}
15 июл 19, 21:21    [21927085]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
chpasha
Member

Откуда:
Сообщений: 8457
та даже профили не нужны, в спринге проперти можной туевой хучей способов передать извне в рантайме. Главное чтоб клиент умел этот адрес подхватывать - именно в эту сторону и нужно копать
15 июл 19, 21:23    [21927089]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
JDS
Member

Откуда:
Сообщений: 651
Ок, спасибо всем откликнувшимся. Тогда буду пробовать дальше.
15 июл 19, 22:03    [21927105]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
Sergunka
Member

Откуда: Bay Area, CA
Сообщений: 1973
JDS
Ок, спасибо всем откликнувшимся. Тогда буду пробовать дальше.


Смотрите в сторону Factory Method дезайн патерн.
16 июл 19, 00:15    [21927157]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
JDS
Есть кучка SOAP веб-сервсиов, с одинаковым wsdl (т.е. отличаются только адреса этих сервисов).
Задача сделать клиент для каждого сервиса (т.е. задеплоить на веб-сервер несколько клиентов, каждый из которых будет работать со своим сервисом).

Не совсем понятно что ты собираешся делать. Деплой - это вообще другое. Это не про разработку.
Почитай про всякие там Jenkins, TeamCity, Octopus. Задачи девопса должны решаться девопскими инструментами.

Распиливание задачи на 20 или на 200 веб-сервисов - это не инженерная а больше организационная задача.
Если ты будешь делать сам - то делай как угодно. Но в качестве метрики эффективности бери количество
мышко-кликов. Чем их меньше тем твоя автоматизация лучше.

Spring конфигурируется дохрена способами и там нет идейно-правильного или вообще неправильного.
Профили - это тоже гуд. Можно юзать.
16 июл 19, 00:59    [21927166]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
JDS
Когда штук 20 веб-сервисов с одинаковым интерфейсом и для каждого надо сделать отдельный клиент и задеплоить на одном сервере.

Перед ними сделать ОДИН веб сервис. Они же одинаковы.
Например, есть 20 одинаковых mail.ru с одинаковым API
дайПочту()
Так?
irbis_all прав. Снаружи вызов одного ВЕБ ПРИЛОЖЕНИЯ, а в коде перебирай рандомно свои адреса. Только смысл то какой?
Это балансировщик получается)).
Ну или ты понятия не имеешь что такое SOAP.
JDS
Например хотелось бы доставать линк на требуемый сервис по настройкам в БД (вместе с другими настройками клиента) по имени приложения например.

Посмотри балансировщик ngnix
16 июл 19, 07:19    [21927197]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
irbis_al
Service service = Service.create(
                        new URL(url+"/webserviceService/webservice?wsdl"),
я так понял, у него они разные и 20 штук
Service service = Service.create(new URL(url1)) 
Service service = Service.create(new URL(url2)) 
... 
Service service = Service.create(new URL(url20)) 
16 июл 19, 07:31    [21927200]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
JDS
Member

Откуда:
Сообщений: 651
PetroNotC Sharp, балансировщик нужен например в кластере, у меня не кластер, а именно разные SOAP клиент-сервер, но с одинаковым интерфейсом. Как заметил myton, задача действительно ближе к девопс видимо, но пытаюсь еще решить средствами из другой задачи собственно разработки )
16 июл 19, 07:36    [21927201]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
JDS
балансировщик нужен например в кластере
да. Ты так и описал задачу.
Кластер это несколько ОДИНАКОВЫХ СЕРВИСОВ.
Прочти вики что такое кластер.

JDS
задача действительно ближе к девопс видимо,
ты внятно её не описал. Мы тут все и гадаем.
Тебе даже код пример дали.
И вообще принято каждому ответить, раз вопрос задал.
16 июл 19, 07:41    [21927203]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
ТС, все методы 20ти сервисов одинаковы. А данные получаемые?
16 июл 19, 07:42    [21927204]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
JDS
девопс
ну и девопс тебе скажет что нужно 1 веб приложение и деплоить нужно одно.
16 июл 19, 07:48    [21927207]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
irbis_al
Member

Откуда: Симферополь
Сообщений: 1545
PetroNotC Sharp
irbis_al
Service service = Service.create(
                        new URL(url+"/webserviceService/webservice?wsdl"),
я так понял, у него они разные и 20 штук
Service service = Service.create(new URL(url1)) 
Service service = Service.create(new URL(url2)) 
... 
Service service = Service.create(new URL(url20)) 


Да нет же ...функция возвращает уже готового клиента
 Soapclient1=get_client(url1)
 Soapclient2=get_client(url2)
 Soapclient3=get_client(url3)

Soapclient1.myMethod1(params);
.....
А скорее всего в цикле
for (url in arrayurls){
Soapclient=get_client(url);
Soapclient.Mymethod1(params)
}
16 июл 19, 08:27    [21927212]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
irbis_al,
Да.
Поэтому смысл постановки такого изврата и задачи у меня полностью теряется.
irbis_al
А скорее всего в цикле

Рандомно)))
16 июл 19, 08:53    [21927230]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
JDS
Member

Откуда:
Сообщений: 651
Ребят, пока все понятно, буду ковырять дальше, спасибо большое.
PetroNotC Sharp, в общем у меня не кластер в любом случае. Условно, сеть офисов и с каждым обмен своими сообщениями, но формат одинаковый.
Да можно сделать одно приложение и раскидывать по разным точкам, можно сделать приложение в неск потоков, но (пока) рассматривается вариант именно каждому офису свое клиентское приложение.
16 июл 19, 09:08    [21927240]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
JDS
Условно, сеть офисов и с каждым обмен своими сообщениями, но формат одинаковый.
допустим.

JDS
Да можно сделать одно приложение и раскидывать по разным точкам, можно сделать приложение в неск потоков, но (пока) рассматривается вариант именно каждому офису свое клиентское приложение.
чудак человек.
Десктоп?
Тогда прчему нельзя сказать что каждому офису ОДИН И ТОТ ЖЕ КЛИЕНТпод названием " а ля эксель"?
Веб?
Тогда расшифруй "каждому офису своё приложение"?
Жесть какая то.
16 июл 19, 09:33    [21927255]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
JDS
Member

Откуда:
Сообщений: 651
PetroNotC Sharp, не десктоп. Сервисы. Да можно запилить одно приложение а-ля ексель и запустить их 20 штук с передачей параметров (с каким офисом общаться в частности). Можно сделать одно многопоточное, но пока делаем от простого по количеству точек, в каждом варианте свои плюсы минусы. Просто как минимум каждое приложение еще общается на вход и выход с другими сервисами, при этом внутри сообщений нет как таковой диспетчеризации (не от меня зависит), те сопоставление идет только на уровне адресов.
16 июл 19, 09:52    [21927274]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
JDS
Можно сделать одно многопоточное
экземпляр это не поток

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

Микросервисы замутили, а нужность обосновать забыли.
Тему можно закрывать.
16 июл 19, 10:01    [21927286]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
JDS,
Хотя бы термин Фасад/корпоративный API изучи. Там нет страшных слов потоки. Может пригодится.
16 июл 19, 10:03    [21927288]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
JDS
Member

Откуда:
Сообщений: 651
PetroNotC Sharp, почему-то упорно полагаете, что я только вчера с Луны), кластеры почитать, экземпляр не поток и тд)
По ответам ребят вроде бы все понятно, смотрю дальше. Поэтому да, тему можно закрыть.
16 июл 19, 10:12    [21927294]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
JDS,
Я сужу чисто по данному топик а не о вас.
Много слов про потоки, а они вообще не при чем.
Задачу не обрисовали сразу.
Решение не озвучено.
16 июл 19, 10:20    [21927297]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
JDS,
Грубо говоря вы хотите вместо
@WebServlet("/servis1")
public class ServletServis1

или
@WebServlet("/servis-all")
public class ServletServisAll


сделать 20 штук на одном томкате servis1.war,.... servis20.war.
16 июл 19, 10:32    [21927303]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
Обычно мы собирали 2 артифакта. Один - толстый джар (fat-jar) который содержал весь проект с потрахами
и другой артифакт - zip или tar архив который содержал сет конфигов под целевую конфигурацию.

Конфиги могут быть чем угодно. Yaml, json, properties. Могут быть даже Groovy классами. Важно чтобы они вставлялись
в приложение как обойма в пистолет. +Надо оставить хоть несколько properties для местных админов чтоб они могли
вбить туда ключики к амазону или какие-то критичные пароли которые нельзя хардкодить.
16 июл 19, 10:57    [21927327]     Ответить | Цитировать Сообщить модератору
 Re: Дублирование одинаковых веб-сервисов  [new]
JDS
Member

Откуда:
Сообщений: 651
PetroNotC Sharp, да, все правильно поняли.
Но это каждое отдельное приложение еще должно автоматом стартовать и в фоне выполнять и другую работу, это пока повесил на WebListener, который при инициализации запускает эту работу в отдельном потоке, поэтому упомянул про них.
16 июл 19, 11:02    [21927330]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Java Ответить