Как запустить Spring 3.0 PetClinic в tomcat с использованием JPA с поддержкой Hibernate - PullRequest
9 голосов
/ 29 марта 2010

ОК, это, наверное, самая легкая вещь в мире, но я пробовал весь день, и она все еще не работает .. Любая помощь очень ценится!

РЕДАКТИРОВАТЬ: Для правильной процедуры, см. Ответ Паскаля.

Моя неправильная (поскольку я не отключил LoadTimeWeaving) процедура оставлена ​​для справки ..:

Что я сделал:

  1. Загруженный Tomcat 6.0.26 & Spring 3.0.1
  2. Скачано PetClinic с https://src.springframework.org/svn/spring-samples/petclinic
  3. Построен и развернут petclinic.war. Работает нормально с сохранением JDBC по умолчанию.
  4. Отредактированные веб-приложения / WEB-INF / spring / applicationContext-jpa.xml и для jpaVendorAdaptor значение Hibernate.
  5. Отредактировал webapps / WEB-INF / web.xml и изменил context-param с applicationContext-jdbc.xml на applicationContext-jpa.xml
  6. Скопировал все из дистрибутива Spring 3.0.1 в TOMCAT_HOME / lib.
  7. Запущен кот. Пила

    Причина: java.lang.IllegalStateException: ClassLoader [org.apache.catalina.loader.WebappClassLoader] НЕ предоставляет метод addTransformer (ClassFileTransformer). Укажите пользовательский LoadTimeWeaver или запустите виртуальную машину Java с агентом Spring: -javaagent: spring-agent.jar

  8. Некомментированная строка <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/> в webapps / META-INF / context.xml.

  9. Та же ошибка. Добавил эту строку в TOMCAT_HOME / context.xml
  10. Развернуто без ошибок. Однако, когда я что-то делаю, выдается сообщение об ошибке

    java.lang.NoClassDefFoundError: javax/transaction/SystemException at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:39)

    11.Измененная область действия javax.transaction от test до default (только что удаленный тест), как предложено scaffman.

    12. Работает хорошо !! Спасибо!

Ответы [ 2 ]

9 голосов
/ 29 марта 2010

Хорошо, вот что я сделал:

  1. Получить Tomcat 6.0.26
  2. Оформить заказ в педиатрической клинике:

    svn co https://src.springframework.org/svn/spring-samples/petclinic/trunk/ petclinic
    
  3. cd в справочник для домашних животных

  4. Измените src/main/webapp/WEB-INF/spring/applicationContext-jpa.xml, чтобы использовать Hibernate:
  5. Измените src/main/webapp/WEB-INF/web.xml, чтобы использовать applicationContext-jpa.xml
  6. Измените pom.xml, чтобы связать jta.jar в войне (как указал @skaffman):

    <dependency>
      <groupId>javax.transaction</groupId>
      <artifactId>com.springsource.javax.transaction</artifactId>
      <version>1.1.0</version>
      <!--scope>test</scope-->
    </dependency>
    
  7. Построй войну

    mvn install
    
  8. Разверните его в Tomcat

    cp target/petclinic.war $TOMCAT_HOME/webapps
    
  9. 1054 * Обзор *

    http://localhost:8080/petclinic
    
1 голос
/ 29 марта 2010

Похоже, проблема с упаковкой PetClinic:

http://forum.springsource.org/showthread.php?t=85042

и

http://jira.springframework.org/browse/SPR-6880

Там есть исправление для pom.xml

...