2015-04-20 6 views
0

Я пытаюсь получить весну и спящий режим в проекте maven. Вот мои различные файлы:J2EE: интеграция Spring + Maven + Hibernate

pom.xml

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>local.bb</groupId> 
    <artifactId>MavenSpringMVC</artifactId> 
    <version>1.0</version> 
    <packaging>war</packaging> 

    <name>MavenSpringMVC</name> 

    <properties> 
     <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <org.springframework.version>4.1.6.RELEASE</org.springframework.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>7.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.35</version> 
     </dependency> 

     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.8.5</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-taglibs</artifactId> 
      <version>4.0.0.RELEASE</version> 
     </dependency> 

     <!-- 
       MAIN/SPRING 
     --> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-expression</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

     <!-- 
       SPRING/HIBERNATE 
     --> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.0.0.Beta1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-annotations</artifactId> 
      <version>3.5.6-Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>5.2.0.Beta1</version> 
     </dependency> 

     <!-- 
       HIBERNATE/TILES 
     --> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-api</artifactId> 
      <version>3.0.5</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>3.0.5</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>3.0.5</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-request-api</artifactId> 
      <version>1.0.6</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.12</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.7.12</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>1.7.12</version> 
     </dependency> 

     <!-- 
       TILES/... 
     --> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <compilerArguments> 
         <endorseddirs>${endorsed.dir}</endorseddirs> 
        </compilerArguments> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.6</version> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>copy</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${endorsed.dir}</outputDirectory> 
          <silent>true</silent> 
          <artifactItems> 
           <artifactItem> 
            <groupId>javax</groupId> 
            <artifactId>javaee-endorsed-api</artifactId> 
            <version>7.0</version> 
            <type>jar</type> 
           </artifactItem> 
          </artifactItems> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Config.java

package local.bb.config; 

import java.util.ArrayList; 
import java.util.Properties; 
import local.bb.test.Test; 
import org.hibernate.mapping.Array; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.jdbc.datasource.DriverManagerDataSource; 
import org.springframework.orm.hibernate4.LocalSessionFactoryBean; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 

@Configuration 
@EnableTransactionManagement 
@EnableWebMvc 
public class Config { 

    @Bean 
    ViewResolver viewResolver() { 
     InternalResourceViewResolver isvr = new InternalResourceViewResolver(); 
     isvr.setViewClass(org.springframework.web.servlet.view.JstlView.class); 
     isvr.setPrefix("/WEB-INF/views/"); 
     isvr.setSuffix(".jsp"); 
     return isvr; 
    } 


    @Bean 
    DriverManagerDataSource dataSource() { 
     DriverManagerDataSource dmds = new DriverManagerDataSource("jdbc:mysql://localhost:3306/java?zeroDateTimeBehavior=convertToNull"); 
     dmds.setUsername("root"); 
     return dmds; 
    } 


    @Bean 
    LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean(); 
     lsfb.setDataSource(dataSource()); 
     lsfb.setPackagesToScan("local.bb.entities"); 
     Properties props = new Properties(); 
     props.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); 
     props.setProperty("hibernate.hbm2ddl.auto", "validate"); 
     lsfb.setHibernateProperties(props); 
     return lsfb; 
    } 
} 

dispatcher.servlet.xml

<?xml version='1.0' encoding='UTF-8' ?> 
<!-- was: <?xml version="1.0" encoding="UTF-8"?> --> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation=" 
      http://www.springframework.org/schema/mvc 
      http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
      http://www.springframework.org/schema/aop 
      http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
      http://www.springframework.org/schema/tx 
      http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-4.0.xsd" 
     xmlns:mvc="http://www.springframework.org/schema/mvc"> 

    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <mvc:annotation-driven /> 

    <context:annotation-config /> 
    <context:component-scan base-package="local.bb.*" /> 
</beans> 

Если некоторые другие файлы необходимы, чтобы определить мой проблема, я их вложу. Проблема в том, я получаю такую ​​ошибку при запуске моего приложения:

Exception while loading the app: 
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: 
org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'sessionFactory' defined in local.bb.config.Config: 
Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: 
org.hibernate.annotations.common.reflection.java.JavaReflectionManager.injectClassLoaderDelegate(Lorg/hibernate/annotations/common/reflection/ClassLoaderDelegate;) 

Я был поиск в Интернете по времени и Риму pom.xml, кажется, хорошо. Я даже нашел (потенциально отсутствующий) класс и метод в структуре jars-зависимостей, что делает эту ошибку еще более странной. Кроме того, конфигурация спящего режима вставлена ​​из другого проекта (который не является maven), где он работает нормально. Контроллеры хороши, а также взгляды. У кого-нибудь есть идеи?


EDIT:

Полный трассировки стека ошибки (. Я должен был использовать Pastebin, если есть какой-то лучший путь, пусть т знать стек был большой, чтобы вставить его здесь): http://pastebin.com/S50Jx3iD

+0

Опубликовать полный след стека. –

ответ

0

Если бы я был вами, я бы попробовал версию GA Hibernate 4.3.X. Вы используете hibernate, что вполне может быть причиной того, почему вы получаете NoSuchMethodException - весна создает фабрику фабрики сессий с отражением, и API, возможно, изменился между v4 и 5.

Также я попытался бы удалить ссылку на аннотации hibernate , согласно this его больше не нужно.

Смежные вопросы