Especificando TaskName em uma Unidade de Persistência JPA

Especificando um TaskName na unidade de persistência Java™ Persistence API (JPA)

Sobre Esta Tarefa

Um TaskName é definido no arquivo persistence.xml usando o nome de propriedade wsjpa.AccessIntent em uma unidade de persistência. O valor da propriedade é uma lista de TaskNames, tipos de entidades e definições de intenção de acesso. O seguinte exemplo mostra o conteúdo do nome de propriedade wsjpa.AccessIntent em uma unidade de persistência.
<nome da propriedade  = "wsjpa.AccessIntent"
         value = "Tasks=' <taskName> { <entityName> ( <isolationLockValue> ) } ' "/>
                         A            A              A                    | | |
                         |            |              +--------- , --------+ | |
                         |            +----------------- , -----------------+ |
                         +----------------------- , --------------------------+
  Tasks                        ::= <task> [ ',' <task> ]*
     
  <task>                       ::= <taskName> '{' <entity> [ ',' <entity> ]* '}'
     
  <entity>                     ::= <entityName> '(' <isolationLockValues> ')'
     
  <taskName>                   ::= <fully_qualified_identifier>
     
  <entityName>                 ::= <fully_qualified_identifier>
     
  <fully_qualified_identifier> ::= <identifier> [ '.' <identifier> ]*
     
  <identifier>                 ::= <idStartCharacter> [ <idCharacter> ]*
     
  <idStartCharacter>           ::= Character.isJavaIdentifierStart | '?' | '*'
     
  <idStartCharacter>           ::= Character.isJavaIdentifierPart  | '?' | '*'
     
  <isolationLockValues>        ::= <isolationLockValue> [ ',' <isolationLockValue> ]
    
  <isolationLockValue>         ::= <isolation> | <readLock>
     
  <isolation>                  ::= "isolation" '=' <isolationValue>
     
  <readLock>                   ::= "readlock" '=' <readlockValue>
 
  <isolationValue>             ::= "read-uncommitted"|"read-committed"|"repeatable-read"|"serializable"
     
  <readlockValue>              ::= "read" | "write"
Antes de configurar o TaskName em uma unidade de persistência, mantenha em mente:
  • Espaços em branco que são ignorados entre tokens.
  • Apenas os conteúdos <isolation> e <readLock> não fazem distinção entre maiúsculas e minúsculas.
  • <TaskName> está no formato de um nome de método de pacote completo, como com.acme.bean.MyBean.increment, ou um nome da tarefa arbitrário definido pelo usuário, como MyProfile.
  • <entityName> está no formato de um nome de classe de pacote completo, como com.acme.bean.Entity1.
  • Os caracteres curingas '?' ou '*' podem ser usados em <TaskName> e <entityName>. "?" corresponde a qualquer caractere exclusivo e "*" corresponde a zero ou mais caracteres de sequência.
  • Somente isolamento de hintNames e readLock são permitidos em uma definição de tarefa e a ordem não é significante
  • Se readLock tiver o valor write, isolation deverá ser repeatable-read ou serializable
  • Se readLock tiver o valor read, não terá efeito se isolation for read-uncommitted.
O seguinte exemplo de código mostra como especificar um TaskName na unidade de persistência JPA.
package my.company;

@Remote
class Ejb1 {
    // nenhum tx do responsável pela chamada
    @TransactionAttribute(Requires)
    public void caller_Method1() {

        // uma nova transação implícita inicia
        // TaskName "my.company.Ejb1.caller_Method1" configurado em TSR

        ejb1.callee_Method?();
    }

    @TransactionAttribute(RequiredNew)
    public void callee_Method2() {

        // uma nova transação implícita inicia, por exemplo, TxRequiredNew.
        // TaskName "my.company.Ejb1.callee_Method2" configurado em TSR
    }

    @TransactionAttribute(Requires)
    public void callee_Method3() {

        // Na transação do responsável pela chamada, portanto, TaskName permanece 
        //     "my.company.Ejb1.caller_Method1"
    }

    @TransactionAttribute(NotSupported)
    public void callee_LocalTx () {

        // Transação não especificada, uma nova transação local implicitamente iniciada.
        // TaskName "my.company.Ejb1.callee_LocalTx" configurado em TSR
    }

}
Como um curinga pode ser usado para especificar TaskName e o tipo de entidade, várias correspondências de especificações podem ocorrer no tempo de execução. A ordem definida na propriedade wsjpa.AccessIntent será usada para procurar por nomes de tarefas e tipos de entidades.
<properties>
  <property name="wsjpa.AccessIntent" value="Tasks="
        *.Task1 { *.Employee1 ( isolation=read-uncommitted                 ),
                  *.Employee? ( isolation=repeatable-read,  readlock=write ),
                },
        *       { *.Employee3 ( isolation=serializable,     readlock=write ) },
      '" />
</properties>

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_specTaskNamepu
Nome do arquivo: tejb_specTaskNamepu.html