使用JAXB接口连接EJB-XML

Sid*_*aur 5 xml ejb jaxb

我试图将XML模式添加到现有的EJB项目中.JAXB用于将XML-Schema绑定到Java类.因为我们将在EJB处于会话期间使用搜索引擎来爬行DTO.

我找不到任何直接的方法来将实体类文件映射到XML-Schema.

到目前为止,我们唯一可以实现的方法是创建Web服务,生成生成xml-schema(XSD)的WSDL,然后通过JAXB(xjc命令)解析XSD文件以创建java类文件.现在使用mapping-binding.xml文件,我们可以映射XML和Java类文件.

但现在又问题是如何将它映射到实体类.

这是我们想要实现的目标:

  • XML Schema的XML数据对象(这已经存在于JAXB规范中).
  • 然后,实体Bean扩展或具有此JAXB对象的接口.
  • 所有持久性函数都由实体Bean管理...
  • 然后,实体Bean将包含JAXB中的XML编组和UnMarshalling功能.
  • 可以从实体Bean对象以二进制或XML形式检索值对象.
  • JSP可以轻松地从Value Object中提取XML Schema和XML Data,并对其执行操作,例如XSL转换.

我的论点是Entity Beans没有标准的方法来连接JAXB对象.

Castor可能是解决方案,但我们必须再次实现Web服务或使用castor JDO.

我发现XStream非常有用,因为它使用转换器类,您可以在其中调用实体bean类对象并生成xml文件.但我不喜欢使用另一个类,而是将函数合并到现有的bean类中.

你能帮我这方面吗?


我会告诉你我实际上想要实现的目标.我正在创建一个搜索引擎,它将在EJB会话期间被激发,并将通过DTO使用爬虫并以XML格式获取快照.搜索将根据不同的标准.

Lucene是搜索引擎工具之一,但它使用自己的属性和文件(将更像独立)

我已经有了Web服务使用的DTO,用于在PHP和Java应用程序(EJB层)之间进行通信.我想重新使用jaxb中的那些DTO作为爬虫来获取XML中的表的输出,这是我无法做到的,因为JAXB通过xml-schema使用自己生成的类.就像你说的那样,我还没有找到一种方法来指导JAXB的bean类.

dav*_*000 2

将数据模型(实体 bean)与 XML 接口紧密耦合可能不是世界上最好的主意;它会阻止你在不改变另一个的情况下改变一个。

我不是 100% 确定我理解您想要做什么,但我认为有一种方法可以指示 JAXB 扩展类而不是创建新类。您可以像平常一样创建实体 Bean,并让 JAXB 生成的 Bean 使用额外信息来扩展它们。

我可以说,从持久层以外的其他地方获取实体 bean 实例(例如从 XML 中反序列化它们)对您来说将是一个巨大的问题。

另请注意,使用 XML 在 Java 应用程序之间(例如 JSP/Servlet 和 EJB 层之间)进行通信是一个坏主意;XML 的编组和增加的冗长对您来说没什么好处;通过 RMI 序列化对象(EJB 将为您做的事情)将更容易实现、测试和维护。