2013-09-26 4 views
3

Я пытаюсь открыть службу отдыха с помощью cxf rest. У меня есть cxf 2.7.5 и spring 3.1.3.RELEASE при попытке использовать URL-адрес http://localhost:8080/web/services/rest/getreq с его выдачей ошибки.cxf rest весенний сервис, дающий ошибку

Status Code: 500 Internal Server Error 
Connection: close 
Content-Language: en 
Content-Type: text/html;charset=ISO-8859-1 
Date: Thu, 26 Sep 2013 12:51:02 GMT 
Server: Apache-Coyote/1.1 
Transfer-Encoding: chunked 

SEVERE: StandardWrapper.Throwable 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cxf' defined in class path resource [META-INF/cxf/cxf.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.bus.spring.SpringBus]: Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl. 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:997) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:943) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:605) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472) 
    at org.apache.cxf.transport.servlet.CXFServlet.createSpringContext(CXFServlet.java:160) 
    at org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:74) 
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:71) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1274) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1186) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:858) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.bus.spring.SpringBus]: Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl. 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:990) 
    ... 30 more 
Caused by: org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl. 
    at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:173) 
    at org.apache.cxf.bus.extension.Extension.getClassObject(Extension.java:185) 
    at org.apache.cxf.bus.extension.ExtensionManagerImpl.activateAllByType(ExtensionManagerImpl.java:138) 
    at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:126) 
    at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:138) 
    at org.apache.cxf.bus.spring.SpringBus.<init>(SpringBus.java:47) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) 
    ... 32 more 
Caused by: java.lang.IncompatibleClassChangeError: Implementing class 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2904) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2904) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:169) 
    ... 42 more 

я сделал мой класс обслуживания @service ("dimRequirementManager") тогда это нужно для создания компонента в CxF-servlet.xml?

CXF-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" 
    xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
      http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd 
      http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd 
      http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">  
    <import resource="classpath:META-INF/cxf/cxf.xml" /> 
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
    <cxf:bus> 
     <cxf:features> 
      <cxf:logging /> 
     </cxf:features> 
    </cxf:bus> 
    <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" /> 
    <bean id="dimRequirementDao" 
     class="com.vxl.dao.hibernate.DimRequirementDaoHibernate"> 
    </bean>  
    <bean id="dimRequirementManager" 
     class="com.vxl.service.impl.DimRequirementManagerImpl"> 
     <property name="dimRequirementDao" ref="dimRequirementDao" /> 
    </bean> 
    <!-- Add new endpoints for additional services you'd like to expose -->  
    <jaxrs:server address="/rest"> 
     <jaxrs:serviceBeans> 
      <ref bean="dimRequirementManager" /> 
     </jaxrs:serviceBeans> 
     <jaxrs:providers> 
      <ref bean="jsonProvider" /> 
     </jaxrs:providers> 
     <jaxrs:extensionMappings> 
      <entry key="json" value="application/json" /> 
      <entry key="xml" value="application/xml" /> 
      <entry key="feed" value="application/atom+xml" /> 
     </jaxrs:extensionMappings> 
    </jaxrs:server>  
</beans> 

web.xml

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
      classpath:/applicationContext-dca.xml 
      classpath:/applicationContext-service.xml 
     </param-value> 
    </context-param> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
<servlet> 
    <servlet-name>CXFServlet</servlet-name> 
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>CXFServlet</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 

класс обслуживания

@Produces("application/xml") 
@Consumes("application/xml") 
@Service("dimRequirementManager") 
public class DimRequirementManagerImpl implements DimRequirementManager {  
    DimRequirementDao dimRequirementDao;  
    @Override 
    public List<DimRequirement> getAllByClientNIsCurrent(Long clientKey) { 
     return dimRequirementDao.getAllByClientNIsCurrent(clientKey); 
    }  
    @GET 
    @Path("/getreq") 
    public DimRequirement getreq(){ 
     DimRequirement requirement =new DimRequirement(); 
     requirement.setClientKey(22L); 
     requirement.setClassification("classification"); 
     return requirement;   
    } 
+0

Какая ошибка? –

+0

Я добавил ошибку – jos

+0

Не могли бы вы проверить, есть ли у вас другая версия того же libray (jar) в вашем пути к классам? – mabbas

ответ

0

Я не знаю, белый при виде конфликта есть ...
Вы можете попробовать удалить cxf-rt-ws-policy-3.1.1.jar.
Я не знаю почему, но это сработало для меня.

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