Я в тупике, когда дело доходит до местоположения моего файла persistence.xml. Я использую eclipselink 2.4 в качестве моей реализации JPA 2.0 и имею свой файл persistence.xml, расположенный под src/main/resources/META-INF/persistence.xml, как и много сообщений.JPA persistence.xml META-INF работает неправильно
Первый выпуск: После публикации на моем сервере внутри 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/классы/META-INF, то он работает ! Я не понимаю, в чем проблема.
Я проверил проекты построить путь, и все выглядит хорошо там.
Второй вопрос я имею что мой аннотированный класс сущностей не подхватили автоматически EclipseLink. В моей конфигурации JPA у меня есть автоматически выбранные классы аннотированных подписей.
У меня есть следующие в моей XML
<exclude-unlisted-classes>false</exclude-unlisted-classes>
технологий, используемых: сервер WebLogic 12c, EJB 3.1, JPA 2.0, М2Э-WTP и JSF 2.1
обновление 1: Оставив META-INF на пути src/main/resources/META-INF/persistence.xml и выполнив установку maven для создания военного файла, папка META-INF правильно размещена в WEB-INF/classes/META- INF/настойчивость. xml как это должно быть (внутри войны). Кажется, что это только и проблема, когда webapp создается и запускается локально в Eclipse. Может кто-нибудь объяснить это?
Update 2: Оставляя META-INF в SRC/основные/ресурсы т.е. SRC/основные/ресурсы/META-INF/persistence.xml и следующий в моем persistence.xml, а не в явном виде листинг класса сущностей
<exclude-unlisted-classes>false</exclude-unlisted-classes>
works IF Я строю войну и разворачиваю ее через консоль weblogic через интернет-проводник. Почему он не работает внутри затмения !?
Update 3:
сделал вы проверяете, что будет построен Да, внутри Eclipse, у меня есть построить набор автоматически. Глядя в папку проекта, я вижу пакет java package com, папку META-INF, содержащую папку persistence.xml и ресурсов, которые находятся в разделе Webapp/target/classes.
Если война такая же -Вы ссылаетесь на Webapp.папке войны, найденной в C: \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ Weblogic12cDomain_auto_generated_ear_ \ Webapp.war? Если так, единственное, что есть в WEB-INF \ lib \ jsf-impl-2.1.7.jar
, то вы проверили путь к классу, который используется для проверки вашего приложения в Eclipse. - Эта запись находится в моем пути к классам как ожидалось в Webapp/.classpath
Если persistence.xml в каталоге ресурсов находится в начале пути класса, он будет выбран вместо того, который был в вашей войне, или один в правильном каталоге - Мое понимание - Eclipse будет строить проект, а затем скопировать содержимое на сервер без создания военного файла.
Вот что в корне мавена сгенерирована 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, я бы подумал.
Любая помощь очень ценится !!
Thx Крис! это имеет смысл, однако это не работает внутри затмения! =/См. Мои обновления. – Padawan
Крис вы можете изменить свой ответ на комментарий, чтобы другие не думали, что на вопрос был дан ответ? – Padawan
Если это не тот, который вы ищете, и вы хотите больше подвергать его воздействию, поместите на него щедрость или сделайте то, что вы сделали, - попросите снова с большей или разной информацией. Вы отмечаете, что это происходит только «при построении в Eclipse» - вы проверили, что построено? Если война такая же, то вы проверили путь к классам, который использовался для тестирования вашего приложения в Eclipse? если файл persistence.xml в каталоге ресурсов находится сначала в пути к классам, он будет выбран, а не тот, который находится в вашей войне, или один в правильном каталоге. – Chris