【问题标题】:Spring DM, Rest, JAXB Integration issueSpring DM、Rest、JAXB 集成问题
【发布时间】:2012-09-21 11:51:43
【问题描述】:

我正在使用 Spring Rest 和 Spring DM (OSGi)。我需要使用 JAXB 进行编组/解组。当模型对象属于同一个项目时,我可以轻松地将 JAXB 与 Spring 一起使用。但是,当我尝试在 OSGi(Spring DM)中做同样的事情时遇到了问题。因为我将模型对象保存在不同的包中,jaxb2Marshaller 无法找到带有注释@XmlRootElement 的模型。

例外是:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: 来自 ServletContext 资源的 XML 文档中的第 51 行 [/WEB-INF/building-servlet.xml] 无效;嵌套异常是 org.xml.sax.SAXParseException;行号:51;列号:52; cvc-complex-type.2.4.c:匹配通配符是严格的,但是没有 可以为元素 'tx:annotation-driven' 找到声明

请建议我一些解决方法来实现这一点。

【问题讨论】:

  • 你定义了 tx 的命名空间和架构了吗?
  • 是的,我确实这样做了。我有一个带有 Spring 启用的 Rest 控制器的 Spring DM 原型。我使用 Spring OXM 进行编组/取消编组并像这样配置我的模型对象: ​​ com.smartpants.artwork.domain.Personcom.smartpants.artwork.domain.People 它工作得很好。但是,它不适用于 OSGi 捆绑包。我将控制器放在一个包中,将模型对象放在另一个包中,这不起作用。

标签: spring-mvc osgi


【解决方案1】:

这很可能与系统捆绑包也提供 jaxb 的事实有关,因为 jre 包含 jaxb。确保导入它的特殊版本,并确保已安装此版本。这可能会对您有所帮助。您可能还需要确保系统包导出的版本配置正确。为此,您需要更改 etc 文件夹中的 jre.properties 并将正确的版本设置为 jaxb 包。

【讨论】:

    【解决方案2】:

    恰好重温了我的这篇文章。这个问题很久以前就解决了。我使用 Spring 的“开箱即用”JAXB Marshaller (org.springframework.oxm.jaxb.Jaxb2Marshaller) 为我们进行编组和取消编组。很抱歉我的回复晚了,感谢您的关注。

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 2014-10-28
      • 1970-01-01
      • 2014-08-06
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多