작업 영역을 사용하는 애플리케이션 개발
애플리케이션은 UserWorkArea 인터페이스를 구현하여 작업 영역 서비스와 상호작용합니다. 이 인터페이스는 작업 영역을 작성, 조작 및 종료하는 데 사용되는 모든 메소드를 정의합니다.
이 태스크 정보
package com.ibm.websphere.workarea;
public interface UserWorkArea {
void begin(String name);
void complete() throws NoWorkArea, NotOriginator;
String getName();
String[] retrieveAllKeys();
void set(String key, java.io.Serializable value)
throws NoWorkArea, NotOriginator, PropertyReadOnly;
void set(String key, java.io.Serializable value, PropertyModeType mode)
throws NoWorkArea, NotOriginator, PropertyReadOnly;
java.io.Serializable get(String key);
PropertyModeType getMode(String key);
void remove(String key)
throws NoWorkArea, NotOriginator, PropertyFixed;
}
- NoWorkArea
- 요청에는 연관된 작업 영역이 필요하지만 작업 영역이 없는 경우에 발생합니다.
- NotOriginator
- 요청이 가져온 작업 영역의 내용을 조작하려는 경우에 발생합니다.
- PropertyReadOnly
- 요청이 읽기 전용이거나 고정 읽기 전용 특성을 수정하려는 경우에 발생합니다.
- PropertyFixed
- 지정된 특성에 고정 모드 중 하나가 들어 있는 경우에 remove 메소드에 의해 발생합니다.
프로시저
예
작업 영역 오브젝트 유형. 다음 예에서 클라이언트는 작업 영역을 작성하고 작업 영역에 사이트 ID와 우선순위의 두 특성을 삽입합니다. 사이트 ID는 읽기 전용 특성으로 설정되므로 클라이언트는 작업 영역의 받는 사람이 사이트 ID를 대체하도록 허용하지 않습니다. 이 특성은 회사 키와 SimpleSampleCompany 오브젝트의 정적 인스턴스로 구성됩니다. 우선순위 특성은 키 우선순위와 SimpleSamplePriority 오브젝트의 및 정적 인스턴스로 구성됩니다. 오브젝트 유형은 다음 코드 예에 표시된 것처럼 정의됩니다.
public static final class SimpleSampleCompany {
public static final SimpleSampleCompany Main;
public static final SimpleSampleCompany NewYork_Sales;
public static final SimpleSampleCompany NewYork_Development;
public static final SimpleSampleCompany London_Sales;
public static final SimpleSampleCompany London_Development;
}
public static final class SimpleSamplePriority {
public static final SimpleSamplePriority Platinum;
public static final SimpleSamplePriority Gold;
public static final SimpleSamplePriority Silver;
public static final SimpleSamplePriority Bronze;
public static final SimpleSamplePriority Tin;
}
그런 다음 클라이언트는 원격 오브젝트에 대한 호출을 수행합니다. 작업 영역은 자동으로 전파되며, 따라서 원격 오브젝트의 어떤 메소드도 작업 영역 인수를 취하지 않습니다. 원격측에서 요청은 먼저 SimpleSampleBean에 의해 처리되는데 Bean은 먼저 작업 영역에서 사이트 ID 및 우선순위 특성을 읽습니다. 그런 다음 Bean은 의도적으로 가져온 작업 영역에 직접 쓰고 읽기 전용 사이트 ID 특성을 대체하려 시도하지만 작업이 실패합니다.
SimpleSampleBean이 성공적으로 중첩된 작업 영역을 시작하며, 여기에서 클라이언트의 우선순위를 대체한 후 다른 Bean인 SimpleSampleBackendBean을 호출합니다. SimpleSampleBackendBean은 작업 영역에서 특성을 읽는데, 여기에는 클라이언트에서 설정된 사이트 ID와 SimpleSampleBean에서 설정된 우선순위가 들어 있습니다. 마지막으로 SimpleSampleBean은 중첩된 작업 영역을 완료하고, 사이트 ID 특성을 바탕으로 메시지를 출력한 후 리턴합니다.
작업 영역 파티션 관리자 사용. 다음 코드 예에서는 작업 영역 파티션 관리자 인터페이스의 사용을 보여줍니다. 샘플은 작업 영역 파티션을 프로그램 방식으로 작성하고 검색하는 방법을 보여줍니다. 작업 영역 파티션을 프로그램 방식으로 작성하는 것은 Java Platform, Enterprise Edition(Java EE) 클라이언트에서만 가능합니다. 서버에서 작업 영역 파티션을 작성하려면 관리 콘솔을 사용해야 합니다. 파티션 구성에 사용할 수 있는 구성 매개변수는 작업 영역 파티션 서비스 문서를 참조하십시오.
import com.ibm.websphere.workarea.WorkAreaPartitionManager;
import com.ibm.websphere.workarea.UserWorkArea;
import com.ibm.websphere.workarea.PartitionAlreadyExistsException;
import com.ibm.websphere.workarea.NoSuchPartitionException;
import java.lang.IllegalAccessError;
import java.util.Properties;
import javax.naming.InitialContext;
//This sample demonstrates how to retrieve an instance of the
//WorkAreaPartitionManager implementation and how to use that
//instance to create a WorkArea partition and retrieve a partition.
//NOTE: Creating a partition in the way listed is only available
//on a J2EE client. To create a partition on the server use the
//WebSphere administrative console. Retrieving a WorkArea
//partition is performed in the same way on both client and server.
public class Example {
//The name of the partition to create/retrieve
String partitionName = "myPartitionName";
//The name in java naming the WorkAreaPartitionManager instance is bound to
String jndiName = "java:comp/websphere/WorkAreaPartitionManager";
//On a J2EE client a user would create a partition as follows:
public UserWorkArea myCreate(){
//Variable to hold our WorkAreaPartitionManager reference
WorkAreaPartitionManager partitionManager = null;
//Get an instance of the WorkAreaPartitionManager implementation
try {
InitialContext initialContext = new InitialContext();
partitionManager = (WorkAreaPartitionManager) initialContext.lookup(jndiName);
} catch (Exception e) { }
//Set the properties to configure our WorkArea partition
Properties props = new Properties();
props.put("maxSendSize","12345");
props.put("maxReceiveSize","54321");
props.put("Bidirectional","true");
props.put("DeferredAttributeSerialization","true");
//Variable used to hold the newly created WorkArea Partition
UserWorkArea myPartition = null;
try{
//This is the way to create a partition on the J2EE client. Use the
//WebSphere Administrative Console to create a WorkArea Partition
//on the server.
myPartition = partitionManager.createWorkAreaPartition(partitionName,props);
}
catch (PartitionAlreadyExistsException e){ }
catch (IllegalAccessException e){ }
return myPartition;
}
//. . . .
//In order to retrieve a WorkArea partition at some time later or
//from some other class, do the following (from client or server):
public UserWorkArea myGet(){
//Variable to hold our WorkAreaPartitionManager reference
WorkAreaPartitionManager partitionManager = null;
//Get an instance of the WorkAreaPartitionManager implementation
try {
InitialContext initialContext = new InitialContext();
partitionManager = (WorkAreaPartitionManager) initialContext.lookup(jndiName);
} catch (Exception e) { }
//Variable used to hold the retrieved WorkArea partition
UserWorkArea myPartition = null;
try{
myPartition = partitionManager.getWorkAreaPartition(partitionName);
}catch(NoSuchPartitionException e){ }
return myPartition;
}
}
다음에 수행할 작업
작업 영역에 대한 추가 정보는 API의 com.ibm.websphere.workarea 패키지를 참조하십시오. 생성된 API 문서는
경로의 Information Center 목차에서 사용 가능합니다.