WebSphere Extended Deployment, Version 6.0.x     운영 체제: AIX, HP-UX, Linux, Solaris, Windows, z/OS

옵션 A CMP 인스턴스의 효율적인 제거

이 항목에서는 옵션 A 풀에서 해당 컨테이너 관리 지속(CMP) 인스턴스를 제거하는 가장 효과적인 방법을 설명합니다. 먼저 컨테이너 관리 지속(CMP) Bean에 메소드를 추가하십시오.

public void invalidateFromCache()
{
}

CMP 로컬 인터페이스에 이 메소드를 추가하십시오. TX_REQUIRED를 사용할 수 있도록 메소드의 설명자를 수정하십시오.
어셈블리 탭을 클릭하여 EJB 설명자 편집기를 통해 수행한 후 컨테이너 트랜잭션 패널에서 추가 단추를 클릭할 수 있습니다. CMP를 선택한 후 invalidateFromCache 메소드를 클릭하십시오. 콤보 상자에서 필수를 선택한 후 확인을 클릭하십시오. 그런 다음, 예를 들어 "오류! 참조 소스를 찾을 수 없음"을 살펴봐야 합니다. 이제 다음과 같이 홈 메소드를 추가하십시오.
	public void ejbHomeInvalidateCompleteOrders(Collection/*<orderlocal>*/ orders)
	{
		Iterator iter = orders.iterator();
		while(iter.hasNext())
		{
			OrderLocal order = (OrderLocal)iter.next();
				// this just adds the option A bean to this transaction so that when 
       we rollback below
				// it gets discarded, i.e. removed from the cache.
			order.invalidateFromCache();
		}
		myEntityCtx.setRollbackOnly();
	}
메소드를 마우스 오른쪽 단추로 클릭하여 Bean 로컬 홈에 이 메소드를 추가하고 엔터프라이즈 Bean을 선택한 후 로컬 홈으로 이동하십시오. 이전과 동일한 방법을 사용하여 이 메소드 트랜잭션 속성을 RequiresNew로 설정하십시오. 이 메소드는 OrderLocal 목록(CMP를 Order라고 함)을 사용하며 옵션 A 캐시에서 해당 항목을 제거합니다. 키 목록을 사용할 수도 있지만 이 경우 findByPrimaryKey를 실행한 후 메소드를 호출해야 함을 참고하십시오. 여기에 설명된 방법보다 비용이 많이 듭니다. 메소드는 기본적으로 목록을 반복하고 목록에서 각 명령마다 invalidate 메소드를 호출합니다. invalidate 메소드는 옵션 A Bean을 현재 트랜잭션과 연관시킵니다. 각 Bean이 트랜잭션과 연관된 후에 롤백으로만 표시합니다. 메소드가 리턴되면 트랜잭션이 롤백되고 연관된 모든 옵션 A Bean이 캐시에서 버려집니다. 비즈니스 로직에서 새 주문을 승인합니다. 새 주문을 승인하는 파트에서 여러 가지 다른 주문을 완료할 수 있습니다. acceptOrder 메소드는 호출자에 List<OrderLocal>을 리턴합니다. 그러면 호출자는 이 목록을 위의 홈 메소드에 전달하여 캐시에서 제거해야 합니다. 데이터베이스에서는 삭제되지 않고 캐시에서만 삭제됩니다. 다음은 예입니다.
			BookLocal book = ivBookHome.findByPrimaryKey(ivOrder.getSymbol());
			Collection/*<OrderKey>*/ completedOrders = 
							book.acceptOrder(session, pub, ivOrder, cache);
			// invalidate all completed orders from the CMP option A cache.
			try
			{
				if(!completedOrders.isEmpty())
					ivOrderHome.invalidateCompleteOrders(completedOrders);
			}
catch (Exception e)
			{
				// ignore expected exception
			}
여기에서는 주문 승인 메소드를 호출하여 문서 CMP를 찾는 방법을 표시합니다. 이 메소드는 호출 결과로 캐시에서 제거해야 할 명령을 리턴합니다. acceptOrder 메소드에서 리턴하는 경우 해당 트랜잭션을 자동으로 확약할 수 있도록 해당 메소드에서 RequiresNew 트랜잭션을 사용합니다. 그런 다음 주문의 홈 메소드를 사용하여 캐시에서 리턴된 CMP를 제거합니다. acceptOrder 메소드는 다음과 같이 제거해야 하는 모든 주문 인스턴스를 수집합니다.
public Collection/*<OrderLocal>*/ acceptOrder(…)
				Collection completeOrders = new LinkedList();
			 	OrderLocal buyer = ...;
				OrderLocal seller = ...;
			... some business logic....
					if(buyer.getIsComplete())
						completeOrders.add(buyer);
					if(seller.getIsComplete())
						completeOrders.add(seller);
				…
				return completedOrders;
}

이 코드는 처리를 완료한 캐시된 오브젝트를 제거하는 응용프로그램을 보여줍니다. 응용프로그램에서 오브젝트를 제거하지 않으면 캐시에 유용한 인스턴스 및 유용하지 않은 인스턴스가 모두 존재합니다. 유용한 인스턴스는 계속 필요하거나 보류 중이거나 완료되지 않은 레코드입니다. 캐싱이 완료된 레코드 지점이 없습니다. 응용프로그램에서는 이 접근 방법을 사용하여 완료한 오브젝트를 제거할 수 있습니다.




Related concepts
특정 CMP 데이터 파티션

참조 주제:    

이용 약관 | 피드백 마지막 갱신 날짜: Mar 21, 2006 11:38:53 AM EST
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r0/index.jsp?topic=?topic=/com.ibm.websphere.xd.doc/info/WPF51/rwpfremoveoptionacmp.html

© Copyright IBM 2005, 2006. All Rights Reserved.
이 Information Center는 Eclipse 테크놀러지로 강화되었습니다. (http://www.eclipse.org)