Hibernate / JPA persistence.xml приводит к SAXParseException при развертывании на Jetty как WAR - PullRequest
1 голос
/ 27 сентября 2011

У меня проблемы с запуском приложения на Jetty.

Если я запускаю приложение с помощью подключаемого модуля maven jetty, то есть

mvn jetty:run

Все работает нормально.Если я упаковываю приложение как войну и пытаюсь выполнить развертывание на сервере Jetty вручную, я получаю исключение

org.xml.sax.SAXParseException: cvc-complex-type.3.1: Value '2.0' of attribute 'version' of element 'persistence' is not valid with respect to the corresponding attribute use. Attribute 'version' has a fixed value of '1.0'.

. Я пытаюсь выполнить развертывание на Jetty, используя

mvn jetty:run-war

.та же ошибка.

Зависимости hibernate / JPA, которые использует мое приложение:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>3.6.7.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>3.6.7.Final</version>
        <exclusions>
            <exclusion>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
            </exclusion>
            <exclusion>
                <groupId>dom4j</groupId>
                <artifactId>dom4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.1.0.Final</version>
        <exclusions>
            <exclusion>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.0.GA</version>
    </dependency>

Я запутался, почему оно работает при работе с пристанью: запуск, а не при развертывании в качестве войны.Я безуспешно пробовал разные версии Jetty 7 и 8.

Спасибо.

Кто-нибудь может заметить что-то не так с тем, что я пытаюсь?

РЕДАКТИРОВАТЬ:Вот постоянство. Xml

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence 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"
             version="2.0">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>            
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
            <property name="hibernate.connection.charSet" value="UTF-8"/>            
        </properties>
    </persistence-unit>
</persistence>

Ответы [ 2 ]

1 голос
/ 17 июня 2013

Если вы используете maven и плагин open-jpa maven, знайте, что нужно установить правильную версию

Если вы используете этот

            <plugin>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa-maven-plugin</artifactId>
            <version>2.2.0</version>
            <configuration>
                <includes>**/entities/*.class,**/entities/masterdata/*.class</includes>
                <excludes>**/entities/*Enum.class</excludes>
                <addDefaultConstructor>true</addDefaultConstructor>

                <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
            </configuration>
            <executions>
                <execution>
                    <id>enhancer</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>enhance</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.apache.openjpa</groupId>
                    <artifactId>openjpa</artifactId>
                    <!-- set the version to be the same as the level in your runtime -->
                    <version>1.2.0</version>
                </dependency>
            </dependencies>

это приведет к ошибке версии. должно быть:

            <plugin>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa-maven-plugin</artifactId>
            <version>2.2.0</version>
            <configuration>
                <includes>**/entities/*.class,**/entities/masterdata/*.class</includes>
                <excludes>**/entities/*Enum.class</excludes>
                <addDefaultConstructor>true</addDefaultConstructor>

                <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
            </configuration>
            <executions>
                <execution>
                    <id>enhancer</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>enhance</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.apache.openjpa</groupId>
                    <artifactId>openjpa</artifactId>
                    <!-- set the version to be the same as the level in your runtime -->
                    <version>2.2.0*</version>
                </dependency>
            </dependencies>
1 голос
/ 27 сентября 2011

Есть ли у вас более старая (до совместимости с JPA2) версия hibernate в вашем classpath до 2.0 совместимых библиотек? Это также может происходить через некоторую зависимость.

...