Как динамически создавать WSDL программно, а также анализировать запросы без сгенерированного кода или заглушек в Java? - PullRequest
2 голосов
/ 06 мая 2011

Вот что я хочу сделать:

У меня есть веб-приложение на Java, где я могу определить сервис, который выполняет код (например, JRuby), а также указать входные параметрыи выходные параметры.Вся эта информация хранится в БД.

Сегодня из этой информации я могу сделать веб-страницу, представляющую поля формы для входных данных.Если пользователь отправляет форму, я анализирую параметры запроса ввода и передаю их фактическому коду JRuby и возвращаю выходные данные обратно на страницу ответа.

Теперь я хочу сделать то же самое, но не показывать пользователю веб-сайт HTML, а вместо этого показывать WSDL.Предполагая, что потребитель этого WSDL создает SOAP-клиент со своей стороны и вызывает мой веб-сервис, включая необходимые входные параметры, я хотел бы иметь некоторый Java-код, который может анализировать поступающий SOAP-запрос, проверять его по динамически сгенерированному файлу WSDL, извлекатьвведите параметры запроса, передайте их в код JRuby и верните результаты в виде другого запроса SOAP.

Короче говоря:

Какая основанная на Java инфраструктура может помочь мне в этом?Я не могу создать Java-классы для генерации WSDL или использовать какие-либо аннотации, потому что спецификация входных и выходных данных является динамической из базы данных.

Я думаю, что я мог бы действительно сгенерировать WSDL вручную (конкатенация строк или некоторый, например, шаблон freemarker), а затем проанализировать xml также вручную, но я подумал, если есть лучший способ сделать это программно.

Спасибо, Кристоф

1 Ответ

2 голосов
/ 23 мая 2011

Вы можете попробовать взглянуть на wsdl4j .У меня похожая проблема, и я наткнулся на wsdl4j, ища решение, я еще не полностью протестировал его.здесь есть документ в формате pdf здесь , объясняющий, как его использовать (глава 10 «Программное создание определений»), надеюсь, что он может помочь.

Maxx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...