2010-03-29 11 views
9

OK, to prawdopodobnie ma być najłatwiejsza rzecz na świecie, ale próbowałem przez cały dzień, i to wciąż nie działa .. Każda pomoc jest bardzo ceniony!Jak uruchomić Spring 3.0 PetClinic w tomcat z Hibernate wspieranym JPA

EDYTOWANIE: Aby uzyskać prawidłową procedurę, zobacz odpowiedź Pascala.

Moja niewłaściwy (ponieważ nie miałem wyłączoną LoadTimeWeaving) procedura zostaje odniesienie ..:

Co zrobiłem:

  1. Pobrano Tomcat 6.0.26 & Wiosna 3.0.1
  2. Pobierany PetClinic z https://src.springframework.org/svn/spring-samples/petclinic
  3. Zbudowany & wdrożony petclinic.war. Dobrze działa z domyślną trwałością JDBC.
  4. Edytowane aplikacje internetowe/WEB-INF/spring/applicationContext-jpa.xml i ustaw jpaVendorAdaptor na Hibernate.
  5. Edytowane webapps/WEB-INF/web.xml i zmienił context-param z ApplicationContext-jdbc.xml do ApplicationContext-jpa.xml
  6. Skopiowane wszystko w dystrybucji TOMCAT_HOME/lib Wiosna 3.0.1.
  7. Uruchomiony kocur. Piła

    Powodowana przez: java.lang.IllegalStateException: ClassLoader [org.apache.catalina.loader.WebappClassLoader] NIE udostępnia metody "addTransformer (ClassFileTransformer)". Określić niestandardową LoadTimeWeaver lub uruchomić maszynę wirtualną Javy środkiem sprężyny: -javaagent: wiosna-agent.jar

  8. odkomentowane linia <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/> w webapps/META-INF/context.xml.

  9. Ten sam błąd. Dodano tę linię do TOMCAT_HOME/context.xml
  10. Rozmieszczona bez błędów. Jednak, gdy robię coś wyda błąd mówiąc

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

    11.Changed zakresu javax.transaction od testu do wartości domyślnych (tylko usunięty test), jak sugeruje scaffman.

    12.Runny dobrze !! Dziękuję Ci!

+0

Zgaduję, problem jest w punkcie (3). Czy skonstruowana WAR zawiera cokolwiek z 'javax.transaction' w katalogu' lib'? – skaffman

+0

Nie użyłeś TopLink w 3, użyłeś JDBC –

+0

@Pascal: Masz rację, poprawiłem wpis .. –

Odpowiedz

9

Ok, oto co ID id:

  1. Uzyskaj Tomcat 6.0.26
  2. Zamówienie próbki petclinic:

    svn co https://src.springframework.org/svn/spring-samples/petclinic/trunk/ petclinic 
    
  3. cd do petclinic katalogu

  4. Modyfikuj src/main/webapp/WEB-INF/spring/applicationContext-jpa.xml korzystania Hibernacja:
  5. Modyfikacja src/main/webapp/WEB-INF/web.xml używać applicationContext-jpa.xml
  6. Modyfikacja pom.xml do bundle jta.jar w wojnie (jak podkreślił @skaffman):

    <dependency> 
        <groupId>javax.transaction</groupId> 
        <artifactId>com.springsource.javax.transaction</artifactId> 
        <version>1.1.0</version> 
        <!--scope>test</scope--> 
    </dependency> 
    
  7. Budowa wojna

    mvn install 
    
  8. wdrożyć go do Tomcat

    cp target/petclinic.war $TOMCAT_HOME/webapps 
    
  9. Browse

    http://localhost:8080/petclinic 
    
+0

Dzięki! Zastanawiam się, dlaczego w instrukcji mówi "LTW nie jest konieczne z Hibernate". To mi bardzo pomaga! –

Powiązane problemy