Поддерживается ли ArrayList в веб-сервисе Apache Axis? - PullRequest
3 голосов
/ 15 июля 2011

Я написал простой веб-сервис HelloWorld. Который принимает ArrayList в качестве параметра. Код так же прост, как `import java.util.ArrayList;

public class Service {

public void service(ArrayList<Object> list) {
    System.out.println("Hello World..");
}
}`

Я использую Eclipse Helios SR1 и пытаюсь сгенерировать веб-сервис. Выбор реализации веб-сервиса «Сервис» и выбор времени выполнения Сервера в качестве Tomcat 6.0 и время выполнения веб-сервиса в качестве Apache Axis. Нажатие на следующий дает предупреждение как Класс обслуживания "Service" не соответствует одному или нескольким требованиям спецификации JAX-RPC 1.1 и может не работать или функционировать неправильно. Метод "service" в классе обслуживания "Service" использует тип данных "java.util.ArrayList", который не поддерживается спецификацией JAX-RPC. Экземпляры типа могут не сериализоваться или десериализоваться правильно. Это может привести к потере данных или полному отказу веб-службы.

Нажмите кнопку ОК, чтобы продолжить, и это покажет еще одно предупреждение: Тип ввода java.lang.Class является неинстанцируемым типом и будет исключен из примера JSP. Продолжить с примером генерации JSP?

Тип ввода javax.xml.namespace.QName является неинстанцируемым типом и будет исключен из примера JSP. Продолжить с примером генерации JSP?

IWAB0189W В образце клиента JSP некоторые методы опущены, поскольку они содержат неподдерживаемые типы.

Есть причина, почему это может происходить? Я видел на сайте Sun: Sun RPC Doc

В соответствии с этим ArrayList должен поддерживаться.

Любая помощь?

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Хорошей практикой является написание WSDL, а затем генерирование классов Java с использованием инструмента Axis WSDL2Java. Вы всегда можете больше сконцентрироваться на написании WSDL в соответствии с потребностями своего бизнеса и оставить все хлопоты, связанные с маршалингом и демаршалингом, для создания классов.

1 голос
/ 15 июля 2011

Как указано в спецификации.

Массивы

JAX-RPC также поддерживает массивы с членами поддерживаемых типов JAX-RPC.Примерами поддерживаемых массивов являются int [] и String [].Также поддерживаются многомерные массивы, такие как BigDecimal [] [].

Простое изменение сигнатуры вашего метода для принятия массива в отличие от ArrayList должно решить проблему.

...