2008-09-19 85 views
4

我试图将XML模式添加到现有的EJB项目。 JAXB用于将XML-Schema绑定到Java类。正如我们打算在EJB处于会话中时使用搜索引擎抓取DTO一样。使用JAXB接口连接EJB-XML

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

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

但现在又一个问题是如何映射到实体类。

这就是我们要达到:XML模式

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

我的观点是Entity Beans没有标准的方法来连接到JAXB对象。

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

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

你能在这方面帮助我吗?


我会告诉你我究竟在努力达到什么。我正在创建一个搜索引擎,这个搜索引擎会在EJB会话期间引发,并使用抓取工具通过DTO,并以XML格式获取快照。搜索将根据不同的标准。

Lucene是的搜索引擎工具之一,但后来它使用自己的属性和文件(会更像单机)

我已经有DTO的将使用该web服务PHP & Java应用程序之间的通信(EJB -层)。我想重用jaxb中的那些DTO作为抓取工具,从XML中获取表格的输出,这是JAXB通过xml-schema使用自己生成的类时无法完成的。就像你说的,我还没有找到一种方法来指示JAXB去bean类。

+0

迂腐:*接口请校对。 – GEOCHET 2008-09-19 13:56:58

回答

2

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

我不是100%确定我明白你在做什么,但我认为有一种方法可以指示JAXB扩展类而不是创建新类。你可以像平常一样创建你的实体Bean,并让你的JAXB生成的bean扩展那些额外的信息。

我可以说,让实体bean实例从某处其他比你的持久层(如XML反序列化它们)将是一个巨大的问题你。

另请注意,使用XML在Java应用程序(例如JSP/Servlet和EJB层之间)之间进行通信是一个坏主意;编组和冗长的XML购买你很少;通过RMI序列化对象(这是EJB为你做的)将更容易实现,测试和维护。

+0

感谢您的帮助和suggesetion戴夫.. 请评价...作为ive添加更多信息 – 2008-09-19 20:26:21