Я в тупике, когда речь заходит о местоположении моего файла persistence.xml. Я использую eclipselink 2.4 в качестве своей реализации JPA 2.0 и имею свой файл persistence.xml, расположенный под src/main/resources/META-INF/persistence.xml, поскольку количество сообщений указано.
Первая проблема: После публикации на моем сервере внутри eclipse я получаю сообщение об ошибке, указывающее, что мой persistence.xml не найден.
Exception: : java.lang.IllegalArgumentException: No persistence unit named 'X'
is available in scope Webapp. Available persistence units: [] at
Вот код моего persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="X" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>localJTA</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.target-server" value="WebLogic"/>
<property name="eclipselink.logging.level" value="FINEST"/>
</properties>
</persistence-unit>
</persistence>
Если я перемещаю META-INF в webapp/WEB-INF/classes/META-INF, тогда он работает! Я не понимаю, в чем проблема.
Я проверил путь построения проектов, и там все хорошо выглядит.
Вторая проблема, с которой я сталкиваюсь, заключается в том, что мой аннотированный класс сущностей автоматически не получает eclipselink. В моей конфигурации JPA у меня есть автоматически выбранные классы аннотированных подписей.
У меня также есть следующее в моем xml
<exclude-unlisted-classes>false</exclude-unlisted-classes>
Используемые технологии: сервер weblogic 12c, EJB 3.1, JPA 2.0, M2E-WTP и JSF 2.1
Обновление 1: Выход из META-INF на пути src/main/resources/META-INF/persistence.xml и выполнение установки maven для создания военного файла, папка META-INF правильно помещается в WEB-INF/classes/META-INF/persistence.xml, как и должно быть (внутри войны). Кажется, что это только и проблема, когда webapp создается и запускается локально в Eclipse. Кто-нибудь может это объяснить?
Обновление 2: Выход из META-INF в src/main/resources i.e src/main/resources/META-INF/persistence.xml и следующее в моем persistence.xml, а не в явном перечислении класса сущности
<exclude-unlisted-classes>false</exclude-unlisted-classes>
работает, если я создаю войну и разворачиваю ее через консоль weblogic через Internet Explorer. Почему он не работает внутри eclipse!?
Обновление 3:
Вы проверили, что будет построено -Да, внутри Eclipse У меня есть сборка автоматически. Глядя в папку проекта, я вижу пакет java package com, папку META-INF, содержащую папку persistence.xml и ресурсов, которые находятся в разделе Webapp/target/classes.
Если война одинакова. Вы ссылаетесь на папку Webapp.war, найденную в C:\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\Weblogic12cDomain_auto_generated_ear_\Webapp. война? Если это так, то есть только WEB-INF\lib\jsf-impl-2.1.7.jar
, то вы проверили путь к классам, который использовался для тестирования вашего приложения в Eclipse. Эта запись находится в моем пути к классам, как ожидалось в Webapp/.classpath
, если файл persistence.xml в каталоге ресурсов находится сначала в пути к классам, он будет выбран, а не тот, который находится в вашей войне, или один в правильном каталоге. Мое понимание - это создание Eclipse проекта, затем скопируйте содержимое на сервер без создания военного файла.
Вот что находится в основе созданного maven Webapp.war:
Вот что находится в корне папки проекта Webapp:
Вот что находится в корне папки Webapp.war FOLDER под C:\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\Weblogic12cDomain_auto_generated_ear_\Webapp.war
, если файл persistence.xml в каталоге ресурсов находится сначала в пути к классам, он будет выбран вместо того, который был в вашей войне, или один в правильной директории. - Не уверен, что вы имеете в виду этим. Persistence.xml в моем ресурсе /META -INF - это тот, который я хочу получить. Не знаете, какой военный файл имеет к этому отношение? В любом случае они должны быть одинаковыми persistence.xml, я бы подумал.
Любая помощь очень ценится!!