Столкнулся тут с проблемой: не может скрипт, использующий MS Soap toolkit зацепиться к моему ws (запущен на JBossWs 1.2.1GA)
wsdl
| Код | <definitions name='BrasUserManagerBeanService' targetNamespace='http://bean.brasws.telecom_m.com/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://bean.brasws.telecom_m.com/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> <types></types> <message name='IBrasUserManager_setIP'> <part name='connID' type='xsd:string'></part> <part name='ip' type='xsd:string'></part> </message> <message name='IBrasUserManager_setServiceResponse'> <part name='return' type='xsd:boolean'></part> </message> <message name='IBrasUserManager_setIPResponse'> <part name='return' type='xsd:boolean'></part> </message> <message name='IBrasUserManager_setService'> <part name='connID' type='xsd:string'></part> <part name='service' type='xsd:string'></part> </message> <portType name='IBrasUserManager'> <operation name='setIP' parameterOrder='connID ip'> <input message='tns:IBrasUserManager_setIP'></input> <output message='tns:IBrasUserManager_setIPResponse'></output> </operation> <operation name='setService' parameterOrder='connID service'> <input message='tns:IBrasUserManager_setService'></input> <output message='tns:IBrasUserManager_setServiceResponse'></output> </operation> </portType> <binding name='IBrasUserManagerBinding' type='tns:IBrasUserManager'> <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/> <operation name='setIP'> <soap:operation soapAction=''/> <input> <soap:body namespace='http://bean.brasws.telecom_m.com/' use='literal'/> </input> <output> <soap:body namespace='http://bean.brasws.telecom_m.com/' use='literal'/> </output> </operation> <operation name='setService'> <soap:operation soapAction=''/> <input> <soap:body namespace='http://bean.brasws.telecom_m.com/' use='literal'/> </input> <output> <soap:body namespace='http://bean.brasws.telecom_m.com/' use='literal'/> </output> </operation> </binding> <service name='BrasUserManagerBeanService'> <port binding='tns:IBrasUserManagerBinding' name='BrasUserManagerBeanPort'> <soap:address location='http://s-makarov.telecom-m.com:8080/BrasUserManagerBeanService/BrasUserManagerBean'/> </port> </service> </definitions>
|
MS Soap toolkit создает сообщение
| Код | <?xml version="1.0" encoding="UTF-8" standalone="no"?> <SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAPSDK4:setService xmlns:SOAPSDK4="http://bean.brasws.telecom_m.com/"> <SOAPSDK4:connID>123456789</SOAPSDK4:connID> <SOAPSDK4:service>128</SOAPSDK4:service> </SOAPSDK4:setService> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
|
JbossWS в ответ на сообщение говорит
| Код | Cannot find child element: connID |
Товарищи в JBoss'е сказали, что это сообщение не соответствует wsdl, неправильно указан namespace (дословно "According to the wsdl the first message is invalid because it incorectly namespace qualifies the rpc parameters.") Я, если честно, не могу понять, почему. Для всего элемента "definition" указан targetNamespace. Если я правильно понимаю, все элементы, определенные внутри и не имеющие ns-префикса, имеют заданный Namespace. Тогда почему я не могу указать его (в виде префикса) в элементах "connID","service"???
Но это все лирика. Нужны способы заставить работать MS Soap toolkit 3.0 c моим ws. |