Взаимодействие EJB-XML с использованием интерфейса JAXB

StackOverflow https://stackoverflow.com/questions/101989

  •  01-07-2019
  •  | 
  •  

Вопрос

Я пытался добавить схему 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, имеющиеся в JAXB.
  • Объект значения может быть получен в двоичной форме или в форме XML из объекта Entity Bean.
  • JSP может легко извлечь схему XML и данные XML из объекта значения и выполнить над ними операции, такие как преобразования XSL.

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

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

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

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


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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top