Нашел пример в интернете по созданию своего WEB сервия на Java и подключению к нему. После чего решил переписать этот вариант под запрос к 1С. В итоге функция на сервисе должна вернуть строку.
Основной класс
package ru.WebConnect.client; // нужно, чтобы получить wsdl описание и через него // дотянуться до самого веб-сервиса import java.net.URL; import java.net.Authenticator; // такой эксепшн возникнет при работе с объектом URL import java.net.MalformedURLException; import java.net.PasswordAuthentication; // классы, чтобы пропарсить xml-ку c wsdl описанием // и дотянуться до тега service в нем import javax.xml.namespace.QName; import javax.xml.ws.BindingProvider; import javax.xml.ws.Service; import ru.WebConnect.ws.HelloWebService; public class HelloWebServiceClient { public static void main(String[] args) throws MalformedURLException { // создаем ссылку на wsdl описание URL url = new URL("http://localhost:1515/JavaTest/ws/LoadNomen.1cws?wsdl"); // Параметры следующего конструктора смотрим в самом первом теге WSDL описания - definitions // 1-ый аргумент смотрим в атрибуте targetNamespace // 2-ой аргумент смотрим в атрибуте name QName qname = new QName("http://localhost/JavaTest/", "NewWDS"); // Теперь мы можем дотянуться до тега service в wsdl описании, Service service = Service.create(url, qname); // а далее и до вложенного в него тега port, чтобы // получить ссылку на удаленный от нас объект веб-сервиса HelloWebService hello = service.getPort(HelloWebService.class); // Ура! Теперь можно вызывать удаленный метод System.out.println(hello.LoadNomen());//getHelloString("JavaRush")); } }
Код интерфесай
package ru.WebConnect.ws; // это аннотации, т.е. способ отметить наши классы и методы, // как связанные с веб-сервисной технологией import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; // говорим, что наш интерфейс будет работать как веб-сервис @WebService // говорим, что веб-сервис будет использоваться для вызова методов @SOAPBinding(style = SOAPBinding.Style.RPC) public interface HelloWebService { @WebMethod public String LoadNomen(); }
Вот как выглядить XML
This XML file does not appear to have any style information associated with it. The document tree is shown below. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://localhost/JavaTest/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://localhost/JavaTest/" name="NewWDS" targetNamespace="http://localhost/JavaTest/"> <types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://localhost/JavaTest/" targetNamespace="http://localhost/JavaTest/" elementFormDefault="qualified"> <xs:element name="LoadNomen"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> <xs:element name="LoadNomenResponse"> <xs:complexType> <xs:sequence> <xs:element name="return" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </types> <message name="LoadNomenRequestMessage"> <part name="parameters" element="tns:LoadNomen"/> </message> <message name="LoadNomenResponseMessage"> <part name="parameters" element="tns:LoadNomenResponse"/> </message> <portType name="NewWDSPortType"> <operation name="LoadNomen"> <input message="tns:LoadNomenRequestMessage"/> <output message="tns:LoadNomenResponseMessage"/> </operation> </portType> <binding name="NewWDSSoapBinding" type="tns:NewWDSPortType"> <soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="LoadNomen"> <soapbind:operation style="document" soapAction="http://localhost/JavaTest/#NewWDS:LoadNomen"/> <input> <soapbind:body use="literal"/> </input> <output> <soapbind:body use="literal"/> </output> </operation> </binding> <binding name="NewWDSSoap12Binding" type="tns:NewWDSPortType"> <soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="LoadNomen"> <soap12bind:operation style="document" soapAction="http://localhost/JavaTest/#NewWDS:LoadNomen"/> <input> <soap12bind:body use="literal"/> </input> <output> <soap12bind:body use="literal"/> </output> </operation> </binding> <service name="NewWDS"> <port name="NewWDSSoap" binding="tns:NewWDSSoapBinding"> <documentation> <wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1"/> </documentation> <soapbind:address location="http://localhost:1515/JavaTest/ws/LoadNomen.1cws"/> </port> <port name="NewWDSSoap12" binding="tns:NewWDSSoap12Binding"> <soap12bind:address location="http://localhost:1515/JavaTest/ws/LoadNomen.1cws"/> </port> </service> </definitions>
ПО итогу программа выдает ошибку
Exception in thread "main" javax.xml.ws.WebServiceException: Undefined port type: {http://ws.WebConnect.ru/}HelloWebService at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(Unknown Source) at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(Unknown Source) at javax.xml.ws.Service.getPort(Unknown Source) at ru.WebConnect.client.HelloWebServiceClient.main(HelloWebServiceClient.java:36)