flex.data
Class DataServiceTransaction

java.lang.Object 
확장flex.data.DataServiceTransaction

Public Class DataServiceTransaction
Object 를 확장

DataServiceTransaction 인스턴스는, Data Management Services 에 의해 Management되는 오브젝트 상태를 변경하는 조작을 할 때마다 작성됩니다. 클라이언트로 autoSyncEnabled 프롭퍼티가 true 로 Configuration 되어 있는 경우는, 이 Class를 서버 사이드 코드로부터 사용해, 클라이언트에 포함된 Management 데이터로 변경을 푸쉬 할 수가 있습니다.

sync 메소드, createItem, updateItem, 또는 deleteItem 메소드 내부로부터 다른 변경을 추가하는 경우는, DataServiceTransaction 의 인스턴스가 이미 작성되고 있으므로, 정적인 getCurrentDataServiceTransaction 메소드를 호출해, 다음에 updateItem, deleteItem, 및 createItem 메소드를 호출해, 배치 전체가 정상적으로 종료했을 경우에게만 원의 변경의 배치와 함께 송신되는 추가의 변경을 방아쇠 할 필요가 있습니다. 현재의 트랜잭션(transaction)가 롤백(rollback) 되었을 경우, 이러한 변경은 클라이언트에 푸쉬 되지 않습니다.

Data Management Services 와 같은 Web 어플리케이션의 코드의 실행중에서, 기존의 어셈블러의 조작중이 아닌 경우는, 정적인 begin 메소드를 사용해, 신규의 DataServiceTransaction 를 개시합니다. 이 결과, DataServiceTransaction 오브젝트가 돌려주어집니다. updateItem, createItem, deleteItem, 및 refreshFill 메소드를 사용해, 변경의 배치를 큐에 넣을 수가 있습니다. commit 를 호출하면(자), 이러한 변경은 클라이언트에 푸쉬 됩니다.

useJTA parameter 를 true 로 Configuration 해 begin 를 호출하면(자), JTA UserTransaction 이 DataServiceTransaction 와 함께 개시됩니다. UserTransaction 는, getUserTransaction 메소드를 사용해 취득할 수 있습니다. 이 경우에 DataServiceTransaction 로 commit 를 호출하면(자), UserTransaction 가 최초로 위탁됩니다. 이것이 정상적으로 실행되었을 경우에게만, 메세지의 배치가 클라이언트에 푸쉬 됩니다.

또, 이 Class를 사용해, 트랜잭션(transaction)의 완료전 및 완료 후의 동기 이벤트를 등록합니다. 이것은 어셈블러를 실장할 경우에 편리합니다. 어셈블러의 실장시에는, 트랜잭션(transaction)가 위탁되었던 시기를 알 필요가 있기 때문입니다.

DataServiceTransaction 는, 각각 thread 로컬 상태에 포함되므로, 한 번에 1 개의 thread만으로 처리되는 것이라고 보여집니다. 이것은 thread 세이프가 아닙니다.

트랜잭션(transaction)를 롤백(rollback) 하려면 , setRollbackOnly 를 호출하는 일도, 통상의 J2EE 어플리케이션의 경우와 같게, UserTransaction 오브젝트에 롤백(rollback) 끝난 마크를 붙일 수도 있습니다.


필드 Summary
static String LOG_CATEGORY
           
static String USER_TX_JNDI_NAME
           
 
메소드 Summary
static DataServiceTransaction begin (boolean useJTA)
          이 버젼의 begin 메소드는 디폴트의 MessageBroker 를 사용합니다.
static DataServiceTransaction begin (String  serverId, boolean useJTA)
          클라이언트로 변경을 송신하기 위해서 사용할 수 있는 DataServiceTransaction 를 개시합니다.
 void commit ()
          클라이언트는, 이 메소드를 호출해 트랜잭션(transaction)를 위탁할 수 있습니다.
 void createItem (String  destination, Object  item)
          이 메소드를 사용해, 새로운 아이템이 작성된 것을 Data Management Service 에 나타냅니다.
 void deleteItem (String  destination, Object  item)
          이 아이템이 포함되는 순차 순서에 동기 된 클라이언트에 대해서 deleteItem 메소드를 송신합니다.
 void deleteItemWithId (String  destination, Map  identity)
          이 버젼의 deleteItem 메소드는, 삭제전에 아이템이 수정되면(자) 경합 검출을 실시하지 않습니다. 그 아이템은 삭제됩니다.
 Map getAttributeMap ()
          FDMS 트랜잭션(transaction)에 범위(scope) 된 값의 MAP입니다.
static DataServiceTransaction getCurrentDataServiceTransaction ()
          DataServiceTransaction 가 현재의 thread와 관련지을 수 있고 있는 경우는, 현재의 DataServiceTransaction 를 돌려줍니다.
static UserTransaction getCurrentUserTransaction ()
          현재의 DataServiceTransaction 가 JTA 모드로 개시되었을 경우는, DataServiceTransaction 로부터 UserTransaction 에 액세스 할 수 있습니다.
 boolean getSendMessagesToPeers ()
           
 UserTransaction getUserTransaction ()
          이 Data Service 트랜잭션(transaction)에 관련지을 수 있었던 유저트 런더 쿠션을 돌려줍니다.
 boolean isRefill ()
           
 void refreshFill (String  destination, List  fillParameters)
          자동적으로 동기 된 필의 일치 리스트로 fill 메소드를 재차 실행해, 돌려주어진 아이템의 ID 를, autoSyncEnabled=true 와 Configuration 해 전회 실행했을 때에 돌려주어진 아이템의 ID 와 비교합니다.
 void registerSynchronization (Synchronization  synchronization)
          동기 Listener를 이 트랜잭션(transaction)에 등록합니다.
 void rollback ()
          이 트랜잭션(transaction)를 롤백(rollback) 합니다.
 void setRollbackOnly ()
          완료시에 트랜잭션(transaction)를 위탁하는 것이 아니라, 롤백(rollback) 하도록(듯이), DataServiceTransaction 에 마크를 붙입니다.
 void setSendMessagesToPeers (boolean stp)
          updateItem, createItem, 및 deleteItem 메소드를 호출하면(자), 통상은 이러한 메세지는 클러스터내의 다른 피어에 송신되므로, 이러한 노드에 의해, 노드에 접속되고 있는 클라이언트에 전달됩니다.
 void updateItem (String  destination, Object  newVersion, Object  previousVersion, String [] changes)
          이 메세지에 예약(subscribe) 하고 있는 클라이언트에 갱신 이벤트를 송신합니다.
 
Class java.lang. Object 로부터 상속 받는 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

필드의 상세

USER_TX_JNDI_NAME

public static final String  USER_TX_JNDI_NAME
관련 항목 :
정수 필드치

LOG_CATEGORY

public static final String  LOG_CATEGORY
관련 항목 :
정수 필드의 값
메소드의 상세

getCurrentDataServiceTransaction

public static DataServiceTransaction  getCurrentDataServiceTransaction()
DataServiceTransaction 가 현재의 thread와 관련지을 수 있고 있는 경우는, 현재의 DataServiceTransaction 를 돌려줍니다. DataServiceTransaction 를 개시하면(자), thread와 자동적으로 관련지을 수 있습니다. 어댑터/어셈블러의 sync 메소드의 실행중으로 변경을 추가하는 경우는, 이 메소드를 사용해, 기존의 DataServiceTransaction 에의 참조를 취득할 수 있습니다. 이 경우는, updateItem, createItem, deleteItem 등을 호출할 수가 있습니다만, 위탁이나 롤백(rollback)는 수동으로 호출할 수 없습니다. 이것은, 이러한 메소드가, sync 메소드의 완료시에 Data Service 코드에 의해 실행되기 때문입니다.

반환값 :
현재의 DataServiceTransaction, 또는, 현시점에서 현재의 thread에 관련지을 수 있고 있는 트랜잭션(transaction)가 없는 경우는 null.

getCurrentUserTransaction

public static UserTransaction  getCurrentUserTransaction()
현재의 DataServiceTransaction 가 JTA 모드로 개시되었을 경우는, DataServiceTransaction 로부터 UserTransaction 에 액세스 할 수 있습니다.

반환값 :
현시점에서 현재의 DataServiceTransaction 에 관련지을 수 있고 있는 JTA UserTransaction 가 없는 경우나, 현재의 thread에 관련지을 수 있었던 DataServiceTransaction 가 없는 경우는 null.

begin

public static DataServiceTransaction  begin(String  serverId,
boolean useJTA)
클라이언트로 변경을 송신하기 위해서 사용할 수 있는 DataServiceTransaction 를 개시합니다. 이 메소드는, 어댑터/어셈블러의 메소드의 실행중이 아닌 경우에, 변경을 클라이언트에 푸쉬 하는 경우에 사용합니다. 어셈블러의 메소드의 문맥 내부로부터 불려 가고 있는 경우 (또는 불명한 경우)는, getCurrentDataServiceTransaction 메소드를 호출할 필요가 있습니다. null 가 돌려주어지는 경우는, 이 메소드를 사용해 개시할 수 있습니다. 이 메소드를 호출하는 경우는, 위탁 또는 롤백(rollback)을 호출해, 트랜잭션(transaction)를 완료할 필요가 있습니다. 이 위탁이나 롤백(rollback)가, 다른 상황 에 관계없이 실행되는 것을 확인해 주세요. 대부분의 경우는, 코드의 마지막 블록에 넣을 필요가 있습니다. 어셈블러 메소드의 실행중의 경우는, 트랜잭션(transaction)의 위탁이나 롤백(rollback)는, Data Service 코드의 종료시에 코드 중(안)에서 실행되므로, 실행하지 말아 주세요. 트랜잭션(transaction)를 롤백(rollback) 할 필요가 있는 경우는, 대신에 setRollbackOnly 을 호출합니다.

기존의 트랜잭션(transaction)의 실행중에 이 메소드를 호출하는 것은 부정합니다 (에러가 슬로우 됩니다).

파라미터 :
serverId - 이 파라미터는, 이 API 를 사용해 처리하는 Data Management Services 의 행선지를 작성한 MessageBroker 를 식별합니다. 통상은, Web 어플리케이션 마다 1 개의 MessageBroker 가 있어, 이 경우는 null 를 건네줄 수가 있습니다. Web 어플리케이션에 복수의 MessageBroker 가 있는 경우는, Web 어플리케이션의 "web.xml" 파일로 MessageBrokerServlet 의 Configuration 에 사용하는 messageBrokerId 의 값을, 이 파라미터의 serverId 로서 지정합니다.
useJTA - DataServiceTransaction 에 가세해 JTA UserTransaction 도 개시하는 경우는, 이 값을 true 와 지정합니다. 양쪽 모두가 차례차례 위탁/롤백(rollback) 됩니다.
반환값 :
DataServiceTransaction 가 개시됩니다.
Exception :
DataServiceException - serverId 가 무효인가, 현재의 thread에 액티브하게 관련지을 수 있었던 DataServiceTransaction 가 이미 있는 경우.

begin

public static DataServiceTransaction  begin(boolean useJTA)
이 버젼의 begin 메소드는 디폴트의 MessageBroker 를 사용합니다. Web 어플리케이션에 복수의 MessageBroker 인스턴스가 포함되는 것은 보기 드뭅니다만, 그러한 경우에는, serverId 를 사용해, 적절한 DataService 를 확실히 취득할 수가 있습니다.

관련 항목 :
DataServiceTransaction.begin(String, boolean)

getUserTransaction

public UserTransaction  getUserTransaction()
이 Data Service 트랜잭션(transaction)에 관련지을 수 있었던 유저트 런더 쿠션을 돌려줍니다. 이 DataServiceTransaction 가 JTA 를 유효하게 해 작성되어 있지 않은 경우는, null 를 돌려줍니다.

반환값 :
UserTransaction, 현재의 JTA UserTransaction (또는, 이 DataServiceTransaction 에 관련지을 수 있고 있는 것이 없는 경우는 null).

registerSynchronization

public void registerSynchronization(Synchronization  synchronization)
동기 Listener를 이 트랜잭션(transaction)에 등록합니다. 이 동기는, DataServiceTransaction 를 위탁 또는 롤백(rollback) 하면(자) 불려 갑니다.

파라미터 :
synchronization - javax.transaction.Synchronization Interface를 실장하는 인스턴스.

setRollbackOnly

public void setRollbackOnly()
완료시에 트랜잭션(transaction)를 위탁하는 것이 아니라, 롤백(rollback) 하도록(듯이), DataServiceTransaction 에 마크를 붙입니다. 이 DataServiceTransaction 가 JTA 를 트랜잭션(transaction)에 사용하고 있는 경우는, 이 메소드는 롤백(rollback)의 목적만으로 JTA 트랜잭션(transaction)에 마크를 붙입니다.


commit

public void commit()
클라이언트는, 이 메소드를 호출해 트랜잭션(transaction)를 위탁할 수 있습니다. 이 트랜잭션(transaction)가 JTA 를 사용해 개시되었을 경우는, UserTransaction 가 위탁됩니다. 이 메소드는, begin 메소드를 사용해 DataServiceTransaction 를 작성했을 경우에게만 사용해 주세요. 그 이외에 사용하면(자), Data Management Services 가 필요에 따라서 트랜잭션(transaction)를 위탁 또는 롤백(rollback) 합니다.


rollback

public void rollback()
이 트랜잭션(transaction)를 롤백(rollback) 합니다. useJTA 를 true 와 지정해 이 트랜잭션(transaction)를 작성하면(자), JTA 트랜잭션(transaction)는 롤백(rollback) 됩니다. 그 이외의 경우는, 이 트랜잭션(transaction)는 파기되어 적용된 모든 변경도 파기됩니다. 이 메소드는, DataServiceTransaction 를 begin 메소드를 사용해 작성했을 경우에게만 사용해 주세요.


updateItem

public void updateItem(String  destination,
Object  newVersion,
Object  previousVersion,
String [] changes)
이 메세지에 예약(subscribe) 하고 있는 클라이언트에 갱신 이벤트를 송신합니다. 이 메소드는 어댑터/어셈블러로 변경을 송신하지 않는 것에 주의해 주세요. 변경이 이미 적용되고 있는지, 또는 이 JTA 트랜잭션(transaction)으로 적용되고 있는 것이라고 보여집니다. 이 데이터의 신규 버젼만을 사용해 클라이언트를 갱신합니다.

행선지 파라미터와 신규 버젼의 오브젝트를 제공할 필요가 있습니다. null 이외의 이전의 버젼을 제공하면(자), 이 오브젝트는, 클라이언트의 데이터의 버젼이 이전의 버젼과 일치하지 않는 경우에 클라이언트의 경합을 검출하기 위해서 사용됩니다. 또, 경합과 갱신을 확인할 필요가 있는 프롭퍼티를 나타내기 위해서(때문에), 변경된 프롭퍼티명의 리스트를, 클라이언트에 대한 힌트로서 제공할 수도 있습니다. changes 에 null 를 지정하면(자), 클라이언트의 모든 프롭퍼티가 갱신됩니다. 이러한 프롭퍼티명에는, 프롭퍼티의 프롭퍼티가 변경된 것을 나타내는, 어떠한 닷 표기도 사용할 수 없습니다. 최상정도 레벨의 프롭퍼티명만을 사용할 수 있습니다.

파라미터 :
destination - 갱신하려고 하고 있는 아이템을 Management하고 있는 Data Management Services 의 행선지명입니다.
newVersion - 갱신하는 아이템의 신규 버젼입니다. 아이템의 ID 는, 갱신하는 아이템을 결정하는 경우에 사용됩니다.
previousVersion - null 가 아닌 경우는, 여기에는, 갱신하려고 하고 있는 아이템의 버젼이 포함됩니다. 버젼이 previousVersion 와 일치하고 있지 않는 경우는, 클라이언트는 경합을 검출할 수 있습니다. 이 값을 null 로서 지정하면(자), 갱신중의 아이템에 대해, 클라이언트에 보류중의 변경이 있는 경우에게만 경합이 검출됩니다.
changes - 갱신하는 프롭퍼티명의 배열입니다. null 치를 지정해, 모든 프롭퍼티치가 변경된 가능성이 있는 것을 나타낼 수가 있습니다.

createItem

public void createItem(String  destination,
Object  item)
이 메소드를 사용해, 새로운 아이템이 작성된 것을 Data Management Service 에 나타냅니다. Data Management Service 는, 클라이언트에 의해 현재 Management 떠날 수 있어 모든 순차 순서를 확인해, 이 아이템이 각 순차 순서에 소속해 있는지 어떤지를 판단합니다. 통상은, 각 fill 메소드를 재차 평가해 이 판단을 실시합니다 (다만, fill 메소드 마다 이 방법을 제어할 수 있습니다). 이 아이템이 포함되는 순차 순서를 검출하면(자), 이 아이템에 대한 create 메세지를, 그 순차 순서에 예약(subscribe) 한 각 클라이언트에 송신합니다.

이 메소드가, 이 아이템의 어댑터/어셈블러에 create 메세지를 송신하지 않는 것에 주의해 주세요. 여기에서는, 연구 최종 단계 데이타베이스가 데이터를 사용해 이미 갱신되고 있는지, 또는 이 트랜잭션(transaction)로 갱신중이다고 보여집니다. 이 트랜잭션(transaction)가 롤백(rollback) 되면(자), 변경은 적용되지 않습니다.

파라미터 :
destination - 새롭게 작성된 이 아이템을 Management하는 행선지의 이름입니다.
item - 작성하는 새로운 아이템입니다.

deleteItem

public void deleteItem(String  destination,
Object  item)
이 아이템이 포함되는 순차 순서에 동기 된 클라이언트에 대해서 deleteItem 메소드를 송신합니다. 어댑터/어셈블러에는 delete 메세지를 송신합니다만, 대신에, 이 아이템이 데이타베이스로부터 이미 삭제되었는지, 또는 이 트랜잭션(transaction)로 삭제중이다고 봅니다. 트랜잭션(transaction)를 롤백(rollback) 하면(자), 이 메세지도 롤백(rollback) 됩니다.

이 버젼의 delete 메소드를 사용하면(자), 지정된 아이템의 버젼에 일치하지 않는 버젼의 아이템이 있는 경우에, 클라이언트가 경합을 생성합니다. 원의 버젼이 없는 경우는, deleteItemWithId 메소드를 사용해, 클라이언트상의 아이템을 무조건 삭제할 수가 있습니다.

파라미터 :
destination - 삭제하는 아이템이 포함되는 행선지의 이름입니다.
the - 삭제하는 아이템의 버젼입니다. 이 버젼의 아이템이, 현재 Management하고 있는 버젼에 일치하지 않는 경우는, 클라이언트는 경합을 검출할 수 있습니다.

deleteItemWithId

public void deleteItemWithId(String  destination,
Map  identity)
이 버젼의 deleteItem 메소드는, 삭제전에 아이템이 수정되면(자) 경합 검출을 실시하지 않습니다. 그 아이템은 삭제됩니다.

파라미터 :
destination - 삭제하는 아이템이 포함되는 행선지의 이름입니다.
identity - 이 아이템의 각 ID 프롭퍼티의 엔Tree가 포함되는 java.util.Map 입니다 (키는 ID 프롭퍼티명, 값은 그 값).

refreshFill

public void refreshFill(String  destination,
List  fillParameters)
자동적으로 동기 된 필의 일치 리스트로 fill 메소드를 재차 실행해, 돌려주어진 아이템의 ID 를, autoSyncEnabled=true 와 Configuration 해 전회 실행했을 때에 돌려주어진 아이템의 ID 와 비교합니다. 변경된 모든 필의 갱신 콜렉션 이벤트를 구축합니다. 여기에는, 리스트에 추가된, 또는 리스트로부터 삭제된 아이템이 포함됩니다만, 이러한 아이템의 프롭퍼티에 대한 변경은 검색되지 않습니다. 이 update collection 메세지는, 다른 메세지와 함께, 위탁했을 때에 이 트랜잭션(transaction)로 송신됩니다. 트랜잭션(transaction)가 롤백(rollback) 되면(자), 필은 갱신되지 않습니다.

아이템의 프롭퍼티치를 갱신하는 경우는, 변경된 개개의 아이템으로 updateItem 를 사용할 필요가 있습니다.

fill 파라미터의 인수에 null 를 지정하면(자), 자동적으로 동기 되는 모든 필이 갱신됩니다. fill 파라미터의 리스트를 지정했을 경우는, fill 파라미터의 그 리스트를, 필을 실행했을 때에 클라이언트로부터 제공된 리스트와 비교합니다. fill 파라미터가 일치하는 경우는, 그 필은 갱신됩니다. 일치 알고리즘은 다음과 같이 기능합니다. 특정의 fill 파라미터에 값을 지정하면(자), 게다가로 equals 메소드가 사용되어, 필을 실행했을 때에 클라이언트가 사용한 fill 파라미터치라고 비교됩니다. 파라미터치로서 null 를 지정하면(자), 모든 필의 그 슬롯에 일치합니다. Class 를 지정하는 경우는, fill 파라미터의 값은 그 Class의 인스턴스가 아니면 안됩니다.

파라미터 :
destination - 목적의 필을 작성하는 대상입니다.
fillParameters - 갱신하는 필을 정의하는 fill 파라미터 패턴입니다 (상세한 것에 대하여는 전의 설명을 참조).

setSendMessagesToPeers

public void setSendMessagesToPeers(boolean stp)
updateItem, createItem, 및 deleteItem 메소드를 호출하면(자), 통상은 이러한 메세지는 클러스터내의 다른 피어에 송신되므로, 이러한 노드에 의해, 노드에 접속되고 있는 클라이언트에 전달됩니다. 코드가, 이러한 갱신을 클러스터의 각 인스턴스로부터 송신하도록(듯이) 조정되고 있는 경우는, updateItem, createItem 메소드등을 호출하기 전에 sendMessagesToPeers=false 와 Configuration 합니다.

파라미터 :
stp - 이러한 메세지를 피어 서버에 송신하는 경우는 true 입니다. 다음에 이러한 메세지는, 이러한 서버에 접속된 클라이언트에 송신됩니다.

getSendMessagesToPeers

public boolean getSendMessagesToPeers()

getAttributeMap

public Map  getAttributeMap()
FDMS 트랜잭션(transaction)에 범위(scope) 된 값의 MAP입니다. 트랜잭션(transaction)로 공유할 필요가 있는 일시적인 오브젝트를 포함할 수 있습니다. 이러한 값은, 이 DataServiceTransaction 의 사용중에 취득할 수 있습니다.


isRefill

public boolean isRefill()


Copyright © 2006 Adobe Systems Inc. All Rights Reserved.