2014-05-15 6 views
1

Я создал приложение с использованием Spring 4.0, Hibernate 4.3 и JPA 2.1. К сожалению, в последнюю минуту я понял, что сервер, который мы используем, не поддерживает JPA 2.1 (WebLogic 10.3.6).Hibernate, WebLogic 10.3 и JPA 2.0

Отметьте, что я не контролирую сервер, который мы используем - I не может обновить его до более высокой версии. Кроме того, я знаю, что у меня должно было быть больше известно о том, что мы использовали; однако я не могу изменить это сейчас. Это будет уроки, извлеченные в будущем.

В настоящее время я испытываю дилемму, так как клиент видел рабочую версию локально и ожидает, что приложение будет развернуто на веб-сервере в ближайшее время. Я понял, что мне нужно переписать большие части слоя сохранения данных.

Может ли кто-нибудь из вас помочь мне определить, какие области отличаются между Hibernate 4.2.8 и Hibernate 4.3, а также разница между JPA 2.1? Я знаю, что это большой вопрос, но у меня нет другой ссылки на помощь в моей организации. Я надеюсь, что смогу получить некоторые рекомендации здесь.

На данный момент, я считаю, что следующие области находятся под воздействием возврата к более ранним версиям:

  • JPA Столам
  • JPA Регистрация УКАЗАТЕЛЯМ
  • Некоторым автоматическое связывание
  • Некоторых аннотаций

Я знаю, что есть несколько других проблем, но я нахожу их, когда исправляю другие проблемы. Одна из самых больших проблем, с которыми я столкнулась, - это объединения, так как у меня есть много двунаправленных отношений, использующих @ManyToOne и соединяющих столбцы.

Мой вопрос: Каковы некоторые возможности, которые обычно используются в Hibernate 4.3, которых нет в Hibernate 4.2.x? Какие возможности не поддерживаются без JPA 2.1? Считаете ли вы, что различия достаточно велики, чтобы потребовать переписать текущий слой сохранения данных с нуля?

Если это слишком большой вопрос, сообщите мне, и я постараюсь доработать его дальше.

Заранее благодарю вас за помощь.

ответ

2

У нас была такая же проблема в weblogic 12. Наше приложение использует hibernate/JPA 2.1, и оно конфликтует с JPA 2.0, которое предоставляет weblogc 12.

Вы можете использовать WebLogic Classloader Analysis Tool (также называемый wls-cat), чтобы идентифицировать все конфликты между библиотеками WLS и вашим приложением.

Решение состоит в том, чтобы сказать weblogic, чтобы не использовать старые рамки, которые он связывает.

В моем случае я развертываю войну, содержащую спящий режим и API JPA 2.1.

Создание WEB-INF/weblogic.XML

<?xml version="1.0" encoding="UTF-8"?> 
<wls:weblogic-web-app 
    xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd"> 
    <wls:container-descriptor> 
    <wls:prefer-application-packages> 
     <wls:package-name>org.slf4j</wls:package-name> 
     <wls:package-name>org.joda</wls:package-name> 
     <wls:package-name>javax.persistence</wls:package-name> 
    </wls:prefer-application-packages> 
    </wls:container-descriptor> 
</wls:weblogic-web-app> 

Было бы замечательно, если бы был способ сказать WebLogic, чтобы использовать все библиотеки в WAR и не использовать это старые копии библиотек.

Смежные вопросы