예제: 읽기 전용 엔티티 Bean 사용

읽기 전용 엔티티 Bean을 사용하는 EJB(Enterprise JavaBeans) 애플리케이션 작성을 위한 사용법 시나리오 및 예입니다.

사용법 시나리오

고객은 오후 10:00 로컬 시간(24시간 형식으로 22:00)보다 이전에 매일 업데이트되는 카탈로그 가격 및 출하 비율 정보의 데이터베이스를 보유합니다. 고객은 읽기 전용으로 이 데이터에 액세스하는 EJB 애플리케이션을 작성하고자 합니다. 즉, 이 애플리케이션은 가격 데이터베이스를 업데이트하지 않습니다. 업데이트는 일부 기타 애플리케이션을 통해 수행됩니다.

예제

고객의 엔티티 Bean 로컬 인터페이스는 다음과 같습니다.

		public interface ItemCatalogData extends EJBLocalObject {
	 
	  	  public int getItemPrice();
	 
	  	  public int getShippingCost(int destinationCode);
	 
	}

출하를 포함한 전체 가격을 파악하기 위해 이 EntityBean을 호출하는 Stateless 세션 Bean 메소드(TxRequired라고 가정함)의 코드는 다음과 같습니다.

	.....
		// Some transactional steps occur prior to this point, such as removing the item from 
  // inventory, etc.
  // Now obtain the price of this item and start to calculate the total cost to the purchaser
 
  ItemCatalogData theItemData = 
	    	    (ItemCatalogData) ItemCatalogDataHome.findByPrimaryKey(theCatalogNumber);
 
		int totalcost = theItemData.getItemPrice();
	 
		// ...     some other processing, etc. in the interim
	// ...
	// ...
	 
		// Add the shipping costs
		totalcost = totalcost + theItemData.getShippingCost(theDestinationPostalCode);
애플리케이션 어셈블리 시간에 고객은 다음과 같이 이 Bean에 대한 EJB 캐싱 매개변수를 설정합니다.
  • ActivateAt = ONCE
  • LoadAt = DAILY
  • ReloadInterval = 2200
    제거된 기능 제거된 기능: WAR 파일 확장(WEB-INF/ibm-web-ext.xmi) 및 애플리케이션 확장(META-INF/ibm-application-ext.xmi)을 포함하여 IBM 배치 디스크립터 확장의 reloadInterval 및 reloadingEnabled 속성은 더 이상 사용되지 않습니다.depfeat

매일 밤 22:00 이후에 getItemPrice() 메소드에 대한 첫 번째 호출에서 EJB 컨테이너는 데이터베이스에서 가격 정보를 다시 로드합니다. getItemPrice() 및 getShippingCost()에 대한 호출 사이에 시계가 22:00이 되면, getShippingCost() 메소드는 22:00에 발생했을 수 있는 데이터베이스에 대한 변경사항 이전에 보유한 값을 계속 리턴합니다. 이 트랜잭션의 첫 번째 메소드 호출이 22:00 이전에 발생했기 때문입니다. 따라서 사용된 항목 가격 및 출하 비용은 서로가 동기화된 상태를 유지합니다.


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



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