2012-08-30 82 views
0

我有下面的類作爲我的觀點切Spring AOP的切入點爲無

public class GenricExceptionMapper implements ExceptionMapper<Exception> { 

Logger logger = Logger.getLogger(GenricExceptionMapper.class); 
public Response toResponse(Exception exception) { 
    logger.error(exception.getStackTrace()); 
    logger.info("Exception Thrown"); 
    String res="500 - Internal Server Error"; 
    exception.printStackTrace(); 
    logger.debug("Sending Http Response :"+res); 
    return Response.status(500).entity(res).build(); 
} 

} 

,併爲它定義如下建議模板類...

@Aspect 
public class ExceptionMapperAspect { 
Logger logger = Logger.getLogger(ExceptionMapperAspect.class); 

//@Context HttpServletRequest servletRequest; 

@AfterReturning(pointcut="execution(* toResponse(..))") 
public void logExceptionAspect() 
{ 
    //logger.info("statsKey in request object "+servletRequest.getAttribute("statsKey")); 
} 

,當我嘗試運行這一點,我得到下面的異常錯誤消息..

**

無法找到接口的類型參數 javax.ws.rs.ext.ExceptionMapper

** 該錯誤是由這個類的的RESTEasy代碼 http://grepcode.com/file/repo1.maven.org/maven2/org.jboss.resteasy/resteasy-jaxrs/2.2.2.GA/org/jboss/resteasy/util/Types.java#Types.getActualTypeArgumentsOfAnInterface%28java.lang.Class%2Cjava.lang.Class%29

部分拋出。

這是因爲'Spring AOP不能建議實現模板接口的切入點類'? 任何想法? Spring AOP如何爲實現參數化接口的類創建代理對象?......它使用CGLIB還是JDK代理?

+0

我知道這個是舊的,但仍列爲未答覆。如果看起來合適,請您接受並提出我的答案嗎?謝謝。 – kriegaex

回答

0

我認爲你的問題在別的地方。我用Google搜索你的異常

無法找到接口

的類型參數,發現它與JBoss的RESTEasy連接。嘗試註釋掉部分類或方面代碼,直到找到罪魁禍首。

順便說一下,您的toResponse的執行返回一個原始類型。製作Response<Exception>以便更安全並避免警告。

+0

Hmmn ....我忘了提及,這個錯誤是由RESTEasy的一個類而不是Spring AOP拋出的。 – CodePredator

+0

那麼現在你的問題到底是什麼?如果與方面有關,我可以提供幫助。否則,我不是應用程序服務器,容器等方面的專家,但如果我瞭解您的真實問題,我會盡力提供幫助。 – kriegaex

+0

啊,你剛剛編輯你的問題。那麼,正如我所說,我認爲這不是與方面有關的。如果您刪除了建議,會發生什麼?錯誤消失了嗎?你的建議真的是沒有用嗎? – kriegaex