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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Could not find deserializer for type..... Could not find deserializer for type.... 
:(
    Опции темы
vasko
Дата 29.8.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Необходимо написать код клиента (используется DII), который принимает в качестве результата работы сервер - класс.

Сервер. приложение
Код

public class FaqMakerService {

    public MakerInfo getByMakerName(String makerName) {
        System.out.println("getByMakerName: recieved name - " + makerName);
        MakerInfo maker = new MakerInfo();
        maker.FaqMaker = makerName;
        maker.Answer = 345;
        System.out.println("getByMakerName: Bewfore return");

        return maker;
    }
}

public class MakerInfo implements java.io.Serializable{
    public String FaqMaker;
    public int Answer;
}


wsdl файл 
Код

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://192.168.0.174:8080/axis/services/FaqMaker" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://192.168.0.174:8080/axis/services/FaqMaker" xmlns:intf="http://192.168.0.174:8080/axis/services/FaqMaker" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="urn:FaqMaker" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
 <wsdl:types>
  <schema targetNamespace="urn:FaqMaker" xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="MakerInfo">
    <sequence>
     <element name="FaqMaker" nillable="true" type="xsd:string"/>
     <element name="Answer" type="xsd:int"/>
    </sequence>
   </complexType>
  </schema>
 </wsdl:types>

   <wsdl:message name="getByMakerNameRequest">
      <wsdl:part name="makerName" type="xsd:string"/>
   </wsdl:message>

   <wsdl:message name="getByMakerNameResponse">
      <wsdl:part name="getByMakerNameReturn" type="tns1:MakerInfo"/>
   </wsdl:message>

   <wsdl:portType name="FaqMakerService">
      <wsdl:operation name="getByMakerName" parameterOrder="makerName">
         <wsdl:input message="impl:getByMakerNameRequest" name="getByMakerNameRequest"/>
         <wsdl:output message="impl:getByMakerNameResponse" name="getByMakerNameResponse"/>
      </wsdl:operation>
   </wsdl:portType>

   <wsdl:binding name="FaqMakerSoapBinding" type="impl:FaqMakerService">
      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsdl:operation name="getByMakerName">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="getByMakerNameRequest">
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"   namespace="http://DefaultNamespace" use="encoded"/>
         </wsdl:input>

         <wsdl:output name="getByMakerNameResponse">
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://192.168.0.174:8080/axis/services/FaqMaker" use="encoded"/>
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>

   <wsdl:service name="FaqMakerServiceService">
      <wsdl:port binding="impl:FaqMakerSoapBinding" name="FaqMaker">
         <wsdlsoap:address location="http://192.168.0.174:8080/axis/services/FaqMaker"/>
      </wsdl:port>
   </wsdl:service>

</wsdl:definitions>



Код клиента 
Код

void testFaqMaker() {
        String targetNamespace="http://192.168.0.174:8080/axis/services/FaqMaker";
        String nameService = "FaqMakerServiceService";
        String namePort = "FaqMaker";
        String endpointAddress = "http://192.168.0.174:8080/axis/services/FaqMaker";
        String nameMethod = "getByMakerName";

try {
            ServiceFactory factory = ServiceFactory. newInstance();
            Service service = factory.createService(new QName(nameService));

            javax.xml.rpc.encoding.TypeMappingRegistry mappingRegistry = service.getTypeMappingRegistry();
            javax.xml.rpc.encoding.TypeMapping typeMapping = mappingRegistry.createTypeMapping();
            registerBeanMapping(typeMapping, MakerInfo.class, "MakerInfo");
            mappingRegistry.register(targetNamespace, typeMapping);

            Call call = service.createCall(new QName(targetNamespace, namePort));

            call.setTargetEndpointAddress(endpointAddress);

            call.setProperty(Call.OPERATION_STYLE_PROPERTY, "rpc");
            call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY, targetNamespace);

            call.setOperationName(new javax.xml.namespace.QName("http://DefaultNamespace", nameMethod));
            QName outType = new QName("urn:FaqMaker", "MakerInfo");
            call.addParameter("InParam1", StringQName, ParameterMode.IN);
            call.addParameter("OutParam", outType, ParameterMode.OUT);
            call.setReturnType(outType, MakerInfo.class);

            Object[] actualParams = new Object[] {"testName"};

            Object value= call.invoke(actualParams);
            value.toString();

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
}

protected void registerBeanMapping(TypeMapping mapping, Class type, String name) {
        QName qName = new QName("http://192.168.0.174:8080/axis/services/FaqMaker", "MakerInfo");
        mapping.register(type, qName,
        new BeanSerializerFactory(type, qName),
        new BeanDeserializerFactory(type, qName));
}


На invoke вылетает с ошибкой - 
"org.xml.sax.SAXException: Deserializing parameter 'getByMakerNameReturn':  could not find deserializer for type {urn:FaqMaker}MakerInfo"

В чем причина?
PM MAIL   Вверх
vasko
Дата 29.8.2006, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



если делать через org.apache.axis.client.Service - 
Код

org.apache.axis.client.Service service = new org.apache.axis.client.Service();
        try {
            org.apache.axis.client.Call call = (org.apache.axis.client.Call) service.createCall();
            QName qn = new QName("urn:FaqMaker", "MakerInfo");
            //ukazivaem serializaciju i desirializaciju dlja beana Oreder
            call.registerTypeMapping(MakerInfo.class, qn,
                    new BeanSerializerFactory(MakerInfo.class, qn),
                    new BeanDeserializerFactory(MakerInfo.class, qn));

            call.setTargetEndpointAddress(new URL("http://192.168.0.174:8080/axis/services/FaqMaker"));
            call.setOperationName( new QName("http://DefaultNamespace", "getByMakerName"));
            call.setPortName(new QName("http://192.168.0.174:8080/axis/services/FaqMaker", "FaqMaker"));
            call.addParameter("arg1", new QName("http://www.w3.org/2001/XMLSchema", "string"), ParameterMode.IN);
            call.setReturnType(qn, MakerInfo.class);
            Object o = call.invoke(new Object[] {"testValue"});
            if (null != o) {
                o.toString();
            }

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }


то все работает...... Чего не хватает для DII?

Это сообщение отредактировал(а) vasko - 29.8.2006, 19:45
PM MAIL   Вверх
Tony
Дата 30.8.2006, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

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



Tebje нужно написать указать десиализатор(не могу виговорить smile)
Код

 <service name="OrderProcessor" provider="java:RPC">
            <parameter name="className" value="servis.BeanService"/>
            <parameter name="allowedMethods" value="*"/>
            <beanMapping qname="ns:Order" xmlns:ns="urn:BeanService" languageSpecificType="java:servis.Order"/>
     </service>





--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
vasko
Дата 30.8.2006, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



у меня в axis/web-inf/server-config.wsdd прописано - 
Код

<service name="FaqMaker" provider="java:RPC">
        <parameter name="className" value="FaqMakerService"/>
        <parameter name="allowedMethods" value="getByMakerName"/>
        <beanMapping qname="ns1:MakerInfo" xmlns:ns1="urn:FaqMaker" languageSpecificType="java:MakerInfo"/>
</service>


Это сообщение отредактировал(а) vasko - 30.8.2006, 09:30
PM MAIL   Вверх
Tony
Дата 30.8.2006, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

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



Посмотри пример sudy


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
vasko
Дата 30.8.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как я уже писал, через org.apache.axis.client.Call у меня прекрасно все работает.
Не работает, если использовать технологию DII (чз javax.xml.rpc.Call работать)
PM MAIL   Вверх
Tony
Дата 31.8.2006, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

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



Если я не ошибаюсь в онсове Axis лежит RPC. 4em тебе не нравится Axis client?


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
vasko
Дата 31.8.2006, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Требования
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0883 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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