Propriedades do sistema de contêiner de EJB
Além das configurações que estão acessíveis a partir do console administrativo, poderá configurar as propriedades do sistema EJB usando a geração de script da linha de comandos.
- com.ibm.websphere.ejbcontainer.allowEarlyInsert
- com.ibm.websphere.ejbcontainer.checkEJBApplicationConfiguration
- com.ibm.websphere.ejbcontainer.declaredUncheckedAreSystemExceptions
- com.ibm.websphere.ejbcontainer.defaultSessionAccessTimeout
- com.ibm.websphere.ejbcontainer.defaultStatefulSessionTimeout
- com.ibm.websphere.ejbcontainer.EE5Compatibility
- com.ibm.websphere.ejbcontainer.EE6Compatibility
- com.ibm.websphere.ejbcontainer.excludeRootExceptionOnRollback
- com.ibm.websphere.ejbcontainer.limitSetRollbackOnlyBehaviorToInstanceFor
- com.ibm.websphere.ejbcontainer.poolSize
com.ibm.websphere.ejbcontainer.allowEarlyInsert
Essa propriedade é aplicável somente a beans container managed persistence (CMP) 1.1. Por padrão, o contêiner EJB cria a representação do bean de entidade no banco de dados apenas após o método ejbPostCreate(...), ser chamado.

Alguns aplicativos podem depender do método, ejbCreate(...), para que seja criado o bean de entidade no banco de dados. Para esse requisito, configurar a propriedade JVM, com.ibm.websphere.ejbcontainer.allowEarlyInsert, como true substitui o comportamento padrão.
com.ibm.websphere.ejbcontainer.checkEJBApplicationConfiguration
Especifica a configuração de todo servidor que indica que o contêiner deve concluir a validação da configuração adicional do aplicativo para assegurar que o aplicativo esteja consistente com a especificação Java™ Platform, Enterprise Edition (Java EE).

Essa propriedade é destinada a uso durante o desenvolvimento de um aplicativo para ajudar na identificação de configurações impróprias, que podem resultar em comportamento inesperado. Por exemplo, a aplicação da anotação javax.ejb.Asynchronous para uma interface não é suportada pela especificação e normalmente é ignorada. Quando essa propriedade é ativada, um erro é registrado e uma exceção ocorre quando o bean é processado. Essa falha é útil durante o desenvolvimento para compreender porque os métodos não estão funcionando de maneira assíncrona.
A validação da configuração adicional é concluída e pode resultar em vários avisos de configuração e erros registrados quando esta propriedade está ativada. Normalmente essa validação adicional é para cenários que incorrem sobrecarga extra de execução, que é necessário para aplicativos estáveis em um servidor de produção. Para pequenos desvios, da especificação, apenas avisos são registrados. Para problemas mais significativos, um erro é registrado e o aplicativo não pode executar até que o erro seja corrigido.


com.ibm.websphere.ejbcontainer.declaredUncheckedAreSystemExceptions
Essa propriedade ativa você a indicar se as exceções que estão declaradas na cláusula de lançamento de um método EJB devem ser tratadas como exceções de aplicativo ou como exceções de tempo de execução do sistema. Quando essa propriedade é definida para verdade, essas exceções são tratados como exceções de tempo de execução do sistema, e isso causa um EJBException emitido no lado do cliente.
Se essa propriedade não for especificada, ou se essa propriedade estiver definida para falso, exceções que estão declaradas na cláusula de lançamento de um método EJB são tratadas como exceções de aplicativo.
O valor-padrão para esta propriedade é false.
com.ibm.websphere.ejbcontainer.defaultSessionAccessTimeout
Essa propriedade permite especificar o valor de tempo limite do acesso de simultaneidade de sessão padrão para todos os beans de sessão em um servidor. O valor é especificado em milissegundos.
Especifique um valor de tipo de dados Longos para desativar ou ativar a simultaneidade de sessão:
- Um valor 0 desativa a simultaneidade de sessão (sem espera).
- Um valor longo positivo (1, 2, 3 e assim por diante) permite a simultaneidade de sessão e configura o valor de tempo limite para os milissegundos especificados.
Se essa propriedade for configurada, o tempo limite de acesso de simultaneidade do bean de sessão especificado será usado no servidor inteiro em vez do valor padrão de -1 (aguardar para sempre). Isso se aplica a beans de sessão stateful e singleton. No nível de bean de sessão individual, o tempo limite pode ser substituído usando a anotação @AccessTimeout no método ou classe de bean ou usando o elemento de descritor de implementação de tempo limite de acesso.
com.ibm.websphere.ejbcontainer.defaultStatefulSessionTimeout
Especifica um tempo limite em todo o servidor para beans de sessão stateful, que indica por quanto tempo um bean de sessão stateful é mantido pelo servidor.

Essa é uma propriedade de sistema que é possível incluir diretamente no arquivo server.xml ou como um argumento de JVM genérico usando o console administrativo.
A propriedade é especificada em minutos, a única unidade válida. O valor padrão é 10 minutos. Um valor zero especifica que o servidor usa o valor-padrão de 10 minutos. Um valor negativo não é válido. Qualquer valor zero ou superior é válido. Se um valor não válido for especificado, um aviso é emitido para SystemOut e o valor-padrão é usado.
A duração de tempo limite do bean de sessão stateful pode ser especificada em uma base por bean usando anotações ou xml. Se uma duração de tempo limite for especificada explicitamente para um determinado bean, isso terá prioridade sobre qualquer configuração de tempo limite de todo o servidor.
Se nenhuma duração de tempo limite específico do bean existir para um determinado bean, a configuração do tempo limite de todo o servidor será aplicada a esse bean.
Se nenhuma duração de tempo limite específico do bean existir para um determinado bean, e nenhuma configuração do tempo limite de todo o servidor existir, a configuração do tempo limite padrão será aplicada a esse bean.
com.ibm.websphere.ejbcontainer.EE5Compatibility
Especifica uma configuração de todo servidor que indica que o contêiner EJB fornece comportamentos padrões que são consistentes com a especificação do Java Enterprise Edition (Java EE) 5.0.
Essa é uma propriedade do sistema que pode ser incluída diretamente ao arquivo server.xml ou como um argumento JVM genérico usando o console administrativo.
A especificação EE Java inclui melhorias no modelo de programação EJB que apresentam resultados de pequenas mudanças em alguns comportamentos padrões. Em geral, essas alterações fornecem comportamento mais intuitivo ou mais confiável. Entretanto, se um aplicativo tiver sido gravado para confiar em um ou mais dos comportamentos do Java EE 5.0, essa propriedade de sistema pode ser definida para reverter o contêiner EJB de volta aos comportamentos Java EE 5.0 padrões.
Configurar a propriedade para verdade substitui os seguintes comportamentos:
- As anotações @ApplicationException não são herdadas. Começando com a especificação Java EE 6.0, o comportamento padrão para a anotação @ApplicationException foi alterado, indicando que a anotação é herdada pelas classes de exceção de subclasse. Quando essa propriedade de sistema é especificada, a anotação @ApplicationException não é herdada pelas classes de exceção de subclasse. Alternativamente, é possível alterar a declaração @ApplicationException para especificar 'inherited=false'.
- O acesso simultâneo a beans de sessão stateful é proibido e resulta na exceção, javax.ejb.ConcurrentAccessException. Começando com a especificação Java EE 6.0, o comportamento padrão para simultaneidade da sessão stateful foi alterado para permitir acesso simultâneo, embora cada solicitação simultânea seja serializada pelo contêiner, bloqueando o acesso à instância de bean indefinidamente, até que a trava da instância possa ser obtida. Quando essa propriedade de sistema é especificada, todo bean de sessão stateful que não tenha um valor de tempo limite de acesso explícito especificado presume o valor padrão de tempo limite de acesso de 0 (o padrão Java EE 5.0). Alternativamente, é possível modificar o bean de sessão stateful para definir um valor de tempo limite de acesso 0.
- O tipo Java, Classe, e qualquer subclasse de Enum são tratados como referências de ambiente de recursos em vez de simples entradas de ambiente. Começando com a especificação Java EE 6.0, o tipo Java, Classe, e qualquer subclasse de Enum foram incluídos ao conjunto de tipos de entrada de ambiente simples suportados. Em versões anteriores do Java EE, esses tipo deveriam ser tratados como referências de ambiente de recursos e uma ligação deveria ter sido requerida no arquivo ibm-ejb-jar-bnd.xml ou no arquivo ibm-web-bnd.xml. Agora que esses tipos de dados são suportados como simples entradas de ambiente, uma ligação específica de plataforma não é mais necessária. Em vez disso, é possível especificar o valor diretamente no descritor de implementação. Quando essa propriedade de sistema está especificada, aplicativos que utilizam a anotação javax.annotation.Resource para o tipo Java, Classe, ou qualquer subclasse de Enum são tratados como referências de ambiente de recursos e o valor referido será obtido utilizando as informações do arquivo de ligação. A instalação do aplicativo não é afetada por essa propriedade, e portanto, as informações de ligação não são inseridas durante a instalação. Em vez disso, você deve inserir manualmente as informações sobre ligação no arquivo de ligação.
com.ibm.websphere.ejbcontainer.EE6Compatibility
Especifica uma configuração ampla do servidor que indica que o contêiner EJB fornece comportamentos padrão que são consistentes com a especificação do Java Enterprise Edition (Java EE) 6.0.
Essa é uma propriedade do sistema que pode ser incluída diretamente ao arquivo server.xml ou como um argumento JVM genérico usando o console administrativo.
A especificação EE Java inclui melhorias no modelo de programação EJB que apresentam resultados de pequenas mudanças em alguns comportamentos padrões. Em geral, essas alterações fornecem comportamento mais intuitivo ou mais confiável. Entretanto, se um aplicativo tiver sido gravado para confiar em um ou mais dos comportamentos do Java EE 6.0, essa propriedade de sistema poderá ser definida para reverter o contêiner EJB de volta aos comportamentos Java EE 6.0 padrão.
Configurar a propriedade para true evita que as anotações @Local e @Remote sejam ignoradas, mesmo que elas forem especificadas com um valor vazio na classe de bean e outras interfaces de negócios forem especificados. Quando a propriedade não for especificada e essas anotações forem especificadas na classe de bean, as anotações farão com que as interfaces na cláusula de implementações sejam consideradas como interfaces de negócios locais ou remotas, a menos que:
- As interfaces <business-local>, <business-remote> ou <local-bean> são especificadas no arquivo ejb-jar.xml.
- A anotação @LocalBean é especificado na classe de bean.
- As anotações @Local ou @Remote com um valor vazio são especificadas nas classes de interface na cláusula de implementações.
Quando a propriedade é especificada, uma única interface na cláusula de implementações ainda será considerada como uma interface de negócios local ou remoto mesmo que uma dessas denominações tenha sido utilizada. Em vez de configurar a propriedade, é possível remover a anotação @Remote ou @Local com um valor vazio e usar uma das outras opções.
com.ibm.websphere.ejbcontainer.excludeRootExceptionOnRollback
Por padrão, o contêiner EJB configurará a causa raiz da exceção que ocorre durante a recuperação da transação. Se essa propriedade for configurada como true, o contêiner EJB não configurará a causa raiz. Isso é útil se o aplicativo não espera encontrar uma causa ou se o aplicativo registra as exceções e agora está gravando uma quantidade significativamente maior de dados.
com.ibm.websphere.ejbcontainer.extendSetRollbackOnlyBehaviorToInstanceFor
Essa propriedade permite ao usuário especificar nomes de aplicativos nos quais desejam ter EJBs em seus módulos EJB 3.x demonstrando o comportamento de EJB 3.0 setRollbackOnly.
O comportamento setRollbackOnly pré-EJB 3.0 é descrito em Alterando Aplicativos para o Comportamento setRollbackOnly da "Versão Específica" do WebSphere.
com.ibm.websphere.ejbcontainer.limitSetRollbackOnlyBehaviorToInstanceFor
Essa propriedade permite ao usuário especificar nomes de aplicativos nos quais desejam ter os EJBs em seus módulos EJB 3.x demonstrando o comportamento EJB 3.x setRollbackOnly.
O comportamento setRollbackOnly pré-EJB 3.x é descrito em Alterando Aplicativos para o Comportamento setRollbackOnly da "Versão Específica" do WebSphere.
com.ibm.websphere.ejbcontainer.poolSize
Especifica o tamanho do conjunto para o tipo de bean especificado. Esta propriedade se aplica a beans sem preservação de estado, acionados por mensagem e de entidade. Se você não especificar um valor-padrão, os valores-padrão do contêiner, 50 e 500, são usados.
beantype=[H]min,[H]max [:beantype=[H]min,[H]max...]
O elemento beantype é o nome do Java EE do bean, formado concatenando o nome do aplicativo, o caractere #, no nome do módulo, o caractere # e o nome do bean, ou seja, a sequência designada ao campo <ejb-name> no descritor de implementação do bean. Os elementos min e max são tamanhos de conjunto mínimo e máximo para esse tipo de bean. Não especifique o colchete reto mostrado no protótipo anterior; eles indicam tipos de bean adicionais opcionais que é possível especificar depois do primeiro tipo de bean. Cada especificação de tipo de bean é delimitada por dois pontos (:).
*=30,100
SMApp#PerfModule#TunerBean=54, :SMApp#SMModule#TypeBean=100,200
Os tipos de beans podem ser especificados em qualquer ordem na cadeia.
É possível designar o tamanho máximo do conjunto EJB configurado como um limite rigoroso, inserindo o caractere, H, diretamente na frente do valor max. Sem o caractere H, o valor máximo indica quantas instâncias EJB podem ser colocadas em pool e não limita o número de instâncias EJB que podem ser criadas ou estar em uso. Inserindo o caractere H antes do valor máx. indica um limite rigoroso, e o contêiner EJB bloqueia a criação de mais instâncias quando esse limite é atingido. Além disso, os encadeamentos devem aguardar até que uma instância torne-se disponível ou até que a transação seja interrompida.
É possível designar o tamanho mínimo do conjunto EJB configurado como um limite rigoroso, inserindo o caractere, H, diretamente na frente do valor min. Sem o caractere H, o valor mínimo indica quantas instâncias EJB são mantidas no conjunto quando o tipo EJB não está ativamente em uso, mas não pré-carrega o conjunto quando o aplicativo é iniciado. Normalmente, o conjunto de tamanho mínimo não é atingido até que o número mínimo de instâncias EJB tenha sido acessado simultaneamente pelo aplicativo. Inserir o caractere H antes do valor mínimo indica que ele é um limite máximo e o contêiner EJB pré-carrega o conjunto com o número mínimo de instâncias EJB quando o aplicativo é iniciado.
SMApp#SMModule#TypeBean=100,H200Se deseja indicar que o contêiner EJB pré-carrega o conjunto com um mínimo de 100 instâncias EJB quando o aplicativo for iniciado, então digite:
SMApp#SMModule#TypeBean=H100,200
