Отличный WSClient и document / literal WS

#java #web-services #groovy

#java #веб-сервисы #groovy

Вопрос:

У меня есть WS avaialbel @http://domain.com/Service?wsdl. Wsdl импортирует несколько определений XSD. Когда я попытался вызвать службу, как показано ниже, я получаю исключение, в котором говорится, что не удается найти xsd-файлы на сервере, что нормально, поскольку xsd-файлы там отсутствуют. Мой вопрос в том, как сообщить WSClient разрешить xsd-файлы из classpath или файловой системы и игнорировать их, чтобы получить их с сервера?

 def proxy = new WSClient("http://domain/Service?wsdl", this.class.classLoader)
        proxy.initialize()



Caused by: java.lang.reflect.InvocationTargetException
    at org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)
    ... 19 more
Caused by: java.lang.RuntimeException: Error compiling schema from WSDL at {http://domain/Service/IcTransactionService?wsdl}: http://domain/Service/RequestImpl1-0.xsd
    ... 20 more
Caused by: java.io.FileNotFoundException: http://domain/Service/RequestImpl1-0.xsd
    ... 18 more
Caused by: java.io.FileNotFoundException: http://domain/Service/RequestImpl1-0.xsd
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1434)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
    at com.sun.tools.internal.xjc.reader.internalizer.DOMForest.parse(DOMForest.java:383)
    ... 16 more
  

Ответ №1:

  1. Загрузите WSDL и XSDSDS в папку и замените все удаленные ссылки XSD в WSDL их локальным аналогом [Относительный путь].

  2. Создайте WS-клиент и используйте его.

Много раз тестировался с Axis, Metro и XFire

Пожалуйста, чувствуйте себя комфортно, чтобы вернуться в случае каких-либо проблем.

Комментарии:

1. Спасибо за сообщение, но я уже знаю, что это решение работает. Мне интересно, могу ли я каким-либо образом предоставить схему клиенту.

2. @Pangea Вы можете объединить эти схемы вместе со своим клиентским jar.