我需要在项目中使用web服务。我使用NetBeans,所以我右键单击我的项目,并尝试添加一个新的“Web服务客户端”。上次我检查时,这是创建web服务客户机的方法。但它导致了一个AssertionError,说:
java.lang.AssertionError: org.xml.sax.SAXParseException;systemId: jar文件:/道路/ / glassfish /模块/ jaxb-osgi.jar ! / com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd;lineNumber: 52个;columnNumber: 88;schema_reference:读取架构文档'xjc失败。由于accessExternalSchema属性设置的限制,不允许访问“文件”。
NetBeans的默认Java平台是JDK8 (Oracle的官方版本),所以当我更改NetBeans .conf文件并将JDK7(也来自Oracle)作为我的默认平台时,一切都工作得很好。所以我认为问题出在JDK8上。这是我的java -version输出:
Java版本“1.8.0”
Java(TM) SE运行时环境(build 1.8.0-b132)
Java HotSpot(TM) 64位服务器虚拟机(build 25.0-b70,混合模式)
目前,我将JDK7作为默认的Java平台。如果有让JDK8工作的方法,请分享。
在测试glassfish 4.0 web服务器上的web服务程序时,我在Eclipse中也遇到了类似的错误:
java.lang.AssertionError: org.xml.sax.SAXParseException;systemId:包:/ / 158.0:1 / com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd;lineNumber: 52个;columnNumber: 88;schema_reference:读取架构文档'xjc失败。由于accessExternalSchema属性设置的限制,'bundle'访问是不允许的。
我已经在jaxp中添加了javax.xml.accessExternalSchema = All。属性,但不为我工作。
然而,我在下面找到了一个适合我的解决方案:
对于GlassFish服务器,我需要修改GlassFish的domain.xml,
path:<path>/glassfish/domains/domain1或domain2/config/domain.xml),添加<jvm-options>-Djavax.xml。accessExternalSchema=all</jvm-options>在<java-config>标签下
....
< java-config >
...
< jvm选项> -Djavax.xml.accessExternalSchema = < / jvm选项>
< / java-config >
...然后重新启动GlassFish服务器
另一个解决方案:wiki.netbeans.org
当从Web服务或WSDL文件生成Web服务客户端时,IDE中的Web服务客户端向导将解析WSDL文件。需要修改IDE配置文件(netbeans.conf),将以下开关添加到netbeans_default_options. conf中。您需要重新启动IDE才能使更改生效。
-J-Djavax.xml.accessExternalSchema=all
当部署到GlassFish时,您需要启用对外部模式的访问,以便为web服务生成测试客户端。要启用访问,您需要修改GlassFish服务器的配置文件(GLASSFISH_INSTALL/ GlassFish /domains/domain1/config/domain.xml),并添加以下JVM选项元素。您需要重新启动服务器才能使更改生效。
</java-config>
...
<jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options>
</java-config>
对于没有管理员权限的gradle用户,这里有一个提示:将这一行添加到你的jaxb-task中:
System.setProperty('javax.xml.accessExternalSchema', 'all')
它看起来是这样的:
jaxb {
System.setProperty('javax.xml.accessExternalSchema', 'all')
xsdDir = "${project.name}/xsd"
xjc {
taskClassname = "com.sun.tools.xjc.XJCTask"
args = ["-npa", "-no-header"]
}
}
启用对外部模式的访问
您需要使IDE和GlassFish Server能够访问外部模式来解析web服务的WSDL文件。要启用访问,您需要修改IDE和GlassFish服务器的配置文件。有关更多详细信息,请参阅FAQ如何使用外部模式启用WSDL解析?
配置IDE
要从web服务或WSDL文件在IDE中生成web服务客户端,您需要修改IDE配置文件(netbeans.conf),将以下开关添加到netbeans_default_options中。
-J-Djavax.xml.accessExternalSchema=all
有关查找和修改Netbeans . Conf配置文件的更多信息,请参见Netbeans Conf FAQ。
配置GlassFish服务器
如果您部署到GlassFish服务器,您需要修改GlassFish服务器的配置文件(domain.xml),以使服务器能够访问外部模式来解析wsdl文件并生成测试客户端。要启用对外部模式的访问,打开GlassFish配置文件(GLASSFISH_INSTALL/ GlassFish /domains/domain1/config/domain.xml)并添加以下JVM选项元素(粗体部分)。您需要重新启动服务器才能使更改生效。
</java-config>
...
<jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options>
</java-config>