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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача своего типа через Web services, Передача своего типа через Web services 
:(
    Опции темы
JSergeyJ
Дата 23.7.2007, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день. Создал web сервис под JBoss 4.0.5 GA 
Код

package foo;

import mytypes.MyType;
import mytypes.UserType;

import javax.ejb.Remote;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jws.WebService;
import javax.jws.WebMethod;

@Stateless
@WebService(endpointInterface = "foo.Echo")
@Remote(Echo.class)
public class EchoBean {

    @WebMethod
    public UserType echo(UserType e) {
        return e;
    }
}

Код

package foo;

import mytypes.MyType;
import mytypes.UserType;

import java.rmi.Remote;
import java.rmi.RemoteException;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style = Style.RPC)
public interface Echo extends Remote {
        @WebMethod
        UserType echo(UserType e) throws RemoteException;
}

Сервис задеплоился. WSDL доступна по http://localhost:8080/MyEjb/EchoBean?wsdl
По wsdl были сгенерены Java-классы для клиентской стороны c помощью wstools из JBoss
При попытке использования вебсервиса получаю Exception

org.jboss.ws.WSException: Cannot obtain java type mapping for: {http://foo/jaws}UserType

Поиски в google ничего не дали...

PM MAIL   Вверх
ekr
Дата 23.7.2007, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

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



приведи wsdl плз. 


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
JSergeyJ
Дата 23.7.2007, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот моя WSDL...
Код

<definitions name='EchoService' targetNamespace='http://foo/jaws' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://foo/jaws' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 <types>
  <schema elementFormDefault='qualified' targetNamespace='http://foo/jaws' xmlns='http://www.w3.org/2001/XMLSchema' xmlns:soap11-enc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:tns='http://foo/jaws' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
   <complexType name='UserType'>
    <sequence>
     <element name='msg' nillable='true' type='string'/>
    </sequence>
   </complexType>
  </schema>

 </types>
 <message name='Echo_echoResponse'>
  <part name='result' type='tns:UserType'/>
 </message>
 <message name='Echo_echo'>
  <part name='UserType_1' type='tns:UserType'/>
 </message>
 <portType name='Echo'>
  <operation name='echo' parameterOrder='UserType_1'>

   <input message='tns:Echo_echo'/>
   <output message='tns:Echo_echoResponse'/>
  </operation>
 </portType>
 <binding name='EchoBinding' type='tns:Echo'>
  <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
  <operation name='echo'>
   <soap:operation soapAction=''/>
   <input>

    <soap:body namespace='http://foo/jaws' use='literal'/>
   </input>
   <output>
    <soap:body namespace='http://foo/jaws' use='literal'/>
   </output>
  </operation>
 </binding>
 <service name='EchoService'>
  <port binding='tns:EchoBinding' name='EchoPort'>

   <soap:address location='http://localhost:8080/MyEjb/EchoBean'/>
  </port>
 </service>
</definitions>

PM MAIL   Вверх
ekr
Дата 23.7.2007, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

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



Цитата(JSergeyJ @  23.7.2007,  09:12 Найти цитируемый пост)
По wsdl были сгенерены Java-классы

при генерации не было ошибок?

можно попробовать в
Цитата(JSergeyJ @  23.7.2007,  09:33 Найти цитируемый пост)
<element name='msg' nillable='true' type='string'/>

для string прописать пространство имен

Добавлено через 4 минуты и 43 секунды
Код

<element name='msg' nillable='true' type='xsd:string'/>



--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
JSergeyJ
Дата 23.7.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При генерации никаких ошибок не было. Все что надо сгенерировалось и UserType.java тоже.

WSDL генерится JBoss'ом по аннотациям и предоставляется как есть... собственно исправить у меня нет возможности.
Вместе с классами также генерится jaxrpc-mapping.xml. В качестве клиента у меня простейшее web-приложение. В web.xml
прописано следующее
Код

<service-ref>
        <service-ref-name>service/EchoService</service-ref-name>
        <service-interface>javax.xml.rpc.Service</service-interface>
        <wsdl-file>WEB-INF/wsdl.xml</wsdl-file>
        <jaxrpc-mapping-file>WEB-INF/jaxrpc-mapping.xml</jaxrpc-mapping-file>
        <port-component-ref>
            <service-endpoint-interface>
                foo.jaws.EchoService
            </service-endpoint-interface>
        </port-component-ref>
    </service-ref>

Вы думаете это дело в WSDL?
PM MAIL   Вверх
redrick
Дата 26.12.2007, 01:47 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

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



Решил ап-нуть тему т.к. меня мучает точно такой же вопрос:
Как сделать то что описано в корневом посте топика ?

Из гугла и документации вынес следующее:
1) нужно подсунуть клиенту мапинг XML типа в Java object, т.к. Web-Service рантайм на клиентской стороне не знает как мапить UserType из XML в Java. Вот как это сделать я не понял (jaxrpc-mapping.xml ???)
2) Вычитал в одной рассылке что типа ересь это все - объекты через вебсервисы передавать прозачным образом. Ибо когда создается веб-сервис мы не знаем какие у него будут клиенты, так что передаем XML и все - а клиент пусть сам разбирается, десериализует его в какие ему хочется объекты.

Что думаете по этому поводу ?

Вобщем проблема решилась, лучше всего написано как это сделать тут:
http://web.aanet.com.au/persabi/andromda/howto18.html

Правда у меня мочемуто "мой тип" в сгенеренном jaxrpc-mapping.xml оказался в неправильном пакете. Ну руками поправил.

Это сообщение отредактировал(а) redrick - 26.12.2007, 04:18


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

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

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


 




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


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

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