#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:
-
Загрузите WSDL и XSDSDS в папку и замените все удаленные ссылки XSD в WSDL их локальным аналогом [Относительный путь].
-
Создайте WS-клиент и используйте его.
Много раз тестировался с Axis, Metro и XFire
Пожалуйста, чувствуйте себя комфортно, чтобы вернуться в случае каких-либо проблем.
Комментарии:
1. Спасибо за сообщение, но я уже знаю, что это решение работает. Мне интересно, могу ли я каким-либо образом предоставить схему клиенту.
2. @Pangea Вы можете объединить эти схемы вместе со своим клиентским jar.