Перейти к содержимому

Фотография

soapUI - знак вопроса в возвращаемом return параметре


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 Breetonia

Breetonia

    Активный участник

  • Members
  • PipPip
  • 76 сообщений
  • ФИО:Рымаров Владислав

Отправлено 11 мая 2012 - 10:35

Утро всем доброе.В процессе изучения soapUI столкнулся со следующей проблемой:
При POST запросе к мок сервису на Jetty сервере,встроенному в soapUI,получил в результирующем параметре знак вопроса *?*.
Что интересно,так это то,что никаких ошибок не срабатывает.
Знаю протокол SOAP достаточно плохо,так как новичок,поэтому привожу всё сюда:

Сам чистый POST запрос:

POST http://localhost:8088/mockCalculatorPortBinding HTTP/1.1
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Host: localhost:8088
Content-Length: 267

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:loc="http://localhost">
   <soapenv:Header/>
   <soapenv:Body>
      <loc:add>
         <arg0>50</arg0>
         <arg1>300</arg1>
      </loc:add>
   </soapenv:Body>
</soapenv:Envelope>


Сам ответ:


HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Encoding: gzip
Transfer-Encoding: chunked
Server: Jetty(6.1.x)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:loc="http://localhost">
   <soapenv:Header/>
   <soapenv:Body>
      <loc:addResponse>
         <return>?</return>
      </loc:addResponse>
   </soapenv:Body>
</soapenv:Envelope>

Что я проверил:

1) Endpoint.Он соответствует http://localhost:808...atorPortBinding
2) Отсутствие ошибок.
3) Перезапуск мок сервиса,а также повторное создание проекта не принесло положительных результатов.
4) Генерация wsgen-ом wsdl/xsd и повторное пересоздание проекта также не принесли положительных результатов.


Что мне ещё остается ?!
Ещё вчера всё работало.
Запускал сервис локально.

Ссылка на test.wsdl: http://pastebin.com/5vNHasD7
Ссылка на test.xsd: http://pastebin.com/506BaAA7
  • 0

#2 Breetonia

Breetonia

    Активный участник

  • Members
  • PipPip
  • 76 сообщений
  • ФИО:Рымаров Владислав

Отправлено 11 мая 2012 - 13:45

Хм,поставил версию соупа поновее - с 3.6 на 4.0.0.Левая лицуха всё-таки прокатила и там ))
Теперь параметры вообще не обрабатываются - вбиваю в 2 поля разные числа - 8 и 2 например - выводит почему-то всегда 3 теперь...
Бред какой-то этот soapUI...Мне теперь что,с нуля писать WSDL,раз нормально сгенерировать ничто не может ?

Реализация,кстати,была такая:

package test;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;


@WebService(
	    name="Calculator",
	    serviceName="CalculatorService",
	    targetNamespace="http://localhost")

public class CalculateWebService {

   public int add(int a,int b) {

	   return a + b;
	   
   				}
   
   public static void main(String args[]) throws Exception {
	   
	     Endpoint.publish("http://localhost:8080/WS/calc",
	     new CalculateWebService());
	    

   
   }

WSDL брался этой функции путем wsgen-а класса CalculateWebService и переносился прямо в soapUI.
  • 0

#3 tab15

tab15

    Активный участник

  • Members
  • PipPip
  • 128 сообщений

Отправлено 11 мая 2012 - 14:03

Судя по коду (первый пост) вы вызываете мок-сервис. soapUI автоматически подставляет вопросы туда, куда не знает что нужно подставить. Т.к у вас мок-сервис, то этот самый респонс вы можете сами заполнить тем чем нужно. А проверка ошибок происходит, у вас судя по всему, при помощи xsd. Если в xsd указано что у элемента <return> может быть значение "?" значит и ошибки нет.
Второй пост: у вас обработчик mock-service понятно что там будет всегда одно и то же значение. Это просто имитация ответа. Вам нужно посылать ваш request на реальный обработчик запросов, а не на "симулятор"
  • 1

#4 Breetonia

Breetonia

    Активный участник

  • Members
  • PipPip
  • 76 сообщений
  • ФИО:Рымаров Владислав

Отправлено 11 мая 2012 - 14:15

Вот,блин...Я думал,что это полноценная симуляция.....Выходит,мне нужно будет поднимать веб сервис в том же Eclipse и слать с soapUI туда запросы ?
Хех,самое интересное,так это то,что у меня по списку это был последний пункт)))).
  • 0

#5 Breetonia

Breetonia

    Активный участник

  • Members
  • PipPip
  • 76 сообщений
  • ФИО:Рымаров Владислав

Отправлено 11 мая 2012 - 14:22

Если в xsd указано что у элемента <return> может быть значение "?" значит и ошибки нет.


Да,при помощи xsd,ибо в schemaLocation ссылка идет прямо на него :good:
Не подскажете,как узнать,что может быть значение *?* ? И как проверять такое ?

Второй пост: у вас обработчик mock-service понятно что там будет всегда одно и то же значение. Это просто имитация ответа.


Эм,не заметил,когда читал мануалы...Мб подскажете,где такое прописано ? Желательно ин рашн ).

Кстати,сам тип ретурна:

<xs:complexType name="addResponse">
    <xs:sequence>
      <xs:element name="return" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  • 0

#6 Breetonia

Breetonia

    Активный участник

  • Members
  • PipPip
  • 76 сообщений
  • ФИО:Рымаров Владислав

Отправлено 11 мая 2012 - 14:37

Да,вы были правы.Всё работает,НО хотелось бы,чтобы мок сервис умел подставлять передаваемые ему значения,учитывая,что это смешная реализация))).
В общем,чтобы всё работало и в soapUI.Можно ли этого добиться от него ?
Крайне ресурсоемко держать эклипс открытым )).
  • 0

#7 tab15

tab15

    Активный участник

  • Members
  • PipPip
  • 128 сообщений

Отправлено 11 мая 2012 - 15:28

Вот,блин...Я думал,что это полноценная симуляция.....Выходит,мне нужно будет поднимать веб сервис в том же Eclipse и слать с soapUI туда запросы ?

Выходит так:)

Да,при помощи xsd,ибо в schemaLocation ссылка идет прямо на него :good:
Не подскажете,как узнать,что может быть значение *?* ? И как проверять такое ?

<xs:complexType name="addResponse">
    <xs:sequence>
      <xs:element name="return" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

Судя по типу у вас там должно быть число. Для того что бы soapUI, что то проверял нужно вставить assertionы. Для проверки типа будет достаточно assertion "Schema Compliance"

Что бы в мок сервису подставлять значения связанные с реквестом какой то логикой, придется писать скрипт (другого способа я не знаю). Но тогда, по моему, лучше приготовить тот ваш обработчик в eclipse, чем писать практически этот же обработчик в soapUI.

А документации по соапуи мало, все на их офф. странице да в блогах на инглише.
  • 1

#8 Breetonia

Breetonia

    Активный участник

  • Members
  • PipPip
  • 76 сообщений
  • ФИО:Рымаров Владислав

Отправлено 11 мая 2012 - 16:16

Спасибо вам большое за развернутый ответ.
Можно ли с вами общаться через ИМ или вы доступны только на форуме ? Порой возникают такого рода вопросы,которые отнимают день другой времени...
  • 0

#9 tab15

tab15

    Активный участник

  • Members
  • PipPip
  • 128 сообщений

Отправлено 11 мая 2012 - 22:26

Давайте лучше на форум. Я сюда каждый раб. день заглядываю:)
  • 0

#10 Breetonia

Breetonia

    Активный участник

  • Members
  • PipPip
  • 76 сообщений
  • ФИО:Рымаров Владислав

Отправлено 12 мая 2012 - 12:56

Хорошо,так и будет... )

P.S. Закройте тему,проблема решена :clapping:
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных