问题标签 [spring-oxm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3360 浏览

java - 使用 Spring MVC 和 JIBX 编组不同的类

我们正在尝试使用 Spring MVC 构建一些 RESTful 服务。我们将提供几种表示形式:XML、HTML 和 JSON。我们想使用 JiBX 作为 OXM 技术。

我们目前很难弄清楚如何将 Spring 与 JiBX 连接起来。例如,如果我们想连接一个类,Customer我们只需定义一个JibxMarshallerXML MarshallingView,然后将它添加到我们的ContentNegotiatingViewResolver. 这很好用。

问题是我们不确定如何连接多个类的编组,例如,CustomerUser. 每个JibxMarshaller只能支持一个类(与可以支持多个类的 Jaxb2Marshaller 不同)。我们尝试为每个类声明一个编组器,但MarshallingView唯一支持一个编组器。声明多个MarshallingViews 不起作用(它似乎只有第一个起作用)。

感谢您的建议。谢谢。


根据以下 Ritesh 的回答进行更新:

原来我是targetClassJibxMarshaller. 我认为这意味着编组器仅适用于单个类,但是,它似乎只是使用目标类作为查找所有相关绑定的一种方式。因此,解决方案是仅使用一个编组器,使用您绑定的一组类中的任意目标类。例如:

0 投票
1 回答
277 浏览

java - Spring OXM 不适用于 Struts 1

我使用Spring OXM以及Struts 1但不使用将 Struts 与 Spring IOC 集成。这是因为应用程序是一个旧应用程序,我只是添加一个涉及 XML 绑定的模块,我无意更改应用程序的体系结构。

我有一个动作类调用ClasspathXmlApplicationContextOXM 的 bean 注入。

这是我的春季上下文 XML:

动作类:

服务等级:

Web 应用程序HTTP 500 没有任何错误消息或堆栈跟踪。但是,如果我将 的配置位置更改为ClasspathXmlApplicationContext无效位置,Spring 会引发异常。

似乎问题出在 Spring 注入中。

当出现错误但没有错误消息时,这很烦人。它会让你卡住几天。

谢谢

将要

0 投票
3 回答
539 浏览

java - 如何在一个 xml 中编组多个 pojo?

是否可以使用 o/x 映射器在单个 xml 中编组所有 pojo(相同类型)?就像我想生成以下xml文件

这里record1和record 2是相同类型的对象。意味着我想在xml文件中写入第一个record1对象而不是在同一个xml文件中写入record2对象。

0 投票
2 回答
5131 浏览

java - “不支持的 javax.xml.parser.transform.Result 参数”导致 JAXB 编组失败

我正在使用 Spring 3.1.1 和他们的 OXM 东西,使用 RestTemplate 将请求发布到另一台服务器。我正在使用一个名为 ClassTermCollection 的类作为它的请求和响应端,并且它使用 @XmlRootElement 等进行了注释,并且一直到今天都可以正常工作。但是,当 JAXB 尝试创建请求时,突然出现以下错误(即,在对服务器进行 http 调用之前,在客户端引发了此错误)。

谷歌几乎没有透露任何关于这个特定错误的有用信息,而且 - 更糟糕的是 - Sun 显然没有将源代码发送到抛出异常的类,使用 JDK ......所以我什至无法一直调试对此的根源,以准确确定正在发生的事情。

编辑:(参见stacktrace下面的附加评论)

[错误] org.springframework.http.converter.HttpMessageNotWritableException:无法写入 [pmt.model.collections.ClassTermCollection@6576fac];嵌套异常是 org.springframework.oxm.MarshallingFailureException: JAXB 编组异常;嵌套异常是 javax.xml.bind.MarshalException: org.springframework.http.converter.xml.MarshallingHttpMessageConverter.writeToResult(MarshallingHttpMessageConverter.java:134) [ERROR] at unsupported javax.xml.parser.transform.Result parameter [ERROR] at org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter.writeInternal(AbstractXmlHttpMessageConverter.java:66) [错误] 在 org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:179) [错误] 在 org.springframework。网络客户端。HttpConnection.handleRequest(HttpConnection.java:505) [错误] 在 org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) [错误] 在 org.mortbay.jetty.HttpParser.parseNext(HttpParser.java: 647)[错误]在org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)[错误]在org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)[错误]在org.mortbay。 io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) [ERROR] at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) [ERROR] 原因:org.springframework.oxm.MarshallingFailureException: JAXB 编组异常;嵌套异常是 javax.xml.bind.MarshalException: org.springframework.oxm.jaxb 中不支持的 javax.xml.parser.transform.Result 参数 [ERROR]。

好的,在网上找到了 com.sun.xml.internal.bind.v2.runtime.MarshallerImpl 的源代码1,现在我看到(有点)发生了什么。该代码查看 Result 实例,如果它是 StreamResult(在我的情况下),它会尝试取消引用 StreamResult 的 outputstream、writer 和 systemId 字段,并使用这些值来构造 Writer。如果它们都为空,它会落入方法的底部并抛出“不支持的格式”异常,这就是发生在这里。

在此之上,在 Spring org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter 类中,我们到达构造 StreamResult 的这一行,将 outputMessage.getBody() 的结果传递给 StreamResult 构造函数。我在这里得到空值,因此问题从下面冒出来。

@Override protected final void writeInternal(T t, HttpOutputMessage outputMessage) throws IOException { writeToResult(t, outputMessage.getHeaders(), new StreamResult(outputMessage.getBody())); }

解决了

得到这个工作......我忘记了它原来是什么的所有细节;但这基本上是一个疯狂的情况,一个同事添加了一些子类化 HttpClient 类的代码,而他的类没有完全履行接口的约定,当被我的代码调用时,它导致了这个错误。这是看起来像 JAXB 错误的奇怪情况之一,但事实证明它与 JAXB 完全无关。

0 投票
1 回答
1495 浏览

spring-ws - Spring OXM 3 + JiBXException:没有为类定义编组器

我在我的应用程序中使用了 Spring OXM 和 JiBX。

下面是我的 Spring 配置文件

下面是控制器类

当我发送 XML 请求时,它已成功编组,但为了响应,我收到以下错误消息。

我已经ResponseClass在 spring 配置文件中定义了 marshaller。

请帮忙。谢谢。

0 投票
1 回答
7145 浏览

xsd - JAXB 和 Spring OXM 的问题

我正在尝试解组一个基本的 XML 文档,如下所示:

对应的 XSD 在这里:

我系统地得到一个 UnmarshallingFailureException:

对于您的信息,我使用 Spring OXM。

我强烈怀疑这与我的 XSD 架构和可能的命名空间有关......

有人可以帮忙吗?

编辑:这是相关的 Spring 配置:

编辑 2:如果我注释掉模式验证,则异常跟踪:

0 投票
2 回答
2761 浏览

spring - 使用 Spring Oxm 设置脚轮属性

Spring Oxm允许您使用不同的编组器/解组器,Castor就是其中之一。

默认情况下,castor marshalles xml 文档未缩进,官方文档告诉将 castor.properties 文件放在包括该行在内的搜索位置org.exolab.castor.indent=true将覆盖默认行为。

现在,在 Web 应用程序(Spring Batch Admin)中使用 Spring Oxm 时,如何覆盖 castor jar 中的 castor.properties?

我有以下 bean 配置(删除了多余的行),据我所知,它们没有为此设置的必要属性。

0 投票
3 回答
31991 浏览

java - 在 Maven 项目中管理 JAXB 生成的类

我有一个基于 Maven 的项目,我尝试添加一些由“jaxb2-maven-plugin”Maven 插件自动生成的 JAXB 类。但是,我的第一次剪辑让我处于循环依赖循环中:

  • 因为这些 JAXB 类尚未生成,所以我引用它们的其他来源有编译错误。
  • 因为那些其他源有编译错误,所以不会生成这些 JAXB 类。

似乎有两种明显的可能性可以解决这个问题:

  1. 注释掉损坏的引用,以便项目构建和 JAXB 类自动生成。然后将这些生成的源代码从 复制/target/src/main/java中,这样对它们的引用就不会导致编译错误。
  2. 创建一个完全独立的项目,只包含 JAXB 的东西。将其作为依赖项包含在我的主项目中。

我在这里错过了什么吗?选项#1 似乎完全荒谬......这不可能是人们使用 JAXB 的方式。选项#2 似乎更合理,但仍然相当低效和麻烦。为了使用 JAXB,我真的必须承担一个完全独立的项目的开销吗?

开发人员是否可以使用更优雅的方法在 Maven 插件生成它们的同一项目中引用 JAXB 生成的类?

更新: 根据要求,这是我的 POM 的相关部分:

当我运行时,我确实看到在子目录mvn clean package下生成了我的 JAXB 源。/target但是,这些生成的源不会自动添加到编译阶段的类路径中。

解决后更新: 事实证明,我的编译问题更多地与我在 Eclipse 中运行的事实有关,并且它的 Maven 集成与“jaxb2-maven-plugin”有一些问题。有关该问题及其解决方案的更多详细信息,请参阅此 StackOverflow 问题。

0 投票
1 回答
4256 浏览

java - 使用 EclipseLink MOXy 解组时忽略 DTD

当尝试使用 EclipseLink MOXy 将一些 XML 解组为 POJO 时,我得到了一个FileNotFoundException它正在寻找文档的 DTD 作为相对路径的位置。

我按照这个例子提供了“外部化元数据” ,所以我不知道为什么它甚至需要一个 DTD。如果我能让它忽略 DTD,或者不尝试解决它,那就太好了。

0 投票
1 回答
1408 浏览

spring - 使用 xml 请求的 Spring 3.1 Restful 服务中的 UnmarshalException

我使用 spring web 3.1.1 和 spring oxm 3.1.1。

当 jaxb2marshaller 尝试将 xml 源解组为对象时发生异常。

我像这样在我的 sevlet 设置上配置了 jaxb2 marshall。

并在控制器上尝试像这样解组。

和我的身份验证对象。

}

我参考了这篇文章.. http://www.ibm.com/developerworks/webservices/library/wa-spring3webserv/index.html

我认为我的来源与文章的示例代码完全相同。

但效果不好。

我感谢您的帮助。