Мне нужно использовать веб-сервис в моем проекте. Я использую NetBeans, поэтому я щелкнул правой кнопкой мыши по своему проекту и попытался добавить новый «Клиент веб-службы». В прошлый раз, когда я проверял, это был способ создания клиента веб-службы. Но это привело к AssertionError, говоря:
java.lang.AssertionError: org.xml.sax.SAXParseException; systemId: jar: file: /path/to/glassfish/modules/jaxb-osgi.jar! /com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; номер строки: 52; номер столбца: 88; schema_reference: Не удалось прочитать документ схемы « xjc.xsd », поскольку доступ к «файлу» не разрешен из-за ограничений, установленных свойством accessExternalSchema .
Платформой Java по умолчанию для NetBeans была JDK8 (официальная версия Oracle), поэтому, когда я изменил свой файл netbeans.conf и сделал JDK7 (также из Oracle) своим стандартным, все работало нормально. Так что я думаю, что проблема с JDK8. Вот мой java -version
вывод:
Java-версия «1.8.0»
Java (TM) SE Runtime Environment (сборка 1.8.0-b132)
Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 25.0-b70, смешанный режим)
На данный момент я держу JDK7 в качестве платформы Java по умолчанию. Если есть способ заставить JDK8 работать, пожалуйста, поделитесь.
Ответы:
Ну, я нашел решение. (на основе http://docs.oracle.com/javase/7/docs/api/javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA )
Создайте файл с именем
jaxp.properties
(если он не существует)/path/to/jdk1.8.0/jre/lib
и запишите в нем следующую строку:Вот и все. Наслаждайтесь JDK 8.
источник
/path/to/jdk1.8.0/lib
не в следующемjre
каталоге.Не фактический ответ, а скорее как ссылка.
Если вы используете плагин jaxws Maven и получаете то же сообщение об ошибке, добавьте указанное свойство в конфигурацию плагина:
источник
accessExternalSchema=all
Значение устанавливается по умолчанию , если вы используете более поздние версии (например , 0.12.3) изorg.jvnet.jaxb2.maven2:maven-jaxb2-plugin
плагина.Я запускаю ant build в Eclipse IDE (4.4, Luna, в Windows 7 x64). Вместо того, чтобы изменять установленную библиотеку JRE или какие-либо ant-скрипты (у меня есть несколько проектов, в состав которых входит XJC), я предпочитаю изменить настройки Eclipse «Настройки внешних инструментов» и добавить следующее к аргументам виртуальной машины для конфигурации сборки Ant:
источник
Следующие работы для wsimport 2.2.9 включены в jdk 1.8.0_66:
источник
wsimport
напрямую.В моем случае добавление:
чтобы jaxp.properties не работал, я должен добавить:
Моя среда - Linux Mint 17 и Java 8 Oracle. Я поставлю это как ответ для людей с такой же проблемой.
источник
Я проверил это для версии 2.4 артефакта org.codehaus.mojo, и это сработало ~
источник
-Djavax.xml.accessExternalSchema=all
настроен в объявлении вашего плагина. Это обсуждается в Netbeans Bug 244891Вот подсказка для пользователей без прав администратора: добавьте эту строку в вашу задачу jaxb:
это будет выглядеть так:
источник
Если вы столкнулись с этой проблемой при преобразовании wsdl в jave с помощью плагина cxf-codegen-plugin , то вы можете решить ее, настроив плагин для fork и предоставив дополнительную опцию «-Djavax.xml.accessExternalSchema = all» JVM.
источник
Я также получал похожий тип ошибок в Eclipse во время тестирования программы веб-сервиса на веб-сервере glassfish 4.0:
java.lang.AssertionError: org.xml.sax.SAXParseException; systemId: bundle://158.0:1/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 52; columnNumber: 88; schema_reference: Failed to read schema document 'xjc.xsd', because 'bundle' access is not allowed due to restriction set by the accessExternalSchema property.
Я добавил
javax.xml.accessExternalSchema = All
вjaxp.properties
, но оленья кожа работа для меня.Однако ниже я нашел решение, которое работает для меня: для сервера GlassFish мне нужно изменить
domain.xml
GlassFish, путь:<path>/glassfish/domains/domain1
илиdomain2/config/domain.xml
) и добавить<jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options>
под<java-config>
тегом<java-config> ... <jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options> </java-config>
... а затем перезапустите сервер GlassFishисточник
Включение доступа к внешней схеме
Вам нужно включить IDE и сервер GlassFish для доступа к внешней схеме для анализа файла WSDL веб-службы. Для обеспечения доступа вам необходимо изменить файлы конфигурации IDE и сервера GlassFish. Дополнительные сведения см. В разделе «Часто задаваемые вопросы». Как включить синтаксический анализ WSDL с внешней схемой? Конфигурирование IDE
Для создания клиента веб-службы в среде IDE из веб-службы или файла WSDL необходимо изменить файл конфигурации среды IDE (netbeans.conf), добавив следующий параметр в netbeans_default_options.
Дополнительные сведения о поиске и изменении файла конфигурации netbeans.conf см. В разделе часто задаваемых вопросов по Netbeans Conf. Настройка сервера GlassFish
При развертывании на сервере GlassFish необходимо изменить файл конфигурации сервера GlassFish (domain.xml), чтобы сервер имел доступ к внешним схемам для анализа файла wsdl и создания тестового клиента. Чтобы разрешить доступ к внешним схемам, откройте файл конфигурации GlassFish (GLASSFISH_INSTALL / glassfish / domains / domain1 / config / domain.xml) и добавьте следующий элемент опции JVM (выделен жирным шрифтом). Вам нужно будет перезагрузить сервер, чтобы изменения вступили в силу.
источник
При использовании Maven с IntelliJ IDE вы можете добавить
-Djavax.xml.accessExternalSchema=all
настройку Maven в разделе «Параметры JVM» для настройки средства запуска Maven Build Tools.источник
Это работает на jdk1.8.0_65
источник
Для тех, кто использует задачу ANT
wsimport
, способ передачи опции, предложенный @CMFly и указанный в документации, следующий:источник
Теперь это исправлено в версии 2.5 (выпущено в июл / 17). https://github.com/mojohaus/jaxws-maven-plugin/issues/8 .
Для версий 2.4.x есть обходной путь (как описано в https://github.com/mojohaus/jaxws-maven-plugin/issues/4 ):
источник
Я использовал его с обычным проектом Maven и решил его с помощью этой конфигурации зависимостей плагина для запуска
xjc plugin
:источник
jaxws-maven-plugin
до 2.5, как указано в других ответах mojohaus.org/jaxws-maven-plugin/usage.html Но, тем не менее, лучший ответ в моем случае, спасибо!Создайте файл с именем
jaxp.properties
(если он не существует) по пути к вашей "JDK версии / jre / lib", а затем добавьте в него следующую строку:источник
Другое решение по адресу: wiki.netbeans.org
Мастер клиента веб-службы в среде IDE анализирует файл WSDL при создании клиента веб-службы из файла веб-службы или файла WSDL. Вам нужно изменить файл конфигурации IDE (netbeans.conf), чтобы добавить следующий параметр в netbeans_default_options. Вам нужно будет перезапустить IDE, чтобы изменения вступили в силу.
При развертывании в GlassFish вам необходимо разрешить доступ к внешней схеме, чтобы создать тестовый клиент для веб-службы. Чтобы разрешить доступ, необходимо изменить файл конфигурации сервера GlassFish (GLASSFISH_INSTALL / glassfish / domains / domain1 / config / domain.xml) и добавить следующий элемент опции JVM. Вам нужно будет перезагрузить сервер, чтобы изменения вступили в силу.
источник
Если вы используете ant, вы можете добавить jvmarg к своим вызовам java:
источник
Очень простым переносимым решением было бы разместить следующую строку кода где-то в важной части вашего кода, часть которой вы уверены, что он будет выполняться (например, прямо в методе main):
Это устанавливает необходимое системное свойство программно, без необходимости вносить сложные изменения в maven pom.xml (что по какой-то причине у меня не сработало).
источник
Я только что попробовал, что если вы используете
SoapUI (5.4.x)
и используетеApache CXF
инструмент для генерации кода Java, положитьjavax.xml.accessExternalSchema = all
вYOUR_JDK/jre/lib/jaxp.properties
файл также работает.источник
Другой вариант - обновить скрипт оболочки wsimport.sh, добавив следующее:
Файл wsimport.sh находится в этом каталоге:
JAXWS-ri.2.2.28 / бен
exec "$ JAVA" $ WSIMPORT_OPTS -Djavax.xml.accessExternalSchema = all -jar "$ JAXWS_HOME / lib / jaxws-tools.jar" "$ @"
источник
Еще одно упоминание: если вы используете
maven-jaxb2-plugin
версию до версии 0.9.0, вы можете использовать обходной путь, описанный для этой проблемы , в котором это поведение влияло на плагин.источник
NetBeans обновляет свое руководство для JDK8 и эту проблему:
Начало работы с веб-службами JAX-WS -> Включение доступа к внешней схеме
источник