Comments 26
Столкнулся с требованием отправлять и получать SOAP сообщения из базы данных Oracle.
А можете объяснить, зачем?
0
В инфраструктуре которой я работаю почти все базы на Oracle. В основном вся логика написана на PL/SQL. Сторонние Компании-партнёры которые предоставляют нам услуги и с которым необходима интеграция предоставляют нам Web Service. Поэтому появилась необходимось из рабочих процедур базы напрямую обрашатся к Веб службам в режиме Онлайн.
+1
Из первых предложений последнее никак не вытекает. (Почти) всегда можно найти альтернативный способ построения интеграционного решения.
0
А чем же плох данный способ?
+1
Тем, что сервер БД — не сервер приложений. И даже (то место, где вы это делаете) — не интеграционная шина. Как следствие, вы постоянно будете влетать в ограничения и неудобства.
Что вы будете делать, когда ответ «с той стороны» будет занимать 100 мегабайт и идти полторы минуты? А когда понадобится SSL? А если нужно будет сделать аутентификацию на сертификатах?
Что вы будете делать, когда ответ «с той стороны» будет занимать 100 мегабайт и идти полторы минуты? А когда понадобится SSL? А если нужно будет сделать аутентификацию на сертификатах?
+2
--Как следствие, вы постоянно будете влетать в ограничения и неудобства.
Решение уже работает на боевой системе и пока ни с чем таким не сталкивался. Как писал ниже:
Целью было написать простое решение именно для Базы Данных. Которое легко настроить и синтегрировать. Целью не было писать Уникальный SOAP/XML Клиент. Таких уже не мало написано и на той же Java.
--Что вы будете делать, когда ответ «с той стороны» будет занимать 100 мегабайт и идти полторы минуты? А когда понадобится SSL? А если нужно будет сделать аутентификацию на сертификатах?
Таких требований не возникало. Но думаю и эти пробелмы решаемы.
Решение уже работает на боевой системе и пока ни с чем таким не сталкивался. Как писал ниже:
Данное решение далеко не претендует быть в списке лучших… Но необходимо было реализовать что то быстро и практично. Данное решение полностью отвечает всем необходимым(в моем случае) требований… И реализовано и применено довольно таки быстро)
Целью было написать простое решение именно для Базы Данных. Которое легко настроить и синтегрировать. Целью не было писать Уникальный SOAP/XML Клиент. Таких уже не мало написано и на той же Java.
--Что вы будете делать, когда ответ «с той стороны» будет занимать 100 мегабайт и идти полторы минуты? А когда понадобится SSL? А если нужно будет сделать аутентификацию на сертификатах?
Таких требований не возникало. Но думаю и эти пробелмы решаемы.
+1
Простота этого решения иллюзорна. Мне искренне жаль того человека, который будет это поддерживать.
0
Уважаемый, здесь всего около 200 строк кода и 3 таблицы. Ваше мнение я не оспариваю и уважаю, но уж извините, если человек не может поддеражть 200 строк PL/SQL кода с инструкцией описанной выше, то его вы можете пожалеть.
P.S.: Я уже синтегрировал данное решение в нескольких модулях. Учитывая что среда телеком и трафик не малый. Проблем пока не возникало. Все работает стабильно. Проблемы и баги возможно будут, я буду их решать по мере их появления. Может быть об этих проблемах напишу в следующей статье.
P.S.: Я уже синтегрировал данное решение в нескольких модулях. Учитывая что среда телеком и трафик не малый. Проблем пока не возникало. Все работает стабильно. Проблемы и баги возможно будут, я буду их решать по мере их появления. Может быть об этих проблемах напишу в следующей статье.
0
здесь всего около 200 строк кода и 3 таблицы
А на подходящем для этого языке — порядка 5 строчек кода и ни одной таблицы. Разницу в стоимости поддержки представляете?
Как ваше решение отреагирует на недоступность сервиса? А на то, что сервис вернет 404? А на fault?
Я уже синтегрировал данное решение в нескольких модулях. Учитывая что среда телеком и трафик не малый. Проблем пока не возникало. Все работает стабильно. Проблемы и баги возможно будут, я буду их решать по мере их появления.
В этом пассаже самое характерное — это «я». Это и выглядит как типичное решение одного человека, которое этот человек сам и планирует поддерживать.
0
А на подходящем для этого языке — порядка 5 строчек кода и ни одной таблицы.
Подходящим языком для меня стал PL/SQL.
Разницу в стоимости поддержки представляете?
Я думаю данный цыфры (о строк кода) слишком ничтожны чтобы говорить о поддерже и тем более о стоимости данной поддержки. В моем случае статья и является инструкцией для поддержки.
Как ваше решение отреагирует на недоступность сервиса? А на то, что сервис вернет 404? А на fault?
На 404 вернет XML ответ в котором так и написано что путь не найден.
При fault попадет на exception запишет лог и процедура вернет NULL для каждого параметра.
В данных ситуациях стандартное поведение системы.
В этом пассаже самое характерное — это «я». Это и выглядит как типичное решение одного человека, которое этот человек сам и планирует поддерживать.
Да на первом этапе я буду поддерживать. Но ни какой сложности обьяснить человеку который свободно чувствует сеа в среде Оракла не вижу.
Я все же не пойму что же вас не устраивает?
-То что можно следать это другим способом? Ок, можно я не спорю. Но в данной статье я описал именно этот способ.
-То могут появится требования(SSL) которые «невозможно» сделать на PL/SQL? Я думаю нет ни чего невозможного. А также можно придумать уймо обходных путей, я уже не говорю о том что для тех «сложных» требований можно написать что то своё на той же Java.
-То что много кода и трудно поддерживать? На данный момент это не является проблемой и нет необходимости вовлечения людей которые не смогут поддерживать данное решение. Не говоря о том что не вижу никаких трудностей для человека который свободно чувствует сеа в среде Oracle.
0
Я думаю данный цыфры (о строк кода) слишком ничтожны чтобы говорить о поддерже и тем более о стоимости данной поддержки.
Вообще-то, не 0, а 200 и 5. И зная, что приложение даже в 100 строк может съедать часы на поддержку, я с подозрением отношусь к неэффективным реализациям.
В моем случае статья и является инструкцией для поддержки.
Если для поддержки нужна инструкция — это уже плохо.
процедура вернет NULL для каждого параметра.
Как отличить эту ситуацию от «сервис вернул null»?
Я все же не пойму что же вас не устраивает?
Применение неподходящих инструментов. Я могу понять, когда это делают «когда иначе вообще никак», но у вас не тот случай. Но воспринимать это как нормальное решение я не могу — именно по озвученным причинам.
+1
Но воспринимать это как нормальное решение я не могу
Ваше право
-1
Как я уже говорил,
Данное решение далеко не претендует быть в списке лучших… Но необходимо было реализовать что то быстро и практично. Данное решение полностью отвечает всем необходимым(в моем случае) требований…
Способов много и у всех есть свои плюсы и минусы…
В данной статье я рассматривал именно этот способ. А не степень его правильности.
Кого то это устроит а кого то нет. Суть и цель не в этом. Если вас не устраивает данное решение, то прошу напишите свое, а я с радостью с ним ознакомлюсь. Но это уже будет ваш способ решения. И может быть он будет правильным. Для вас.
Данное решение далеко не претендует быть в списке лучших… Но необходимо было реализовать что то быстро и практично. Данное решение полностью отвечает всем необходимым(в моем случае) требований…
Способов много и у всех есть свои плюсы и минусы…
В данной статье я рассматривал именно этот способ. А не степень его правильности.
Кого то это устроит а кого то нет. Суть и цель не в этом. Если вас не устраивает данное решение, то прошу напишите свое, а я с радостью с ним ознакомлюсь. Но это уже будет ваш способ решения. И может быть он будет правильным. Для вас.
0
Забавненько, а почему бы и нет. Хотя вообще для таких целей вероятнее всего нужен какой-ньть BPEL/SOA, на котором строится бизнес-логика.
0
Странно, что вы не нашли решение от Тима Холла… я в свое время его немного модифицировал: github.com/xtender/xt_soap
0
Взглянул только мельком честно. А какая версия Oracle у вас? Древность похоже.
Советую просто почитать про XMLTRANSFORM для использования XSLT шаблонов вместо постановки подстроки с параметрами.
Зачем для хранения шаблона использовать varchar2(4000) когда есть уже давно тип поля XMLTYPE?
Опять же генерации ответа или XSLT или почитать XMLELEMENT.
Не так давно просто нужно поработать было с SOAP и прочим XML в Oracle, так там функционала просто море уже готового.
Советую просто почитать про XMLTRANSFORM для использования XSLT шаблонов вместо постановки подстроки с параметрами.
Зачем для хранения шаблона использовать varchar2(4000) когда есть уже давно тип поля XMLTYPE?
Опять же генерации ответа или XSLT или почитать XMLELEMENT.
Не так давно просто нужно поработать было с SOAP и прочим XML в Oracle, так там функционала просто море уже готового.
+1
--Зачем для хранения шаблона использовать varchar2(4000) когда есть уже давно тип поля XMLTYPE?
Перед тем как перевести их в XMLTYPE необходимо заменить параметры в шаблоне XML на значения из параметров. Это же шаблон, а не само сообщение XML. На случай если границ Varchar2 будет не хватать можно использовать CLOB.
--Советую просто почитать про XMLTRANSFORM для использования XSLT шаблонов вместо постановки подстроки с параметрами.
--Опять же генерации ответа или XSLT или почитать XMLELEMENT.
Принял во внимание. Спасибо.
Перед тем как перевести их в XMLTYPE необходимо заменить параметры в шаблоне XML на значения из параметров. Это же шаблон, а не само сообщение XML. На случай если границ Varchar2 будет не хватать можно использовать CLOB.
--Советую просто почитать про XMLTRANSFORM для использования XSLT шаблонов вместо постановки подстроки с параметрами.
--Опять же генерации ответа или XSLT или почитать XMLELEMENT.
Принял во внимание. Спасибо.
0
Перед тем как перевести их в XMLTYPE необходимо заменить параметры в шаблоне XML на значения из параметров. Это же шаблон, а не само сообщение XML. На случай если границ Varchar2 будет не хватать можно использовать CLOB
Смысл XMLTRANSFORM в том чтобы взять данные в виде XMLTYPE, применить на них XSLT и получить на выходе готовый XMLTYPE.
Тип XMLTYPE в Oracle тот же CLOB только с валидацией структуры XML. Невалидный XML не вставляется/апдейтится.
Я тоже сперва думал что 4000 этого хватит и очень быстро понял что это очень мало.
Делайте на будущее хорошо сразу, заготовки пригодятся 100%.
0
Sign up to leave a comment.
PL/SQL решение для работы с Веб-Службами