1. 程式人生 > >CXF與JAX-RS異常:org.springframework.aop.support.AopUtils.isCglibProxyClass(Ljava/lang/Class;)Z

CXF與JAX-RS異常:org.springframework.aop.support.AopUtils.isCglibProxyClass(Ljava/lang/Class;)Z

概述

    最近因公司專案需要,實現不同的專案的RESTful訪問,決定採用CXF加上JAX-RS來實現。CXF相比開始的Xfire和後來的axis2,使用起來要順手多了,前幾年用過axis2,後來又用過CXF。

 

問題

    最近使用CXF結合JAX-WS的時候,出現以下異常:

Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: 
Property 'serviceBeans' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.aop.support.AopUtils.isCglibProxyClass(Ljava/lang/Class;)Z
	at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:121)
	at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:75)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1514)
	... 70 more

    框架如下:

    Spring MVC:4.2.5 RELEASE

   CXF:2.X

   JAX-RS:1.1.1(jsr311-api)

  

解決

    試了好幾次,想到了幾種原因,比如是AOP的問題,CXF與JAX-RS結合的配置檔案和程式碼的問題,,,但發現改了還是不對。後來才發現是Spring架構和CXF架包的版本問題,我用的Spring版本是4.2.5RELEASE,CXF的版本是2.X,導致衝突了。如果Spring使用的是4.2以上的版本,那CXF的版本不要低於3.X,現在CXF最新的版本是3.2.5(CXF官網:http://cxf.apache.org/),看描述是解決了以前版本的一些問題,於是決定就用這個版本的了。