我在 Windows 7 的命令提示符下运行 JDK 1.8.0_51 wsimport。通过 HTTPS 访问 WSDL URL:
wsimport -keep -Xnocompile https://...?wsdl
WSDL 包含对也可通过 HTTPS 访问的 XSD 的引用:
...schemaLocation="https://...?xsd=1"
我收到这个警告:
[WARNING] schema_reference: Failed to read schema document '...?xsd=1', because 'https' access is not allowed due to restriction set by the accessExternalSchema property.
该工具确实生成了客户端 Java 代码,但我不确定此代码是否正确。
我尝试按照 WebService Client Generation Error with JDK8 中提供的解决方案进行操作通过使用 javax.xml.accessExternalSchema=all 创建一个 jaxp.properties 文件并将该文件放在 %JAVA_HOME%\jre\lib 中。没有影响。
我也试过把这个文件放在其他子目录下,比如%JAVA_HOME%\lib(在http://docs.oracle.com/javase/7/docs/api/javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA中提到),%JAVA_HOME%\bin,都没有用。
因此,问题归结为:如何在 wsimport 上下文中指示 JAXP 允许 HTTPS 协议(protocol)?似乎没有任何 wsimport 命令行选项来传达这样的设置。
关于如何完成此操作还有其他建议吗?
最佳答案
尝试添加选项 -J-Djavax.xml.accessExternalSchema=all
。
关于java - 由于 XSD 上的 HTTPS 而导致的 wsimport schema_reference 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996694/