OpenJPA расширяет пакетное приложение Spring ROO - PullRequest
0 голосов
/ 21 января 2011

Я новичок в OpenJPA и хотел запустить мое приложение.Я сделал основной метод и загрузил там контекстный XML и запустил транзакцию для запуска моего сервиса. Но когда я его запускаю, я получаю

org.apache.openjpa.persistence.ArgumentException: тип"class tld.myproject.domain.Entity" не был улучшен.

Я прогулялся по Google и обнаружил, что мне нужно добавить энхансер, поэтому я добавил в свою командную строку следующее:

-javaagent: /home/me/.m2/repository/org/apache/openjpa/openjpa/2.0.1/openjpa-2.0.1.jar

Теперь я получаю

java.lang.LinkageError: loader (экземпляр sun / misc / Launcher $ AppClassLoader): попытка дублирования определения класса для имени: "org / springframework / стереотип / Controller"

Возможно, уже поздно, и яу меня не закручена голова, но что здесь происходит?Что мне нужно сделать, чтобы запустить мой пакетный проект Spring Roo?

Cheers

Nik

PS, я, вероятно, должен добавить, что в моем pom.xml Roo определилэнхансер для фазы компиляции

1 Ответ

1 голос
/ 13 марта 2011

Вы, вероятно, должны использовать улучшение времени компиляции вместо улучшения времени выполнения с javaagent.

Если вы используете m2eclipse (вы, вероятно, делаете), было бы достаточно использовать что-то вроде:

<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <properties>
        <property name="openjpa.jdbc.DBDictionary" value="org.apache.openjpa.jdbc.sql.H2Dictionary"/>
        <!-- value="buildSchema" to runtime forward map the DDL SQL; value="validate" makes no changes to the database -->
        <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
        <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/>
    </properties>
</persistence-unit>

и внутри секции сборки вашего pom.xml у вас должно быть что-то вроде:

                      <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>openjpa-maven-plugin</artifactId>
                        <version>1.2</version>
                        <configuration>
                            <includes>**/*.class</includes>
                            <excludes>**/*_Roo_*.class</excludes>
                            <addDefaultConstructor>true</addDefaultConstructor>
                        </configuration>
                        <executions>
                            <execution>
                                <id>enhancer</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>enhance</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>test-enhancer</id>
                                <phase>test-compile</phase>
                                <goals>
                                    <goal>enhance</goal>
                                </goals>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.openjpa</groupId>
                                <artifactId>openjpa</artifactId>
                                <version>${openjpa.version}</version>
                                <exclusions>
                                    <exclusion>
                                        <groupId>commons-logging</groupId>
                                        <artifactId>commons-logging</artifactId>
                                    </exclusion>
                                    <exclusion>
                                        <groupId>org.apache.geronimo.specs</groupId>
                                        <artifactId>geronimo-jms_1.1_spec</artifactId>
                                    </exclusion>
                                </exclusions>
                            </dependency>
                        </dependencies>
                    </plugin>

Обратите внимание, что roo может генерировать другой фрагмент XML, который может не работать (IIRC использует другойвыходной каталог).

После очистки классы проекта должны быть улучшены.

...