2012-06-12 2 views
0

예외 (exception에서 확장)를 throw하는 메소드가있는 상태 비 저장 세션 빈이 있습니다.세션 빈의 메소드 예외를 잡는 방법

@Stateless 
@LocalBean 
public class MyBean { 
    ... 
    public void myMethod() throws MyException { 
     ... 
    } 
} 

하지만 예외를 포착 할 수 없습니다. 여기

try { 
    myBean.myMethod 
} catch (MyException e) { 
    ... 
} 

는 스택됩니다 : 빈 메소드를 호출하는 프록시를 통해 이동하기 때문에 WARNING: StandardWrapperValve[MyServlet]: PWC1406: Servlet.service() for servlet MyServlet threw exception java.lang.IllegalAccessError: example/MyException at $Proxy327.myMethod(Unknown Source) at example.EJB31_Generated_MyBean_Intf_Bean_.myMethod(Unknown Source) at example.MyServlet.processRequest(MyServlet.java:36) at example.MyServlet.doGet(MyServlet.java:71) ...

나는 생각한다, 그것의. 어떻게 예외를 잡을 수 있습니까? 또는 세션 빈에서 예외를 throw하는 메소드를 피해야합니까? - 내가하지 희망.

+0

"예외를 잡을 수 없다"는 것은 무엇을 의미합니까? bean 메소드에서 MyException이 발생하면 어떻게됩니까? –

+0

예외를 catch하지 않을 때도 마찬가지입니다. 질문에 스택을 추가했습니다. – ziri

답변

1

스택 트레이스가 실제로 발생하는있는 IllegalAccessError입니다 같이 ... 그 API의 문서를 참조하십시오 http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalAccessError.html

실 거예요 ... catch (Exception e) {...}를 추가하여이 잡을 수를 그것은 아닌 오류를의로 Exception의 서브 클래스 정말로 잡으려고한다면 catch (Throwable t) {...}을 추가해야합니다. 오히려 오류가 던져지는 이유를 찾으십시오. 나는 우리가 더 많은 코드를 볼 필요가 있다고 생각한다. ...

API는 "일반적으로이 오류는 컴파일러에 의해 잡히고,이 오류는 클래스 정의가 호환되지 않는 경우 런타임에 만 발생할 수있다" ... 동일한 인터페이스 정의를 사용하기 위해 서버와 클라이언트에서 재배포 했습니까?

+0

예외 공개를 깜박했습니다. 이 비난을 위해 JaveEE에게 사과해야합니다. – ziri

관련 문제