Tag: jaxb

Java Spring Web服务客户端故障处理

我编写了一个与UPS Web服务一起使用的Web服务客户端(使用Java Spring和JAXB Marshaller)。 当我发送有效请求时,一切正常。 当我发送无效请求(重量> 150磅)时,UPS Web服务会响应SOAP Fault。 客户端应用程序失败了 org.springframework.oxm.UnmarshallingFailureException: JAXB unmarshalling exception; nested exception is javax.xml.bind.UnmarshalException: unexpected element (uri:”http://schemas.xmlsoap.org/soap/envelope/”, local:”Fault”). 显然我的程序无法破译Web服务返回的SOAP错误。 我写了一个自定义的FaultMessageResolver,但它没有被调用。 这是代码: public class UpsRateClient extends WebServiceGatewaySupport { public UpsRateClient(WebServiceMessageFactory messageFactory) { super(messageFactory); getWebServiceTemplate().setFaultMessageResolver(new UpsFaultMessageResolver()); } public RateResponse getRate(RateRequest rateRequest) { return (RateResponse) getWebServiceTemplate().marshalSendAndReceive(rateRequest, new UpsRequestWSMC()); } private class UpsFaultMessageResolver implements FaultMessageResolver […]

符号已定义。 使用JAXB属性来解决冲突

我有一个xsd文件(yahoo.xsd),我导入另一个xsd文件,如下所示: stock.xsd看起来像这样: 当我使用xjc进行编译时,我收到以下错误消息: [错误]属性“符号”已定义。 使用解决此冲突。 我基本上在SO上找到了这个解决方案( JAXB编译问题 – [错误]属性“任何”已经定义 )但是我无法让它工作。 我猜我的XPath是错的。 这是我正在使用的绑定文件: 如果我现在正在使用xjc -b进行编译,则表示XPath评估会导致空目标节点。 我可能要重命名Symbol定义,然后重命名? 怎么自动这样做?

无法在jaxb-xjc-2.2.5-2.jar中解析名称’xjc:globalJavaType’

Maven项目,转移到另一台PC后出错。 为什么? [INFO] [jaxb2:generate {execution: default-cli}] [INFO] ———————————————————————— [ERROR] FATAL ERROR [INFO] ———————————————————————— [INFO] org.xml.sax.SAXParseException; systemId: jar:file:/.m2/repository/com/sun/xml/bind/jaxb-xjc/2.2.5-2/jaxb-xjc-2.2.5-2.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 86; columnNumber: 48; src-resolve: Cannot resolve the name ‘xjc:globalJavaType’ to a(n) ‘group’ component. [INFO] ———————————————————————— [INFO] Trace java.lang.AssertionError: org.xml.sax.SAXParseException; systemId: jar:file:/.m2/repository/com/sun/xml/bind/jaxb-xjc/2.2.5-2/jaxb-xjc-2.2.5-2.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 86; columnNumber: 48; src-resolve: Cannot resolve the name ‘xjc:globalJavaType’ to a(n) ‘group’ component. at com.sun.tools.xjc.SchemaCache.newValidator(SchemaCache.java:78) […]

java:在一个webapp中使用同一个lib的两个版本

我遇到了以下问题:我的webapp中有一个模块需要jaxb 1.x而另一个模块需要jaxb 2.x. 第一个模块不适用于新版本的jaxb,反之亦然。 我怎样才能在一个项目中使用这两个jar子? 谢谢。

将json对象解析为字符串

我有一个关于我正在构建的Web应用程序的问题,其中我有一个接收json字符串的REST服务。 Json字符串类似于: { “string” : “value”, “string” : “value”, “object” : { “string” : “value”, “string” : “value”, …. } } 我正在使用resteasy来解析使用下面的jackson的json字符串。 我有一个jaxb注释类,我想将“对象”完全解析为String变量。 我想这样做的原因是以后能够使用正确的解析器解析json(它取决于发送请求的应用程序,因此事先无法知道)。 我的jaxb注释类看起来像这样: @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) public class Test{ @XmlElement(type = String.class) private String object; //getter and setter … } 当我执行其余的调用并让jackson解析这段代码时,我得到了一个 Can not deserialize instance of java.lang.String out of START_OBJECT token 错误。 所以实际上我正在尝试将一个json字符串(一个json对象)解析为一个String。 我似乎找不到有类似问题的人。 […]

将Java Date对象映射到XML Schema日期时间格式

我在将Java数据类型映射到标准Schema Date数据类型时遇到了一些问题。 我有一个简单的类,我这样注释。 period实例变量是Java Date对象类型。 @XmlAccessorType(value = XmlAccessType.NONE) public class Chart { @XmlElement private double amount; @XmlElement private double amountDue; @XmlElement private Date period; //constructor getters and setters } 这是我的Web服务 @WebService public class ChartFacade { @WebMethod public Chart getChart() throws ParseException { SimpleDateFormat df = new SimpleDateFormat(“yyyy-mm-dd”); Chart chart = new Chart(20.0,20.5, df.parse(“2001-01-01”)); return chart; […]

Java到XSD或XSD到Java

我知道,使用JAXB,您可以从XSD生成Java文件,并且您还可以从带注释的POJO生成XSD 。 各有哪些优缺点? 一个整体比另一个好吗? 我们基本上希望将事件序列化为XML格式的日志。

告诉JAXB使用注释将解组为Date类

将JAXB与Java-First一起使用时, java.util.Date类型的字段/属性将被编组并解组为xs:dateTime并且所有内容都按预期工作。 但是如果字段/属性的类型是Object ,则JAXB将xs:dateTime解组为XMLGregorianCalendarImpl 。 我需要找到一种方法,使用注释使JAXB将java.util.Date的日期时间值解组为java.util.Date 。 否则,我需要在每个用例中查看所有未编组的值。 即使在包含Object字段的类上定义了一些after-unmarshall-hook并手动转换实例也会很好。 但我找不到任何可以这种方式使用的东西。 请注意,我对JAXB上下文的访问权限有限,因为它在Apache CXF中使用。

使用JAXB生成的XML中的重复字段

这是我的情景。 我有一个通用类: public class Tuple extends ArrayList { //… public Tuple(T …members) { this(Arrays.asList(members)); } @XmlElementWrapper(name = “tuple”) @XmlElement(name = “value”) public List getList() { return this; } } 和一个儿童class: public class StringTuple extends Tuple { public StringTuple(String …members) { super(members); } //explanation of why overriding this method soon … @XmlElementWrapper(name = “tuple”) @XmlElement(name = […]

来自Webservice的JAXB类编组错误

我有一些wsimport生成的JAXB类 wsimport -d src/main/java -keep -extension -p my.package http://www.OpenLigaDB.de/Webservices/Sportsdata.asmx?WSDL 我将演示这个类的问题(我自己只添加了@XmlRootElement): package my.package; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = “Sport”, propOrder = {“sportsID”,”sportsName”}) @XmlRootElement(name = “sport”) //Added by myself public class Sport { protected int sportsID; protected String sportsName; public int getSportsID() {return sportsID;} public void setSportsID(int value) {this.sportsID = value;} […]