2013-06-14 2 views
1

JPM을 사용하여 데이터를 검색하는 tomcat 7 및 mysql 5.1과 함께 Spring 3.2 MVC에서 테스트 사이트를 빌드하려고합니다. 저는 다양한 온라인 의사와 Manning의 "Spring in Action"책을 읽었으며 다양한 접근 방식이나 구성이 가능할 것으로 보입니다.하지만이 유연성 또한 나에게 혼란 스럽습니다.Spring MVC 데이터 소스 문제

나는 다음과 같은 개념이 정확한지 모르겠지만, 아래로 나에게


오류를 수정하는 데 시간이 살려주세요 :

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml]: Invocation of init method failed; nested exception is java.lang.reflect.UndeclaredThrowableException 

Caused by: java.lang.IllegalStateException: Must start with Java agent to use InstrumentationLoadTimeWeaver. See Spring documentation. 

serlvet-context.xml에 조각 (절단을 일부 헤더

<annotation-driven /> 

    <resources mapping="/resources/**" location="/resources/" /> 

    <beans:bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <beans:property name="prefix" value="/WEB-INF/views/" /> 
     <beans:property name="suffix" value=".jsp" /> 
    </beans:bean> 

    <context:component-scan base-package="com.project.localdbtest" /> 

    <beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
     <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <beans:property name="url" value="jdbc:mysql://127.0.0.1:3306/bookdb" /> 
     <beans:property name="username" value="root" /> 
     <beans:property name="password" value="password" /> 
     <beans:property name="initialSize" value="5" /> 
     <beans:property name="maxActive" value="20" /> 
    </beans:bean> 

    <beans:bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <beans:property name="dataSource" ref="dataSource" /> 
     <beans:property name="jpaVendorAdapter" ref="jpaVendorAdapter" /> 
     <beans:property name="loadTimeWeaver"> 
      <beans:bean 
       class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" /> 
     </beans:property> 
    </beans:bean> 

    <beans:bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 
    <beans:bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /> 

    <beans:bean id="jpaVendorAdapter" 
     class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter"> 
     <beans:property name="database" value="MYSQL" /> 
     <beans:property name="showSql" value="true" /> 
     <beans:property name="generateDdl" value="false" /> 
    </beans:bean> 

    <tx:annotation-driven /> 

    <beans:bean id="transactionManager" 
     class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <beans:property name="entityManagerFactory" ref="entityManagerFactory" /> 
    </beans:bean> 


</beans:beans> 

의 pom.xml

) 쉽게 읽기 0
<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.project</groupId> 
    <artifactId>localdbtest</artifactId> 
    <name>localDbTest</name> 
    <packaging>war</packaging> 
    <version>1.0.0-BUILD-SNAPSHOT</version> 
    <properties> 
     <java-version>1.6</java-version> 
     <org.springframework-version>3.1.1.RELEASE</org.springframework-version> 
     <org.aspectj-version>1.6.10</org.aspectj-version> 
     <org.slf4j-version>1.6.6</org.slf4j-version> 
    </properties> 
    <dependencies> 
     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${org.springframework-version}</version> 
      <exclusions> 
       <!-- Exclude Commons Logging in favor of SLF4j --> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 

     <!-- AspectJ --> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>${org.aspectj-version}</version> 
     </dependency> 

     <!-- Logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${org.slf4j-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>${org.slf4j-version}</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>${org.slf4j-version}</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.15</version> 
      <exclusions> 
       <exclusion> 
        <groupId>javax.mail</groupId> 
        <artifactId>mail</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>javax.jms</groupId> 
        <artifactId>jms</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jdmk</groupId> 
        <artifactId>jmxtools</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jmx</groupId> 
        <artifactId>jmxri</artifactId> 
       </exclusion> 
      </exclusions> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- @Inject --> 
     <dependency> 
      <groupId>javax.inject</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>1</version> 
     </dependency> 

     <!-- Servlet --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <!-- Test --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.7</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-commons</artifactId> 
      <version>1.5.1.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.3.2.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>net.sourceforge.jtds</groupId> 
      <artifactId>jtds</artifactId> 
      <version>1.2.7</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
       <configuration> 
        <additionalProjectnatures> 
         <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
        </additionalProjectnatures> 
        <additionalBuildcommands> 
         <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
        </additionalBuildcommands> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.5.1</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <compilerArgument>-Xlint:all</compilerArgument> 
        <showWarnings>true</showWarnings> 
        <showDeprecation>true</showDeprecation> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <configuration> 
        <mainClass>org.test.int1.Main</mainClass> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

BookDAOImpl.java는

@Repository 

    public class BookDAOImpl implements BookDAO { 

     @PersistenceContext 
     private EntityManager em; 

     public String getBook() { 
      Query q = em.createNamedQuery("select title from book b where b.id = '1'"); 
      String string = q.getResultList().toString(); 
      return string;  
     } 

    } 

BookServiceImpl.java이

@Transactional 
public class BookServiceImpl implements BookService { 

    @Autowired 
    BookDAO bookDAO; 

    public String doGetBook() { 
     String string = bookDAO.getBook(); 
     return string; 
    } 

} 

HomeController.java이

@Controller 
public class HomeController { 

    private BookService bookService; 

    @Inject 
    public HomeController(BookService bookService) { 
     this.bookService = bookService; 
    } 

    @RequestMapping(value = "/book") 
    public String book(Model model) { 
     String book = bookService.doGetBook(); 
     model.addAttribute("book", book); 
     return "book"; 
    } 

} 

는 조언을 주시기 바랍니다 니펫을 니펫을 니펫을. Spring MVC에 대한 다른 접근법을 말하는 다른 의사를 읽었을 때 위의 내용은 잘못된 방식으로 사용될 수있는 스프링 MVC에 대해 이해하고 있으며 매우 바보 같은 구성 문제 일 수 있습니다. 고맙습니다.

답변

2

InstrumentationLoadTimeWeaver를 사용 중입니다. 이 클래스의 javadoc은 다음과 같이 말합니다 :

VM Instrumentation에 의존하는 LoadTimeWeaver.

-javaagent : 다음과 같은

자바 에이전트를 특정하는 JVM 시작

는 사용되는 경로에 /은/스프링 agent.jar 스프링 agent.jar가 함유 JAR 파일이다

InstrumentationSavingAgent 클래스입니다.

-javaagent :

이클립스에서, 예를 들어, "실행 구성"의 JVM의 인수 양식의 로 설정 $ {project_loc} /lib/spring-agent.jar을

표시되는 오류는 사용자가이 지침을 따르지 않는다는 의미입니다.

관련 문제