문제

Jboss Exceptionsorter 클래스가 데이터베이스 오류를 어떻게 확인할 수 있는지 궁금합니다.

응용 프로그램 (EJB 또는 Persistence Framework)은 데이터베이스 연결에 대한 참조를 보유하고 있으므로 응용 프로그램에 의해 sqlexecetions가 잡혔습니다. Jboss는 예외의 내용을 어떻게 볼 수 있습니까?

Jboss가 연결을 감싸고 이러한 메시지 또는 그와 비슷한 것을 가로 채나요?

도움이 되었습니까?

해결책

JBOSS 내부에서 실행되는 코드에 대한 디버거를 실행 한 적이있는 반면 개방형 데이터베이스 연결이있는 경우 연결은 실제로 실제 데이터베이스 연결을 래핑하는 JBOSS 특정 클래스임을 알 수 있습니다.

경우에 따라 SQL 구문 예외와 같은 데이터베이스에 의해 예외가 발생할 때이 래퍼를 스택 추적의 선으로 볼 수 있습니다. 아래 예제의 마지막 줄을 참조하십시오.

java.sql.SQLException: ORA-00942: table or view does not exist
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:810)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)
    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:850)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1134)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3384)
    at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:342)

이 래퍼가 제안한 예외 검사를 제공 할 수 있다고 생각합니다.

다른 팁

JBoss는 데이터 소스 (org.jboss.resource.adapter.jdbc.local.localtxdatasource)에 연결 풀을 사용합니다. ExceptionSer는 Sqlexception을 매개 변수로 취한 다음 특정 오류에 매핑되는 특정 문자열을 확인합니다. 오류가 물리적 연결 문제를 나타내는 경우 "소켓 오류"또는 "파장 파이프"와 비슷합니다.

이 예외 분류기는 연결 상태를 나타내는 부울 값을 반환하여 연결 풀에 다시 반환 한 다음 허위 반환 된 연결을 무효화하고 제거합니다.

Oracle 데이터베이스 :

<property name="exceptionSorterClassName"><value>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</value></property>

이것은 Oracle 데이터베이스에서 작동합니다. 예외 구현의 코드는 다음과 같습니다.

http://kickjava.com/src/org/jboss/resource/adapter/jdbc/vendor/oraclexexceptionser.java.htm

연결 풀이 어디에서 또는 어떻게 확인을 확인하는지에 대한 내부 프로그래밍이 나에게 알려지지 않은 방법. Jboss 소스 코드를 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top