2016-05-28 1 views
2

Я создаю веб-службу JAX-WS в Java 8 и используя Spring 4.2.6 и Hibernate 5.1 с ней. Но когда я развертываю свой проект на tomcat, я столкнулся с следующим исключением. У меня есть googled то же самое, и ни один из сообщений stackoverflow не был полезен.java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException

Исключение Stack

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4729) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5167) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

May 28, 2016 10:42:25 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log file 
May 28, 2016 10:42:25 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Context [/MavenEmployee] startup failed due to previous errors 
May 28, 2016 10:42:25 PM org.apache.catalina.core.ApplicationContext log 
INFO: Closing Spring root WebApplicationContext 
May 28, 2016 10:42:25 PM org.springframework.context.support.AbstractApplicationContext doClose 
INFO: Closing Root WebApplicationContext: startup date [Sat May 28 22:42:14 IST 2016]; root of context hierarchy 
May 28, 2016 10:42:25 PM org.springframework.context.support.AbstractApplicationContext doClose 
WARNING: Exception thrown from LifecycleProcessor on context close 
java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Sat May 28 22:42:14 IST 2016]; root of context hierarchy 
    at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:415) 
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:975) 
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:934) 
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:559) 
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143) 
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4776) 
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5390) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Здесь представлен

pom.xml

<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.maven.ws</groupId> 
<artifactId>MavenEmployee</artifactId> 
<packaging>war</packaging> 
<version>1.0</version> 
<name>Maven WS</name> 
<url>http://maven.apache.org</url> 

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 


    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.2.6.RELEASE</version> 
    </dependency> 

    <!-- http://mvnrepository.com/artifact/org.springframework/spring-orm --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.2.6.RELEASE</version> 
    </dependency> 


    <dependency> 
     <groupId>com.sun.xml.ws</groupId> 
     <artifactId>jaxws-rt</artifactId> 
     <version>2.2.10</version> 
    </dependency> 

    <!-- Library from java.net, integrate Spring with JAX-WS --> 
    <dependency> 
     <groupId>org.jvnet.jax-ws-commons.spring</groupId> 
     <artifactId>jaxws-spring</artifactId> 
     <version>1.9</version> 

     <exclusions> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-core</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.xml.stream.buffer</groupId> 
       <artifactId>streambuffer</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.jvnet.staxex</groupId> 
       <artifactId>stax-ex</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 



<dependency> 
      <groupId>com.oracle</groupId> 
      <artifactId>ojdbc6</artifactId> 
      <version>11.2.0</version> 
     </dependency> 
    <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.1.0.Final</version> 
    </dependency> 

    <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.1.0.Final</version> 
    </dependency> 


    <!-- Hibernate library dependency start --> 
    <dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
     <version>1.6.1</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>3.2.1</version> 
    </dependency> 

    <dependency> 
     <groupId>antlr</groupId> 
     <artifactId>antlr</artifactId> 
     <version>2.7.7</version> 
    </dependency> 
    <!-- Hibernate library dependency end --> 

    <!-- http://mvnrepository.com/artifact/commons-dbcp/commons-dbcp --> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>1.4</version> 
    </dependency> 

</dependencies> 

<build> 
    <finalName>MavenEmployee</finalName> 
</build> 

ApplicationContext. XML

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:ws="http://jax-ws.dev.java.net/spring/core" xmlns:wss="http://jax-ws.dev.java.net/spring/servlet" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://jax-ws.dev.java.net/spring/core http://jax-ws.java.net/spring/core.xsd http://jax-ws.dev.java.net/spring/servlet http://jax-ws.java.net/spring/servlet.xsd"> 

    <wss:binding url="/employee"> 
     <wss:service> 
      <ws:service bean="#employeeWS" /> 
     </wss:service> 
    </wss:binding> 

    <bean id="employeeWS" class="com.maven.spring.EmployeeWSImpl"> 
     <property name="employee" ref="employeePOJO" /> 
    </bean> 

    <bean id="employeePOJO" class="com.maven.spring.Employee"> 
     <property name="empID" value="1234" /> 
     <property name="name" value="Steve" /> 
     <property name="designation" value="HOD"></property> 
    </bean> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> 
     <property name="url" value="jdbc:oracle:thin:@schoolpc:1721:orcl2"></property> 
     <property name="username" value="ADMIN"></property> 
     <property name="password" value="admin123"></property> 
    </bean> 


    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource"></property> 
     <property name="mappingResources"> 
      <list> 
       <value>employee.hbm.xml</value> 
      </list> 
     </property> 

     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
       <prop key="hibernate.hbm2ddl.auto">update</prop> 
       <prop key="hibernate.show_sql">true</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="employeeDAO" class="com.maven.spring.EmployeeDAOImpl"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> 

</beans> 

employee.hbm.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
    <class name="com.maven.spring.Employee" table="EMP_RCRD"> 
     <meta attribute="clas-description"> 
      Employee POJO 
     </meta> 
     <id name="empID" type="string" column="EMP_ID"> 
     </id> 
     <property name="name" type="string" column="EMP_NAME"></property> 
     <property name="designation" type="string" column="EMP_DESIG"></property> 
    </class> 
</hibernate-mapping> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <display-name>MavenEmployee</display-name> 

    <servlet> 
     <servlet-name>jaxws-servlet</servlet-name> 
     <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>jaxws-servlet</servlet-name> 
     <url-pattern>/employee</url-pattern> 
    </servlet-mapping> 

    <!-- Register Spring Listener --> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>WEB-INF/classes/applicationContext.xml</param-value> 
    </context-param> 

</web-app> 

Структура проекта

Project Structure

Я боролся с этой ошибкой на целый день. Я не знаю, чего мне здесь не хватает.

ОБНОВЛЕНИЕ Ошибка при выполнении следующей строки в моем java-файле.

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext ("applicationContext.xml");

+0

Проверьте, является ли проблема такой же, как http://stackoverflow.com/questions/8626819/spring-noclassdeffounderror-org-springframework-beans-fatalbeanexception-when-ad – chaitan64arun

+0

@ chaitan64arun Я уже ссылался на указанную выше ссылку, но это не помогая. – Steve

ответ

1

Проблема получила решена с помощью следующей строки кода

Resource resource = new ClassPathResource("applicationContext.xml"); 

вместо

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 

Я до сих пор не знаю, почему он работал. Поймите, если кто-нибудь сможет это объяснить.

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