2014-07-23 3 views
0

내 회사의 모든 보고서와 공유 할 rptlibrary를 만들고 있습니다. 라이브러리에는 oda 데이터 소스가 생성되어 모든 보고서에 공유됩니다. 우리는 데이터베이스에서 ReportEventAdapter.initialize()에서 데이터베이스에 대한 정보를 얻기 위해 쿼리를 수행하려고합니다.Java 처리기에서 데이터베이스 연결 BIRT

ReportDesignHandle rdh = (ReportDesignHandle)reportContext.getReportRunnable().getDesignHandle(); 
DesignSessionImpl ds = rdh.getModule().getSession(); 
String rsf = ds.getResourceFolder(); 
LibraryHandle libhan = ds.openLibrary(rsf + "/my.rptlibrary").handle(); 
DataSourceHandle datasource = libhan.findDataSource("myDS"); 

을하지만 데이터 소스를 일단, 데이터 소스에서 데이터베이스에 대한 연결을 얻을 수있는 방법은 없습니다 :이 방법으로 라이브러리에서 데이터 소스를 액세서 수 있습니다. 이렇게하는 유일한 방법은 데이터 소스의 데이터를 사용하여 데이터베이스에 대한 고전적인 JDBC 연결을 만드는 것입니다. 거기에 더 우아한 메서드를 사용하여 데이터베이스에 자바 처리기에서 연결하는 방법 있는가? 풀링, 연결 재사용 등을 사용하는 것과 같습니다.

감사합니다.

답변

0

보고서 스크립트 이벤트에서 데이터 세트 값을 반복 할 수 있으므로 데이터 세트가 JNDI URL로 정의 된 경우 쿼리에서 연결 풀을 활용할 수 있습니다.

그러나 매우 복잡합니다. 전체 예제는 in this topic입니다. 보고서 매개 변수의 "getDefaultValueList"이벤트에 정의 된 스크립트는 보고서의 아무 곳으로나 이동 한 다음 전역 변수를 초기화 할 수 있습니다. 특히 "initialize"이벤트 나 "beforeFactory"이벤트로 이동할 수 있습니다 ("beforeFactory"는 아마도 원하는 것입니다).