0

ポイントカットとして次のクラスがあります

   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 の型引数が見つかりません

** このクラスによってエラーがスローされてい ます 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

RESTEasy コードの一部。

これは、「Spring AOP はテンプレート インターフェイスを実装するポイントカット クラスをアドバイスできない」ためですか? 何か案は?Spring AOP は、パラメータ化されたインターフェースを実装するクラスのプロキシ オブジェクトをどのように作成しますか?...CGLIB または JDK プロキシを使用しますか?

4

1 に答える 1

0

あなたの問題は別の場所にあると思います。私はあなたの例外をググった

インターフェイスの型引数が見つかりません

JBoss RESTEasy に関連してそれを見つけました。原因が見つかるまで、クラスまたはアスペクト コードの一部をコメント アウトしてみてください。

ところで、あなたの実装はtoResponse生の型を返します。よりタイプセーフResponse<Exception>になり、警告を回避するためにそれを行います。

于 2012-08-30T11:52:20.517 に答える