2017-09-27 2 views
0

내부 용으로 유용한 정보를 반환하는 "메타"API 끝점을 만들려고합니다. 내가 얻으려는 분야 중 하나는 데이터베이스 URL입니다.컨텍스트에서 JDBC URL을보고하는 방법

<Resource name="jdbc/mycon" auth="Container" type="javax.sql.DataSource" 
     removeAbandoned="true" removeAbandonedTimeout="30" maxActive="8" maxIdle="4" maxWait="10000" 
     validationQuery="SELECT SQL_NO_CACHE 1+1" 
     username="u" password="p" driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://my.url.com" /> 

나는 몇 가지 코드 (스칼라)를 가지고 DataSource 개체로 정보를 반환합니다 :

val context = (new InitialContext).lookup("java:/comp/env").asInstanceOf[Context] 
    val dataSource = context.lookup(s"jdbc/mycon").asInstanceOf[DataSource] 

그러나 내가 알아낼 수 없습니다가 다음과 같이 주어진 컨텍스트 파일에서

이 URL을 추출하는 방법. 결과를 캐스팅 할 수있는 다른 클래스가 있습니까?

은 내가 BasicDataSource의를 사용하여 시도,하지만 난 엔드 포인트를 쳤을 때 나는 오류 메시지가 얻을 : Error: com.sun.proxy.$Proxy0 cannot be cast to org.apache.commons.dbcp.BasicDataSource

답변

0

이 데이터 소스는 항상 JDBC URL을하지 않습니다. 예를 들어 호스트, 포트 및 데이터베이스와 같은 항목을 직접 설정하는 드라이버 관련 데이터 소스 일 수도 있고 연결 풀을 제공하고 연결 정보가있는 실제 데이터 소스를 래핑하는 데이터 소스 일 수도 있습니다.

속성의 반사가 유용한 정보를 제공하는지 확인할 수는 있지만 프록시 클래스를 통해 보호되고 내 생각에 javax.sql.DataSource API 만 노출됩니다.

관련 문제