Интерфейс EJB - XML ​​с использованием интерфейса JAXB - PullRequest
5 голосов
/ 19 сентября 2008

Я пытался добавить схему XML в существующий проект EJB. JAXB используется для привязки XML-схемы к классу Java. Поскольку мы будем использовать поисковую систему для сканирования DTO, когда EJB находится в сеансе.

Я не смог найти прямой подход к отображению файла класса сущностей в XML-схему.

Единственный способ, которого мы смогли достичь, - это создать веб-службы, сгенерировать WSDL, который генерирует XML-схему (XSD), а затем выполнить синтаксический анализ файла XSD через JAXB (команда xjc) для создания файлов классов Java. Теперь, используя файл mapping-binding.xml, мы можем отобразить как XML, так и файл классов Java.

Но теперь снова проблема заключается в том, как сопоставить это с классом сущности.

Вот чего мы хотим достичь:

  • Объект данных XML с XML-схемой (это уже присутствует в спецификации JAXB).
  • Затем Entity Bean расширяет или имеет интерфейс к этому объекту JAXB.
  • Все функции постоянства управляются компонентом Entity Bean ...
  • Затем компонент Entity Bean будет содержать функции XML Marshalling и UnMarshalling, найденные в JAXB.
  • Объект-значение может быть получен в двоичном или XML-виде из объекта Entity Bean.
  • JSP может легко извлечь XML-схему и XML-данные из объекта-значения и выполнить над ними такие операции, как преобразования XSL.

Мой аргумент в том, что у Entity Bean нет стандартного способа взаимодействия с объектами JAXB.

Кастор может быть решением, но опять же нам нужно реализовать веб-сервисы или использовать JDO-ролики.

Я нашел XStream довольно полезным, поскольку он использует класс конвертера, в котором вы можете вызывать объекты класса объекта EJB и генерировать XML-файл. Но я не предпочел использовать другой класс, но включил функции в существующий класс бина.

Можете ли вы помочь мне в этом отношении?


Я скажу вам, чего я на самом деле пытаюсь достичь. Я создаю поисковую систему, которая будет вызываться во время сеанса EJB и будет использовать сканер через DTO и получать снимок в формате XML. Поиск будет по разным критериям.

Lucene является одним из инструментов поисковой системы, но затем он использует свои собственные свойства и файлы (будет действовать скорее как автономный)

У меня уже есть DTO, которые используются веб-сервисами для связи между PHP и Java-приложением (EJB-слой). Я хотел повторно использовать эти DTO в jaxb в качестве сканера, чтобы получить вывод из таблиц в XML, что я не могу сделать, поскольку JAXB использует свои собственные сгенерированные классы через xml-схему. Как вы сказали, я еще не нашел способа обучить JAXB бобовым классам.

Ответы [ 2 ]

2 голосов
/ 19 сентября 2008

Плотное соединение вашей модели данных (сущностных компонентов) с вашим XML-интерфейсом может быть не лучшей идеей в мире; он не позволяет вам менять одно без изменения другого.

Я не уверен на 100%, что понимаю, что вы пытаетесь сделать, но я думаю, что есть способ проинструктировать JAXB расширять классы, а не создавать новые. Вы можете создавать свои Entity Beans как обычно, и ваши сгенерированные JAXB bean-компоненты расширяют их с помощью дополнительной информации.

Я могу сказать, что получение экземпляров Entity-компонентов откуда-то иного , чем ваш уровень персистентности (например, десериализация их из XML), будет огромной проблемой для вас. *

Также обратите внимание, что использование XML для связи между Java-приложениями (например, между JSP / Servlet и EJB-уровнем) является плохой идеей; маршалинг и добавленная многословность XML очень мало вас покупают; сериализацию объектов через RMI (что EJB сделает для вас) было бы намного проще реализовать, протестировать и поддерживать.

1 голос
/ 07 июля 2010

EclipseLink JAXB (MOXy) может использоваться для отображения сущностей JPA в XML.

Для получения дополнительной информации см .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...