Как я могу сделать параметр WebMethod требуемым

Мы используем, "запускают с Java" подход к созданию JAX-WS 2,0 веб-сервиса с помощью стека Metro 1.5. Когда мы указываем на стандартный инструмент как SoapUI в одном из наших веб-сервисов, он указывает, что параметры к WebMethods являются дополнительными. Сгенерированный xsd показывает minOccurs=0.

Мне нужен способ сделать параметры WebMethod требуемыми (возможно, minOccurs=1 в xsd) в, "запускают с Java" подход. Я думал бы, что существует аннотация Java для этого, но я не смог найти тот. Аннотация XmlElement потребовала атрибута, но к XmlElement нельзя относиться параметры WebMethod.

Существует ли способ сделать мои параметры WebMethod требуемыми, за исключением ручного редактирования xsd и установки minOccurs к 1?

29
задан Pascal Thivent 6 February 2010 в 21:40
поделиться

3 ответа

Я проверил, что Metro 2.0 действительно позволяет установить @XmlElement (required = true) для параметра. Сгенерированный xsd не имеет minOccurs = 0 .Он оставляет minOccurs вне сгенерированного xsd, поэтому принимает значение по умолчанию 1.

Вам также необходимо обновить JDK, поместив JAX-WS 2.2 webservices-api.jar в каталоге одобрено / .

Я отправил тот же вопрос на форумах Java .

Спасибо jitu за ответ и указание на то, что minOccurs по умолчанию равен 1, поэтому исключение его из .xsd дает желаемый эффект.

Когда для параметра задано значение @XmlElement (required = true), SoapUI больше не указывает, что параметр является необязательным.

28
ответ дан 28 November 2019 в 01:55
поделиться

Я только что ответил на другой поток здесь, в StackOverflow решение, где я реализовал API для создания и манипулирования AST из C # Source Code

-121--2367183-

Это зависит от накладных расходов на межпотоковую связь. Я протестировал openMP с обработкой изображений, и там линия пикселей была удобной, а также давала хорошие скорости. Мой образ был мегапикселем, поэтому было 1000 задач, что, вероятно, более чем достаточно, чтобы держать сегодняшние маникюрные машины занятыми. Вам также не нужно ограничиваться работой, которая занимает больше секунды или около того. В этом примере скорости заданий порядка 10 миллисекунд, где хорошо видны.

Теперь это был приятный алгоритм, потому что он не был рекурсивным, поэтому не было зависимостей одной задачи от другой, и все задачи были автоматически одного размера.

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

-121--4859585-

Сгенерированный xsd показывает minOccurs = 0.

Согласно спецификации, любые непримитивы являются необязательными, требуются только примитивы.

Мне нужен способ сделать параметры WebMethod обязательными (может быть minOccurs = 1 в xsd) в подходе «start from Java».

Это невозможно, если вы не используете примитивы, как упоминалось ранее.

И на самом деле, это одна из причин, почему Java-first отстой (да, разработчикам нравится, но он просто не работает ): его хрупкий, контракт может измениться (!), он не дает вам весь необходимый контроль, он не хорошо вписывается в WS-Security и т.д. Так что, действительно, договор первый не приятен, но, по крайней мере, он работает.

6
ответ дан 28 November 2019 в 01:55
поделиться

Вот еще одно обсуждение того же вопроса. Согласно ответу Metro 2.0 поддерживает установку @XmlElement в параметр метода, который должен решить мою проблему.

http://forums.java.net/jive/thread.jspa?messageID=385565񞈝

Metro 2.0 был выпущен 10 декабря 2009 г., поэтому в EA его больше нет. Я попробую и посмотрю, сработает ли он.

2
ответ дан 28 November 2019 в 01:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: