我试图将 XML 模式添加到现有的 EJB 项目中。 JAXB 用于将 XML 模式绑定到 Java 类。因为我们将在 EJB 处于会话状态时使用搜索引擎来爬取 DTO。
我找不到任何将实体类文件映射到 XML 模式的直接方法。
到目前为止,我们可以实现的唯一方法是创建 Web 服务,生成 WSDL,从而生成 xml 模式 (XSD),然后通过 JAXB(xjc 命令)解析 XSD 文件以创建 java 类文件。现在使用mapping-binding.xml 文件我们可以映射XML 和Java 类文件。
但现在的问题又是如何将其映射到实体类。
这就是我们想要实现的目标:
- 带有 XML 模式的 XML 数据对象(这已经存在于 JAXB 规范中)。
- 然后,实体 Bean 扩展该 JAXB 对象或具有该 JAXB 对象的接口。
- 所有持久化功能均由实体 Bean 管理...
- 然后,实体 Bean 将包含 JAXB 中的 XML 编组和解组功能。
- 可以从实体 Bean 对象中以二进制或 XML 形式检索值对象。
- JSP 可以轻松地从值对象中提取 XML 模式和 XML 数据,并对其执行操作,例如 XSL 转换。
我的观点是,Entity Bean 没有连接 JAXB 对象的标准方法。
Castor 可能是解决方案,但话又说回来,我们必须实现 Web 服务或使用 Castor JDO。
我发现 XStream 非常有用,因为它使用转换器类,您可以在其中调用实体 bean 类对象并生成 xml 文件。但我不喜欢使用另一个类,而是将功能合并到现有的 bean 类中。
你能在这方面帮助我吗?
我会告诉你我真正想要实现的目标。我正在创建一个搜索引擎,它将在会话中的 EJB 期间被调用,并将使用爬虫程序通过 DTO 并获取 XML 格式的快照。搜索将按照不同的标准进行。
Lucene 是搜索引擎工具之一,但它使用自己的属性和文件(更像是独立的)
我已经有了 DTO,Web 服务使用它来在 PHP 和 Java 应用程序(EJB 层)之间进行通信。我想在 jaxb 中重新使用这些 DTO 作为爬虫来获取 XML 中表的输出,但我无法做到这一点,因为 JAXB 通过 xml 模式使用它自己生成的类。就像你说的,我还没有找到一种方法来指导 JAXB bean 类。
将数据模型(实体 bean)与 XML 接口紧密耦合可能不是世界上最好的主意;它会阻止你在不改变另一个的情况下改变一个。
我不是 100% 确定我理解您想要做什么,但我认为有一种方法可以指示 JAXB 扩展类而不是创建新类。您可以像平常一样创建实体 Bean,并让 JAXB 生成的 Bean 使用额外信息来扩展它们。
我可以说从某个地方获取 Entity beans 实例other比你的持久层(例如从 XML 反序列化它们)将是huge给你带来问题。
另请注意,使用 XML 在 Java 应用程序之间(例如 JSP/Servlet 和 EJB 层之间)进行通信是一个坏主意; XML 的编组和增加的冗长对您来说没什么好处;通过 RMI 序列化对象(EJB 将为您做的事情)将更容易实现、测试和维护。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)