2016-05-28 8 views
2

Ich baue einen JAX-WS Webservice in Java 8 und benutze Spring 4.2.6 und Hibernate 5.1 damit. Aber wenn ich mein Projekt auf Tomcat auslege, stoße ich auf folgende Ausnahme. Ich habe das selbe gegoogelt und keiner der stackoverflow Beiträge war hilfreich.java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException

Ausnahmestapel

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) 

Hier ist die

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> 

Anwendung Context.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> 

Projektstruktur

Project Structure

Ich habe den ganzen Tag mit diesem Fehler gekämpft. Ich weiß nicht, was ich hier vermisse.

UPDATE Der Fehler tritt bei der Ausführung der folgenden Zeile in meiner Java-Datei.

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

+0

Überprüfen Sie, ob das Problem gleich ist wie http://stackoverflow.com/questions/8626819/spring-noclassdeffounderror-org-springframework-beans-fatalbeanexception-when-ad – chaitan64arun

+0

@ Chaitan64arun Ich habe bereits den obigen Link verwiesen, aber es ist nicht helfend. – Steve

Antwort

1

Das Problem, indem Sie folgende Codezeile

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

statt

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

Ich weiß noch nicht, den Grund, warum es funktionierte wurde aufgelöst. Würde es schätzen, wenn jemand das erklären könnte.

Verwandte Themen