J'ai besoin de consommer un service web dans mon projet. J'utilise NetBeans donc j'ai fait un clic droit sur mon projet et j'ai essayé d'ajouter un nouveau "client de service Web". La dernière fois que j'ai vérifié, c'était la façon de créer un client de service Web. Mais cela a abouti à une AssertionError, disant:
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; lineNumber: 52; columnNumber: 88; schema_reference: échec de lecture du document de schéma ' xjc.xsd ', car l'accès au 'fichier' n'est pas autorisé en raison de la restriction définie par la propriété accessExternalSchema .
La plate-forme Java par défaut pour NetBeans était JDK8 (la version officielle d'Oracle), donc quand j'ai changé mon fichier netbeans.conf et fait JDK7 (d'Oracle, aussi) par défaut, tout a bien fonctionné. Je pense donc que le problème est avec JDK8. Voici ma java -version
sortie:
Java version "1.8.0"
Java (TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot (TM) 64-Bit Server VM (build 25.0-b70, mode mixte)
Pour l'instant, je garde JDK7 comme plate-forme Java par défaut. S'il existe un moyen de faire fonctionner JDK8, veuillez le partager.
Réponses:
Eh bien, j'ai trouvé la solution. (basé sur http://docs.oracle.com/javase/7/docs/api/javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA )
Créez un fichier nommé
jaxp.properties
(s'il n'existe pas) sous/path/to/jdk1.8.0/jre/lib
puis écrivez cette ligne dedans:C'est tout. Profitez de JDK 8.
la source
/path/to/jdk1.8.0/lib
pas dans lejre
répertoire supplémentaire .Pas une vraie réponse mais plutôt une référence.
Si vous utilisez le plug-in jaxws Maven et que vous obtenez le même message d'erreur, ajoutez la propriété mentionnée à la configuration du plug-in:
la source
accessExternalSchema=all
valeur est définie par défaut si vous utilisez des versions ultérieures (comme 0.12.3) duorg.jvnet.jaxb2.maven2:maven-jaxb2-plugin
plugin.J'exécute des builds ant dans Eclipse IDE (4.4, Luna, sur Windows 7 x64). Plutôt que de modifier la bibliothèque JRE installée ou tout script ant (j'ai plusieurs projets qui incluent XJC dans leurs builds), je préfère changer les paramètres Eclipse "Configurations d'outils externes" et ajouter ce qui suit aux arguments VM pour la configuration de build Ant:
la source
Les travaux suivants pour wsimport 2.2.9 inclus dans jdk 1.8.0_66:
la source
wsimport
directe.Dans mon cas, en ajoutant:
à jaxp.properties n'a pas fonctionné, je dois ajouter:
Mon environnement est Linux Mint 17 et Java 8 Oracle. Je vais le mettre là comme réponse pour les personnes ayant le même problème.
la source
J'ai testé cela pour la version 2.4 de l'artefact org.codehaus.mojo et cela a fonctionné ~
la source
-Djavax.xml.accessExternalSchema=all
qui est configuré dans votre déclaration de plugin. Il est discuté dans Netbeans Bug 244891Voici un conseil pour les utilisateurs gradle sans droits d'administrateur: ajoutez cette ligne à votre tâche jaxb:
Il ressemblera à ceci:
la source
Si vous rencontrez ce problème lors de la conversion de wsdl en jave avec le plugin cxf-codegen , vous pouvez le résoudre en configurant le plugin en fork et en fournissant l'option JVM "-Djavax.xml.accessExternalSchema = all" supplémentaire.
la source
J'obtenais également un type d'erreur similaire dans Eclipse lors du test d'un programme de service Web sur le serveur Web 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.
J'ai ajouté
javax.xml.accessExternalSchema = All
dansjaxp.properties
, mais le travail de doesnot pour moi.Cependant, j'ai trouvé une solution ci-dessous qui fonctionne pour moi: Pour GlassFish Server, je dois modifier le
domain.xml
chemin d'accès de GlassFish,<path>/glassfish/domains/domain1
oudomain2/config/domain.xml
:) et ajouter,<jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options>
sous la<java-config>
balise<java-config> ... <jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options> </java-config>
... puis redémarrez le serveur GlassFishla source
Activation de l'accès au schéma externe
Vous devez activer l'IDE et le serveur GlassFish pour accéder au schéma externe afin d'analyser le fichier WSDL du service Web. Pour activer l'accès, vous devez modifier les fichiers de configuration de l'EDI et du serveur GlassFish. Pour plus de détails, consultez la FAQ Comment activer l'analyse de WSDL avec un schéma externe? Configuration de l'IDE
Pour générer un client de service Web dans l'IDE à partir d'un service Web ou d'un fichier WSDL, vous devez modifier le fichier de configuration IDE (netbeans.conf) pour ajouter le commutateur suivant à netbeans_default_options.
Pour plus d'informations sur la localisation et la modification du fichier de configuration netbeans.conf, consultez la FAQ Netbeans Conf. Configuration du serveur GlassFish
Si vous déployez sur le serveur GlassFish, vous devez modifier le fichier de configuration du serveur GlassFish (domain.xml) pour permettre au serveur d'accéder aux schémas externes pour analyser le fichier wsdl et générer le client de test. Pour activer l'accès aux schémas externes, ouvrez le fichier de configuration GlassFish (GLASSFISH_INSTALL / glassfish / domaines / domain1 / config / domain.xml) et ajoutez l'élément d'option JVM suivant (en gras). Vous devrez redémarrer le serveur pour que la modification prenne effet.
la source
Lorsque vous utilisez Maven avec IntelliJ IDE, vous pouvez ajouter
-Djavax.xml.accessExternalSchema=all
au paramètre Maven sous Options JVM pour la configuration de Maven Build Tools Runnerla source
Cela fonctionne sur jdk1.8.0_65
la source
Pour ceux qui utilisent la tâche ANT
wsimport
, un moyen de passer l'option comme suggéré par @CMFly et spécifié dans la documentation est le suivant:la source
Il est maintenant corrigé dans la version 2.5 (sortie en juillet / 17). https://github.com/mojohaus/jaxws-maven-plugin/issues/8 .
Pour les versions 2.4.x, il existe une solution de contournement (comme décrit dans https://github.com/mojohaus/jaxws-maven-plugin/issues/4 ):
la source
Je l'ai utilisé avec un projet maven normal et l'ai résolu avec cette configuration de dépendance de plugin pour exécuter
xjc plugin
:la source
jaxws-maven-plugin
à 2.5 comme spécifié dans les autres réponses mojohaus.org/jaxws-maven-plugin/usage.html Mais quand même, meilleure réponse dans mon cas, merci!Créez un fichier nommé
jaxp.properties
(s'il n'existe pas) sous le chemin de votre "version JDK / jre / lib" puis ajoutez-y cette ligne:la source
Une autre solution à résoudre: wiki.netbeans.org
L'assistant Web Service Client dans l'EDI analyse le fichier WSDL lors de la génération d'un client de service Web à partir d'un service Web ou d'un fichier WSDL. Vous devez modifier le fichier de configuration IDE (netbeans.conf) pour ajouter le commutateur suivant aux options netbeans_default_options. Vous devrez redémarrer l'IDE pour que la modification prenne effet.
Lors du déploiement sur GlassFish, vous devez activer l'accès au schéma externe pour générer un client de test pour un service Web. Pour activer l'accès, vous devez modifier le fichier de configuration du serveur GlassFish (GLASSFISH_INSTALL / glassfish / domaines / domain1 / config / domain.xml) et ajouter l'élément d'option JVM suivant. Vous devrez redémarrer le serveur pour que la modification prenne effet.
la source
Si vous utilisez ant, vous pouvez ajouter un jvmarg à vos appels java:
la source
Une solution portable très simple serait de placer la ligne de code suivante quelque part dans une partie cruciale de votre code, une partie dont vous êtes sûr qu'elle sera exécutée (par exemple directement dans la méthode principale):
Cela définit la propriété système requise par programme, sans avoir à effectuer des modifications maven pom.xml délicates (qui pour une raison quelconque ne fonctionnaient pas pour moi).
la source
Je viens d'essayer que si vous utilisez
SoapUI (5.4.x)
et utilisez l'Apache CXF
outil pour générer du code java, le mettrejavax.xml.accessExternalSchema = all
dans leYOUR_JDK/jre/lib/jaxp.properties
fichier fonctionne également.la source
Une autre alternative consiste à mettre à jour le script shell wsimport.sh en ajoutant ce qui suit:
Le wsimport.sh se trouve dans ce répertoire:
jaxws-ri.2.2.28 / bin
exec "$ JAVA" $ WSIMPORT_OPTS -Djavax.xml.accessExternalSchema = all -jar "$ JAXWS_HOME / lib / jaxws-tools.jar" "$ @"
la source
Autre référence: si vous utilisez le
maven-jaxb2-plugin
, avant la version 0.9.0, vous pouvez utiliser la solution de contournement décrite sur ce problème , dans laquelle ce comportement a affecté le plug-in.la source
NetBeans met à jour son didacticiel pour JDK8 et ce problème:
Prise en main des services Web JAX-WS -> Activation de l'accès au schéma externe
la source