Frage

Ich habe versucht, das XML-Schema zu einem vorhandenen EJB Projekt hinzuzufügen. JAXB verwendet, um das XML-Schema zu einer Java-Klasse zu binden. Wie werden wir die Suchmaschine durch DTO zu kriechen verwenden, wenn EJB in der Sitzung ist.

Ich konnte keinen direkten Ansatz finden als Entity-Klasse-Datei XML-Schema abzubilden.

Die einzige Möglichkeit, die wir bisher erreichen konnten, ist das Web Service zu erstellen, generiert die WSDL, das XML-Schema (XSD) und dann Parsen die XSD-Datei durch JAXB (xjc Befehl) Java-Klasse erzeugt Dateien zu erstellen. Jetzt Mapping-binding.xml Datei wir sowohl XML und Java-Klassendatei zuordnen können.

Aber jetzt ist wieder die Frage, wie map dies Entitätsklasse.

Dies ist, was wir erreichen wollen:

  • XML Data Object mit XML-Schema (Dies ist bereits in der JAXB-Spezifikation).
  • Entity Bean dann erweitert oder eine Schnittstelle zu diesem JAXB Objekt.
  • Alle Persistence Funktionen verwaltet werden, durch die Entity Bean ...
  • Die Entity Bean enthält dann die XML-Rangierung und unmarshalling Funktionen in JAXB gefunden ..
  • Ein Wert Objekt könnte in Binär- oder XML-Format von der Entity Bean-Objekt abgerufen werden.
  • Eine JSP einfach das XML-Schema und XML-Daten aus dem Value-Objekt extrahieren könnte und führt Operationen auf mich wie XSL-Transformationen.

Mein Argument ist, dass die Entity Beans haben keine Standardmethode zu JAXB Objekte für die Anbindung.

Castor kann die Lösung sein, aber dann haben wir wieder Web-Services oder mit Castor JDO ist zu implementieren.

Ich fand XStream als ziemlich nützlich, da es einen Konverter-Klasse verwendet, in dem Sie die Entity-Bean-Klasse Objekte aufrufen können und eine XML-Datei generieren. Aber ich war lieber nicht eine andere Klasse verwenden, aber die Funktionen in bestehenden Bean-Klasse übernehmen.

Können Sie mir helfen in dieser Hinsicht?


Ich werde Ihnen sagen, was ich versuche tatsächlich zu erreichen. Ich bin eine Suchmaschine zu schaffen, die während des EJB in der Sitzung hervorgerufen werden und Crawler durch die DTO verwenden und den Schnappschuss im XML-Format bekommen. Suchen auf verschiedene Kriterien sein.

Lucene ist eine der Suchmaschinen-Tools, aber dann nutzt es seine eigenen Eigenschaften und Dateien (mehr wie Standalone handeln)

Ich habe bereits DTO, die durch einen Web Service verwendet werden, zwischen PHP und Java-Anwendung (EJB-Schicht) zu kommunizieren. Ich wollte diese DTO in jaxb als Crawler erneut verwenden, um die Ausgabe von Tabellen in XML zu erhalten, die ich nicht in der Lage bin zu tun, wie JAXB seine eigenen generierten Klassen durch XML-Schema verwendet. Wie Sie gesagt haben, ich noch keinen Weg gefunden, um JAXB-Klassen Bohne anweisen.

War es hilfreich?

Lösung

Kopplung Dicht Ihr Datenmodell (Entity Beans), um Ihre XML-Schnittstelle nicht die beste Idee in der Welt sein könnte; es verhindert, dass Sie von einem Wechsel, ohne das andere zu ändern.

Ich bin nicht 100% sicher, dass ich verstehe, was Sie zu tun versuchen, aber ich denke, es gibt einen Weg JAXB anweisen, Klassen zu erweitern, anstatt neue zu schaffen. Sie könnten Ihre Entity Beans als normal erstellen, und haben Ihre JAXB generierten Bohnen diejenigen mit den zusätzlichen Informationen erweitern.

kann ich sagen, dass Bohnen Instanzen Entity immer von irgendwo andere als Ihre Persistenz-Schicht (wie sie von XML Deserialisieren) wird ein großes Problem für Sie sein.

Beachten Sie auch, dass mit Hilfe von XML zwischen Java-Anwendungen (zB zwischen einem JSP / Servlet und EJB-Schicht) ist eine schlechte Idee zu kommunizieren; und das Marshalling hinzugefügt Ausführlichkeit der XML kauft man sehr wenig; Objekte über RMI Serialisierung (das ist, was EJB für Sie tun) wäre viel einfacher, Test zu implementieren und warten.

Andere Tipps

Eclipse JAXB (moxy) können verwendet werden, JPA-Entitäten auf XML abzubilden.

Weitere Informationen finden Sie unter:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top