예제: 동적 조회에 원격 인터페이스 사용

원격 인터페이스를 사용하여 동적 EJB(Enterprise JavaBeans) 조회를 실행할 때 조회 인터페이스에서 executeQuery 메소드를 호출합니다. executeQuery 메소드는 이 인터페이스에 대한 REQUIRED 트랜잭션 속성을 가지고 있습니다. 그러므로 실행할 조회에 대한 정확한 변환 컨텍스트를 구현할 필요는 없습니다.

다음 가져오기 문을 시작하십시오.

import com.ibm.websphere.ejbquery.QueryHome;
import com.ibm.websphere.ejbquery.Query;
import com.ibm.websphere.ejbquery.QueryIterator;
import com.ibm.websphere.ejbquery.IQueryTuple;
import com.ibm.websphere.ejbquery.QueryException;

그런 다음, 다음 예제가 급료가 낮은 직원 이름과 EJB 참조를 가져올 때 문자열 양식에 조회문을 기록하십시오.

String query =
"select e.name as name , object(e) as emp from EmpBean e where e.salary < 50000"; 

QueryHome 클래스에서 참조를 가져와 Query 오브젝트를 작성하십시오. (이 클래스는 executeQuery 메소드를 정의합니다.) 단순화하기 위해 다음 예제는 Query 오브젝트에 대한 동적 조회 JNDI 이름을 사용합니다.

InitialContext ic = new InitialContext();

Object obj =  ic.lookup("com/ibm/websphere/ejbquery/Query");

QueryHome  qh = 
 ( QueryHome) javax.rmi.PortableRemoteObject.narrow( obj, QueryHome.class );
Query qb = qh.create();

그런 다음, QueryIterator 오브젝트(QueryIterator 클래스에 있음)에 정의되는 조회 결과 세트의 최대 크기를 지정해야 합니다. 이 클래스는 QueryIterator API 패키지 내에 포함됩니다. 다음으로 QueryIterator 오브젝트(QueryIterator API 패키지에 있음)에 정의되는 조회 결과 세트의 최대 크기를 지정해야 합니다. 이 예제는 결과 세트의 최대 크기를 99로 지정합니다.

QueryIterator it = qb.executeQuery(query, null, null ,0, 99 );
반복기에는 IQueryTuple 오브젝트 콜렉션이 있습니다. 리턴 콜렉션 값의 레코드입니다. 예제 조회문의 기준에 따라 이 시나리오의 각 튜플은 name의 값 하나와 object(e)의 값 하나를 포함합니다. 조회 결과의 내용을 표시하려면 다음의 코드를 사용하십시오.
while (it.hasNext()) {
	IQueryTuple tuple = (IQueryTuple) it.next();
	System.out.print( it.getFieldName(1) );
	String s = (String) tuple.getObject(1);
	System.out.println( s);
	System.out.println( it.getFieldName(2) );
	Emp e = ( Emp) javax.rmi.PortableRemoteObject.narrow( tuple.getObject(2), Emp.class );
	System.out.println( e.getPrimaryKey().toString());
}
프로그램에서의 출력은 다음과 유사합니다.
name Bob 
emp 1001
name Dave
emp 298003
...
마지막으로, 모든 예외를 포착하고 처리합니다. 조회문의 구문 오류 또는 런타임 처리 오류로 인해 예외가 발생할 수 있습니다. 다음 예제는 이러한 예외를 캐시하고 처리합니다.
} catch (QueryException qe) {
    System.out.println("Query Exception "+ qe.getMessage() );
}

원격 인터페이스 조회에 대한 큰 결과 콜렉션 처리

조회를 큰 콜렉션에 리턴하려면, 결과를 더 관리 가능한 수량으로 나누어 작은 여러 부분으로 리턴하는 프로그래밍 옵션을 사용할 수 있습니다. 답변을 청크로 가져오려면 원격 executeQuery 메소드에서 skipRow 및 maxRow 매개변수를 사용하십시오. 예를 들어 다음과 같습니다.

int skipRow=0;
int maxRow=100;
QueryIterator it = null;
do {
	it = qb.executeQuery(query, null, null ,skipRow, maxRow );
	while (it.hasNext()) {
	// display result 
	skipRow = skipRow + maxRow;
}
} while ( ! it.isComplete() ) ;

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=xque_remoteclient
파일 이름:xque_remoteclient.html