web-services – 如何指定jaxws和jaxb绑定以实现@XmlRootElement
发布时间:2020-12-14 18:39:00 所属栏目:资源 来源:网络整理
导读:我继承了一个与基于SOAP的Web服务进行通信的项目.虽然我已经做了很多年的 Java并且在XML上做了很多工作,但我在这方面总是很棒. 我们有一个服务的WSDL文件,它包含顶部的模式和下面的所有消息定义.在问题的核心,当我试图通过我们的代码连接到服务,我得到了可怕
我继承了一个与基于SOAP的Web服务进行通信的项目.虽然我已经做了很多年的
Java并且在XML上做了很多工作,但我在这方面总是很棒.
我们有一个服务的WSDL文件,它包含顶部的模式和下面的所有消息定义.在问题的核心,当我试图通过我们的代码连接到服务,我得到了可怕不能编组型“https.api_blah_com.services.v4.Product”为元素,因为它缺少一个@XmlRootElement注释] 我的项目已经有一个jaxws绑定文件: <jaxws:bindings wsdlLocation="../resources/wsdl/BlahAPI.wsdl" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle> <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='https:api.blah.com/services/v4']"> <jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xjc:generateElementProperty>true</xjc:generateElementProperty> </jxb:globalBindings>` </jaxws:bindings> </jaxws:bindings> 现在我已经读过了为了获得用@XmlRootElement生成的所有Java类,我需要添加一个jaxb:globalBinding打开简单模式. 我已经尝试添加到我的本地WSDL副本: <xs:annotation> <xs:appinfo> <jaxb:globalBindings> <xjc:simple /> </jaxb:globalBindings> </xs:appinfo> </xs:annotation> 但是JAXB编译器抱怨它不能遵守这个globalBindings自定义,因为它附加到错误的地方或与其他绑定不一致. 所以我尝试添加另一个绑定文件,仅用于jaxb,如下所示: <?xml version="1.0" encoding="UTF-8"?> <jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <jaxb:bindings schemaLocation="../resources/wsdl/blah.wsdl"> <jaxb:globalBindings> <xjc:simple /> </jaxb:globalBindings> </jaxb:bindings> </jaxb:bindings> 但后来我得到一个错误,blah.wsdl不是这个编译的一部分. 我非常接近这个服务……我只是无法通过这一件事,这对我来说都是新的,所以我不确定还有什么可以尝试的. 我可以将他们的WSDL拆分成XSD和WSDL吗?是否需要这项工作? 解决方法
我认为你必须在这个位置绑定xsd文件而不是wsdl. < jaxb:bindings schemaLocation =“../ resources / wsdl / blah.wsdl”>.请参阅
link的“外部绑定自定义文件”部分.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |