Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / web services -> не работает динамический клиент / 4 сообщений из 4, страница 1 из 1
06.06.2005, 14:39
    #33102696
oracle79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web services -> не работает динамический клиент
Добрый день всем !!!

Создал динамичиского клиента web службы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
 import  javax.xml.namespace.QName;
 import  javax.xml.rpc.*;
 import  javax.xml.rpc.ServiceFactory;

 public   class  Main {
     private   static  String endpoint =
            "http://localhost:8080/firstWS/firstWS";
     private   static  String qnameService = "FirstWS";
     private   static  String qnamePort = "firstWSSEIPort";
     private   static  String BODY_NAMESPACE_VALUE =
            "urn:firstWS/wsdl"; 
     private   static  String ENCODING_STYLE_PROPERTY =
            "javax.xml.rpc.encodingstyle.namespace.uri";
     private   static  String NS_XSD =
            "http://www.w3.org/2001/XMLSchema";
     private   static  String URI_ENCODING =
            "http://schemas.xmlsoap.org/soap/encoding/";
     public   static   void  main(String[] args) {
         try {
            ServiceFactory factory =
                    ServiceFactory.newInstance();
            Service service =
                    factory.createService( new  QName(qnameService));
            QName port =  new  QName(qnamePort);
            
            Call call = service.createCall(port);
            call.setTargetEndpointAddress(endpoint);
            call.setProperty(Call.SOAPACTION_USE_PROPERTY,  new   Boolean (true));
            call.setProperty(Call.SOAPACTION_URI_PROPERTY,"");
            call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY,  URI_ENCODING);
            
            QName QNAME_TYPE_STRING =
                     new  QName(NS_XSD, "string");
            call.setReturnType(QNAME_TYPE_STRING);
            
            call.setOperationName(  new  QName(BODY_NAMESPACE_VALUE, "sayHi"));
            call.addParameter("String_1", QNAME_TYPE_STRING,
                    ParameterMode.IN);
            String[] params = { "Hello" };
            
            String result = (String)call.invoke(params); // <- ошибка возникает здесь
            System.out.println(result);
        }  catch  (Exception e) {
            e.printStackTrace();
        }
    }
Вот wsdl файл web службы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
  <?xml version="1.0" encoding="UTF-8" ?> 
- <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:firstWS/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="firstWS" targetNamespace="urn:firstWS/wsdl">
  <types /> 
- <message name="firstWSSEI_sayHi">
  <part name="String_1" type="xsd:string" /> 
  </message>
- <message name="firstWSSEI_sayHiResponse">
  <part name="result" type="xsd:string" /> 
  </message>
- <portType name="firstWSSEI">
- <operation name="sayHi" parameterOrder="String_1">
  <input message="tns:firstWSSEI_sayHi" /> 
  <output message="tns:firstWSSEI_sayHiResponse" /> 
  </operation>
  </portType>
- <binding name="firstWSSEIBinding" type="tns:firstWSSEI">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" /> 
- <operation name="sayHi">
  <soap:operation soapAction="" /> 
- <input>
  <soap:body use="literal" namespace="urn:firstWS/wsdl" /> 
  </input>
- <output>
  <soap:body use="literal" namespace="urn:firstWS/wsdl" /> 
  </output>
  </operation>
  </binding>
- <service name="FirstWS">
- <port name="firstWSSEIPort" binding="tns:firstWSSEIBinding">
  <soap:address location="http://localhost:8080/firstWS/firstWS" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" /> 
  </port>
  </service>
  </definitions>
при выполнении программы возникает следующая ошибка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
unexpected encoding style: expected=http://schemas.xmlsoap.org/soap/encoding/, actual=
        at com.sun.xml.rpc.encoding.SOAPDeserializationContext.verifyEncodingStyle(SOAPDeserializationContext.java: 168 )
        at com.sun.xml.rpc.encoding.ObjectSerializerBase.deserialize(ObjectSerializerBase.java: 175 )
        at com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.deserialize(ReferenceableSerializerImpl.java: 155 )
        at com.sun.xml.rpc.client.dii.CallInvokerImpl._readFirstBodyElement(CallInvokerImpl.java: 285 )
        at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java: 215 )
        at com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java: 79 )
        at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java: 482 )
private static String URI_ENCODING =
"http://schemas.xmlsoap.org/soap/encoding/";
expected=http://schemas.xmlsoap.org/soap/encoding/
Странная в общем ошибка...
Если задать encoding type так
private static String URI_ENCODING =
"http://schemas.xmlsoap.org/soap/encoding"; (без последнего слеша)
то выскакивает вот такая ошибка
Код: plaintext
1.
2.
3.
operation style: "rpc" not supported
        at com.sun.xml.rpc.client.dii.BasicCall.unsupportedOperationStyleException(BasicCall.java: 556 )
        at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java: 488 )
может кто-то сталкивался с такой проблемой ?
Помогите пожалуйста!!
5 минут вашего времени избавит меня от многих часов бесполезного втыкания в монитор )))

p.s. : web служба запущена в "rpc" стиле
...
Рейтинг: 0 / 0
07.06.2005, 17:26
    #33105564
oracle79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web services -> не работает динамический клиент
Код клиента оказался рабочим!!!
Я попробывал запустить его с использованием библиотек, которые поставляются вместе с ibm web sphera, и он заработал!
А я использую Sun Java System Application Server 8.1.
Подскажите, пожалуйста, какие нужно библиотеки подключать, чтобы заработал клиент ?
Может нодо их отдельно выкачать ?
Ну не может же совершенно одинаковый код в одном случае работать, а в другом не работать!!!
...
Рейтинг: 0 / 0
08.06.2005, 14:24
    #33107319
Hello World!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web services -> не работает динамический клиент
Попробуй пропиши в атрибутом в wsdl файле для элемента 'definitions'
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"

WBR
...
Рейтинг: 0 / 0
08.06.2005, 20:36
    #33108159
oracle79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web services -> не работает динамический клиент
Насколько я понял, wsdl файл для данного типа клиента (dii) вообще не нужен.
Он на то и динамический, так как wsdl описания может не быть.
Здесь важно знать только размещение web службы и семантику вызова.
Я все же склоняюсь к тому, что не хватает каких то библиотек.
Если ошибають, то поправте меня...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / web services -> не работает динамический клиент / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]