Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> объясните что есть что в wsdl? 
:(
    Опции темы
zammar
Дата 5.6.2012, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 30.10.2008

Репутация: нет
Всего: нет



Код

<wsdl:message name="RequestMessage">
    <wsdl:part name="parameters" element="tns:RequestMessage"/>
</wsdl:message>
<wsdl:message name="RequestMessage_Headers">
    <wsdl:part name="Header" element="q1:Header" xmlns:q1="http://smev.gosuslugi.ru/rev120315"/>
</wsdl:message>
<wsdl:message name="ResponseMessage">
    <wsdl:part name="parameters" element="tns:ResponseMessage"/>
</wsdl:message>
<wsdl:message name="ResponseMessage_Headers">
    <wsdl:part name="Header" element="q2:Header" xmlns:q2="http://smev.gosuslugi.ru/rev120315"/>
</wsdl:message>
<wsdl:portType name="ServiceDevelopmentPlan">
    <wsdl:operation name="GetDevelopmentPlan">
        <wsdl:input wsaw:Action="http://dp.minregion.ru/ServiceDevelopmentPlan/GetDevelopmentPlan" name="RequestMessage" message="tns:RequestMessage"/>
        <wsdl:output wsaw:Action="http://dp.minregion.ru/ServiceDevelopmentPlan/GetDevelopmentPlanResponse" name="ResponseMessage" message="tns:ResponseMessage"/>
    </wsdl:operation>
    <wsdl:operation name="GetState">
        <wsdl:input wsaw:Action="http://dp.minregion.ru/ServiceDevelopmentPlan/GetState" name="RequestMessage" message="tns:RequestMessage"/>
        <wsdl:output wsaw:Action="http://dp.minregion.ru/ServiceDevelopmentPlan/GetStateResponse" name="ResponseMessage" message="tns:ResponseMessage"/>
    </wsdl:operation>
</wsdl:portType>



В wsdl есть сообщения RequestMessage и ResponseMessage
Они находяться в двух операциях сразу GetDevelopmentPlan и GetState
Является ли это ошибкой по стандарту wsdl?


Еще такой вопрос: что является методом в ООП в стравнении с wsdl имя операции или имя сообщения.
т.е. какой пример класса правильный если его сравнивать с wsdl выше?

пример 1
Код

public class Class{

    public GetDevelopmentPlan()
    {

    }
}



пример 2
Код

public class Class {

    public RequestMessage()
    {

    }
}

PM   Вверх
priam220
Дата 5.6.2012, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



1. Надо смотреть спецификацию, но почему методы не могут юзать одни и теже месседжи, если у них одинаковая сигнатура?
2. Операции  эквивалент методов сервиса, т.е. пример 1. RequestMessage - класс, тоже должен быть, он тут возвращается сервисом.


Это сообщение отредактировал(а) priam220 - 5.6.2012, 19:19
PM MAIL   Вверх
AntonSaburov
Дата 5.6.2012, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Честно говоря не совсем понятно - а как формируется сам wsdl без аннотаций, что есть WebMethod?

Вот пример кода:

Код

@WebService(serviceName = "NewWebService")
@Stateless()
public class NewWebService {

    /** This is a sample web service operation */
    @WebMethod(operationName = "hello1")
    public String helloFirst(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }
    @WebMethod(operationName = "hello2")
    public String helloSecond(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }
}


А вот WSDL на него:

Код

<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.1 (branches/2.1-6728; 2011-02-03T14:14:58+0000) JAXWS-RI/2.2.3 JAXWS/2.2. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.1 (branches/2.1-6728; 2011-02-03T14:14:58+0000) JAXWS-RI/2.2.3 JAXWS/2.2. -->
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.javacourse.edu/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.javacourse.edu/" name="NewWebService">
    <types>
        <xsd:schema>
            <xsd:import namespace="http://ws.javacourse.edu/" schemaLocation="http://gsru0015:8080/NewWebService/NewWebService?xsd=1" />
        </xsd:schema>
    </types>
    <message name="hello1">
        <part name="parameters" element="tns:hello1" />
    </message>
    <message name="hello1Response">
        <part name="parameters" element="tns:hello1Response" />
    </message>
    <message name="hello2">
        <part name="parameters" element="tns:hello2" />
    </message>
    <message name="hello2Response">
        <part name="parameters" element="tns:hello2Response" />
    </message>
    <portType name="NewWebService">
        <operation name="hello1">
            <input wsam:Action="http://ws.javacourse.edu/NewWebService/hello1Request" message="tns:hello1" />
            <output wsam:Action="http://ws.javacourse.edu/NewWebService/hello1Response" message="tns:hello1Response" />
        </operation>
        <operation name="hello2">
            <input wsam:Action="http://ws.javacourse.edu/NewWebService/hello2Request" message="tns:hello2" />
            <output wsam:Action="http://ws.javacourse.edu/NewWebService/hello2Response" message="tns:hello2Response" />
        </operation>
    </portType>
    <binding name="NewWebServicePortBinding" type="tns:NewWebService">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
        <operation name="hello1">
            <soap:operation soapAction="" />
            <input>
                <soap:body use="literal" />
            </input>
            <output>
                <soap:body use="literal" />
            </output>
        </operation>
        <operation name="hello2">
            <soap:operation soapAction="" />
            <input>
                <soap:body use="literal" />
            </input>
            <output>
                <soap:body use="literal" />
            </output>
        </operation>
    </binding>
    <service name="NewWebService">
        <port name="NewWebServicePort" binding="tns:NewWebServicePortBinding">
            <soap:address location="http://gsru0015:8080/NewWebService/NewWebService" />
        </port>
    </service>
</definitions>


А это пример SOAP, который делает запрос

Код

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Header/>
    <S:Body>
        <ns2:hello1 xmlns:ns2="http://ws.javacourse.edu/">
            <name>12</name>
        </ns2:hello1>
    </S:Body>
</S:Envelope>


Если внимательно посмотреть, то видно, что названия методов определяются аннотациями и в WSDL они как типы данных выступают.
Смотрите hello1 и hello2.

Также отмечу, что если заменить @WebMethod(operationName = "hello2") на @WebMethod(operationName = "hello1") во втором методе, то будет ошибка при деплое. Так что вот.
PM MAIL WWW ICQ   Вверх
priam220
Дата 5.6.2012, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Цитата

Честно говоря не совсем понятно - а как формируется сам wsdl без аннотаций,

там нет обязательных аннотаций. Имена операций будут сгенерены на основе имен методов endpoint interface'a.
PM MAIL   Вверх
zammar
Дата 5.6.2012, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 30.10.2008

Репутация: нет
Всего: нет



Цитата

2. Операции  эквивалент методов сервиса, т.е. пример 1. 

т.е. получается что этот кусок wsdl:
Код

<wsdl:operation name="GetDevelopmentPlan">
        <wsdl:input wsaw:Action="http://dp.minregion.ru/ServiceDevelopmentPlan/GetDevelopmentPlan" name="RequestMessage" message="tns:RequestMessage"/>
        <wsdl:output wsaw:Action="http://dp.minregion.ru/ServiceDevelopmentPlan/GetDevelopmentPlanResponse" name="ResponseMessage" message="tns:ResponseMessage"/>
    </wsdl:operation>

грубо говоря будет выглядеть так:
Код

public class Class{
    public GetDevelopmentPlan()
    {
    }
}

это понятно.


А это как понимать:
Цитата

RequestMessage - класс, тоже должен быть, он тут возвращается сервисом.

Каждое сообщение в wsdl - это класс???
Так что ли?
Код


public class RequestMessage{
...
}
public class RequestMessage_Headers{
...
}

Че то не то по моему вы, priam220, ответили, нет?
==============================================
AntonSaburov, у вас имена сообщений и имена операций одинаковые я немного не понял
Допустим есть такой wsdl (поменял имя сообщения с hello1 на meshello1):
Код

<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.1 (branches/2.1-6728; 2011-02-03T14:14:58+0000) JAXWS-RI/2.2.3 JAXWS/2.2. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.1 (branches/2.1-6728; 2011-02-03T14:14:58+0000) JAXWS-RI/2.2.3 JAXWS/2.2. -->
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.javacourse.edu/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.javacourse.edu/" name="NewWebService">
    <types>
        <xsd:schema>
            <xsd:import namespace="http://ws.javacourse.edu/" schemaLocation="http://gsru0015:8080/NewWebService/NewWebService?xsd=1" />
        </xsd:schema>
    </types>
    <message name="meshello1">
        <part name="parameters" element="tns:hello1" />
    </message>
    <message name="hello1Response">
        <part name="parameters" element="tns:hello1Response" />
    </message>
    <message name="meshello2">
        <part name="parameters" element="tns:hello2" />
    </message>
    <message name="hello2Response">
        <part name="parameters" element="tns:hello2Response" />
    </message>
    <portType name="NewWebService">
        <operation name="hello1">
            <input wsam:Action="http://ws.javacourse.edu/NewWebService/hello1Request" message="tns:meshello1" />
            <output wsam:Action="http://ws.javacourse.edu/NewWebService/hello1Response" message="tns:hello1Response" />
        </operation>
        <operation name="hello2">
            <input wsam:Action="http://ws.javacourse.edu/NewWebService/hello2Request" message="tns:meshello2" />
            <output wsam:Action="http://ws.javacourse.edu/NewWebService/hello2Response" message="tns:hello2Response" />
        </operation>
    </portType>
    <binding name="NewWebServicePortBinding" type="tns:NewWebService">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
        <operation name="hello1">
            <soap:operation soapAction="" />
            <input>
                <soap:body use="literal" />
            </input>
            <output>
                <soap:body use="literal" />
            </output>
        </operation>
        <operation name="hello2">
            <soap:operation soapAction="" />
            <input>
                <soap:body use="literal" />
            </input>
            <output>
                <soap:body use="literal" />
            </output>
        </operation>
    </binding>
    <service name="NewWebService">
        <port name="NewWebServicePort" binding="tns:NewWebServicePortBinding">
            <soap:address location="http://gsru0015:8080/NewWebService/NewWebService" />
        </port>
    </service>
</definitions>


тогда код для него будет такой(поменял имена методов)?
Код

@WebService(serviceName = "NewWebService")
@Stateless()
public class NewWebService {
    /** This is a sample web service operation */
    @WebMethod(operationName = "hello1")
    public String hello1(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }
    @WebMethod(operationName = "hello2")
    public String hello2(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }
}



А запрос soap такой(ничего не менял)?

Код

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Header/>
    <S:Body>
        <ns2:hello1 xmlns:ns2="http://ws.javacourse.edu/">
            <name>12</name>
        </ns2:hello1>
    </S:Body>
</S:Envelope>


Правильно?

И еще:
Код

<S:Body>
        <ns2:hello1 xmlns:ns2="http://ws.javacourse.edu/">


Имя первого дочернего тега после body (в данном случае hello1) должно быть именем метода, ведь так?
PM   Вверх
priam220
Дата 6.6.2012, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



zammar,   element="tns:RequestMessage" - тип передаваемого элемента, очевидно, не примитивный.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1135 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.