Получение DOCTYPE запрещено, если для функции "http://apache.org/xml/features/disallow-doctype-decl" установлено значение true - PullRequest
0 голосов
/ 20 февраля 2020

Я получаю

DOCTYPE запрещен, когда для функции "http://apache.org/xml/features/disallow-doctype-decl" установлено значение true
строка 1 из https://core4.gatewayedi.com/v1/caqhcoreiv/caqhcorev4.svc?wsdl

ошибка при использовании wsimport для генерации java классов из файла wsdl.

Есть ли какое-либо решение или решение этой проблемы, особенно при использовании wsimport?

Ниже приведена команда, которую я использовал, а также полный ответ, полученный от wsimport:

wsimport" -Xnocompile -extension -clientjar my.jar -d . -generateJWS https://core4.gatewayedi.com/v1/caqhcoreiv/caqhcorev4.svc?wsdl   

синтаксический анализ WSDL ...

[ОШИБКА] DOCTYPE не разрешается, когда функция "http://apache.org/xml/features/disallow-doctype-decl" установлена ​​в значение true. строка 1 из https://core4.gatewayedi.com/v1/caqhcoreiv/caqhcorev4.svc?wsdl

[ОШИБКА] DOCTYPE запрещена, когда для функции "http://apache.org/xml/features/disallow-doctype-decl" установлено значение true.

Не удалось прочитайте документ WSDL: https://core4.gatewayedi.com/v1/caqhcoreiv/caqhcorev4.svc?wsdl, поскольку 1) не смог найти документ; / 2) документ не может быть прочитан; 3) элемент root документа не является.

[ОШИБКА] Не удалось найти службу wsdl: в предоставленных WSDL:

Как минимум один WSDL с хотя бы одним необходимо предоставить определение службы.

Не удалось проанализировать WSDL.

Загрузка WSDL и связанных метаданных

Исключение в потоке "main" java .lang.IllegalStateException : DOMStreamReader: Вызов next () в END_DOCUMENT на com.sun. xml .internal.ws.streaming.DOMStreamReader._next (DOMStreamReader. java: 764) на com.sun. xml .internal.ws.streaming .DOMStreamReader.next (DOMStreamReader. java: 737) в com.sun. xml .internal.ws.util. xml .XMLStreamReaderToXMLStreamWriter.bridge (XMLStreamReaderToXMLStreamWriter. java: 92) в com.sun.to .internal.ws.util.WSDLFetcher.fetchFile (WSDLFetcher. java: 121) на com.sun.tools.internal.ws.util.WSDLFetcher.fetchWsdls (WSDLFetcher. java: 86) на com.sun.tools .internal.ws.wscompile.WsimportTool.buildWsdlModel (WsimportTool. java: 437) на com.sun.tools. internal.ws.wscompile.WsimportTool.run (WsimportTool. java: 190) в com.sun.tools.internal.ws.wscompile.WsimportTool.run (WsimportTool. java: 168) в sun.reflect.NativeMetholAccess invoke0 (Native Method) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. * 1068.for. вызвать (Method. java: 498) на com.sun.tools.internal.ws.Invoker.invoke (Invoker. java: 159) на com.sun.tools.internal.ws.WsImport.main (WsImport. java: 42)

1 Ответ

1 голос
/ 20 февраля 2020

Похоже, что поведение команды wsimport чувствительно к регистру. В этом ответе упоминается нечто подобное.

Клиент был сгенерирован с помощью (wsimport пакета с Oracle JDK версии 1.8.0_202-b08):

wsimport -Xnocompile -extension -clientjar my.jar -d . -generateJWS https://core4.gatewayedi.com/V1/CAQHCoreIV/caqhcoreV4.svc?wsdl

Принципиальным отличием является использование чувствительного регистра в URL. URL https://core4.gatewayedi.com/V1/CAQHCoreIV/caqhcoreV4.svc?wsdl совпадает с записью location в файле WSDL.

...