Propiedades de sistema del contenedor de EJB
Además de los valores que son accesibles desde la consola de administración, puede establecer las propiedades del sistema EJB utilizando el script de línea de mandatos.
- 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
Esta propiedad es aplicable sólo a beans de persistencia gestionada por contenedor (CMP) 1.1. De forma predeterminada, el contenedor EJB crea la representación del bean de entidad en la base de datos sólo después de invocar al método, ejbPostCreate(...).

Algunas aplicaciones pueden confiar en el método, ejbCreate(...), para crear el bean de entidad en la base de datos. Para tal requisito, si se establece la propiedad de la JVM, com.ibm.websphere.ejbcontainer.allowEarlyInsert, en true se altera temporalmente el comportamiento predeterminado.
com.ibm.websphere.ejbcontainer.checkEJBApplicationConfiguration
Especifica un valor a nivel de todo el servidor que indica que el contenedor debe completar la validación de configuración de la aplicación adicional para asegurarse de que la aplicación sea coherente con la especificación Java™ EE (Java Platform, Enterprise Edition).

Esta propiedad está concebida para su uso durante el desarrollo de una aplicación para ayudar a identificar configuraciones incorrectas que puedan provocar un comportamiento inesperado. Por ejemplo, la aplicación de la anotación javax.ejb.Asynchronous a una interfaz no está soportada por la especificación y normalmente se ignora. Cuando esta propiedad está habilitada, se registra un error y se produce una excepción cuando el bean se procesa. Este error resulta útil durante el desarrollo para entender por qué los métodos no funcionan de forma asíncrona.
La validación de configuración adicional se completa y puede provocar que se registren varios avisos y errores de configuración cuando esta propiedad está habilitada. Normalmente, esta validación adicional sirve para los casos en los que se debe ejecutar una sobrecarga adicional, lo que resulta necesario para las aplicaciones estables en un servidor de producción. Para las desviaciones menores de la especificación, sólo se registran los avisos. Para los problemas más importantes, se registra un error y la aplicación no se puede ejecutar hasta que se corrija el error.


com.ibm.websphere.ejbcontainer.declaredUncheckedAreSystemExceptions
Esta propiedad le permite indicar si las excepciones que se declaran en la cláusula throws de un método EJB se deben tratan como excepciones de aplicación o como excepciones en tiempo de ejecución del sistema. Cuando esta propiedad se establece en true, estas excepciones se tratan como excepciones en tiempo de ejecución del sistema y causan la emisión de una EJBException en el lado del cliente.
Si no se especifica esta propiedad, o si esta propiedad se establece en false, las excepciones que se declaran en la cláusula throws de un método EJB se tratan como excepciones de la aplicación.
El valor predeterminado de esta propiedad es false.
com.ibm.websphere.ejbcontainer.defaultSessionAccessTimeout
Esta propiedad le permite especificar el valor predeterminado de tiempo de sesión de acceso de concurrencia de sesión para todos los beans de sesión en un servidor. El valor se especifica en milisegundos.
Especifique un valor de tipo de datos largo para inhabilitar o habilitar la simultaneidad de la sesión.
- Un valor de 0 inhabilita la simultaneidad de la sesión (sin espera).
- Un valor largo positivo (1, 2, 3, etc.) permite la simultaneidad de la sesión y define el valor de tiempo de espera en los milisegundos especificados.
Si esta propiedad está establecida, el tiempo de espera de acceso de simultaneidad del bean de sesión especificado se utiliza a nivel del servidor, en lugar del valor predeterminado de -1 (espera siempre). Esto se aplica a ambos beans de sesión, con estado y singleton. En el nivel de bean de sesión individual, el tiempo de espera se puede modificar utilizando la anotación @AccessTimeout en la clase de bean o el método o utilizando el elemento de descriptor de despliegue de tiempo de espera-acceso.
com.ibm.websphere.ejbcontainer.defaultStatefulSessionTimeout
Especifica un tiempo de espera a nivel de servidor para los beans de sesión con estado, que indica durante cuánto tiempo el servido conserva un bean de sesión con estado.

Ésta es una propiedad del sistema que puede agregar directamente al archivo server.xml o como un argumento de JVM genérico utilizando la consola administrativa.
La propiedad se especifica en minutos, la única unidad válida. El valor predeterminado es de 10 minutos. El valor cero especifica que el servidor utiliza el valor predeterminado de 10 minutos. Un valor negativo no es válido. Cualquier valor de cero o mayor es válido. Si se especifica un valor no válido, se emite un aviso para SystemOut y se utiliza el valor predeterminado.
La duración del tiempo de espera de los beans de sesión con estado se puede especificar por bean mediante anotaciones o xml. Si una duración de tiempo de espera se especifica explícitamente para un bean concreto, éste tiene prioridad sobre cualquier valor de tiempo de espera en todo el servidor.
Si no hay ninguna duración de tiempo de espera específica del bean para un bean concreto, el valor de tiempo de espera para todo el servidor se aplica a ese bean.
Si no hay ninguna duración de tiempo de espera específica para un bean concreto y no hay ningún valor de tiempo de espera en todo el servidor, se aplica a este bean el valor de tiempo de espera predeterminado.
com.ibm.websphere.ejbcontainer.EE5Compatibility
Especifica un valor a nivel de servidor que indica que el contenedor de EJBproporciona comportamientos predeterminados que son coherentes con la especificación Java EE (Java Enterprise Edition) 5.0.
Ésta es una propiedad del sistema que puede agregar directamente al archivo server.xml o como un argumento de JVM genérico utilizando la consola administrativa.
La especificación Java EE incluye mejoras en el modelo de programación EJB que tienen como resultado cambios de menor importancia en algunos comportamientos predeterminados. En general, estos cambios proporcionan un comportamiento más intuitivo o más fiable. No obstante, si una aplicación se ha escrito para que se base en uno o varios de los comportamientos Java EE 5.0, esta propiedad del sistema se puede establecer para que devuelva al contenedor de EJB sus comportamientos predeterminados Java EE 5.0.
Establecer la propiedad en true altera temporalmente los siguientes comportamientos:
- Las anotaciones @ApplicationException no se heredan. A partir de la especificación Java EE 6.0, se ha cambiado el comportamiento predeterminado de la anotación @ApplicationException, que indica que las clases de excepción de subclase heredan la anotación. Si se especifica esta propiedad del sistema, las clases de excepción de subclase no heredan la anotación @ApplicationException. De forma alternativa, puede cambiar la declaración @ApplicationException para especificar 'inherited=false'.
- El acceso simultáneo a los beans de sesión con estado está prohibido y se produce la excepción javax.ejb.ConcurrentAccessException. A partir de la especificación Java EE 6.0, se ha cambiado el comportamiento predeterminado para la simultaneidad de sesiones con estado, para permitir el acceso simultáneo, aunque el contenedor serializa cada solicitud simultánea, bloqueando el acceso a la instancia de bean de forma indefinida, hasta que pueda obtenerse el bloqueo de la instancia. Si se especifica esta propiedad del sistema, todos los beans de sesión con estado para los que no se haya especificado un valor de tiempo de espera de acceso explícito, supondrán que el valor de tiempo de espera de acceso predeterminado es 0 (el valor predeterminado de Java EE 5.0). Como alternativa, puede modificar el bean de sesión con estado para definir un valor de tiempo de espera de acceso de 0.
- El tipo Java, Class y cualquier subclase de Enum se tratan como referencias de entorno de recursos en lugar de entradas de entorno simple. A partir de la especificación Java EE 6.0, el tipo Java, Class y cualquier subclase de Enum se han añadido al conjunto de tipos de entrada de entorno simple soportados. En versiones anteriores de Java EE, estos tipos se habrían tratado como referencias de entorno de recursos y se habría necesitado un enlace en el archivo ibm-ejb-jar-bnd.xml o el archivo ibm-web-bnd.xml. Ahora que ya se da soporte a dichos tipos de datos, como entradas de entorno sencillo, ya no se necesita ningún enlace específico de la plataforma. En su lugar, puede especificar el valor directamente en el descriptor de despliegue. Si se especifica esta propiedad del sistema, las aplicaciones que utilizan la anotación javax.annotation.Resource para el tipo Java, Class o cualquier subclase de Enum se tratan como referencias de entorno de recursos y el valor al que se hace referencia se obtendrá utilizando la información del archivo de enlace. Esta propiedad no afecta a la instalación de la aplicación y, por tanto, la información de enlace no se especifica durante la instalación. En su lugar, debe especificar la información de enlace en el archivo de enlaces, manualmente.
com.ibm.websphere.ejbcontainer.EE6Compatibility
Especifica un valor en todo el servidor que indica que el contenedor EJB proporciona comportamientos predeterminados que son coherentes con la especificación Java Enterprise Edition (Java EE) 6.0.
Ésta es una propiedad del sistema que puede agregar directamente al archivo server.xml o como un argumento de JVM genérico utilizando la consola administrativa.
La especificación Java EE incluye mejoras en el modelo de programación EJB que tienen como resultado cambios de menor importancia en algunos comportamientos predeterminados. En general, estos cambios proporcionan un comportamiento más intuitivo o más fiable. Sin embargo, si una aplicación se ha escrito basada en uno o varios de los comportamientos de Java EE 6.0, esta propiedad del sistema se puede establecer para revertir el contenedor EJB a los comportamientos predeterminados de Java EE 6.0.
Si se establece la propiedad en true se impide que las anotaciones @Local y @Remote se ignoren incluso si se especifican con un valor vacío en la clase de bean y se especifican otras interfaces de empresa. Cuando no se especifica la propiedad y se especifican estas anotaciones en la clase de bean, las anotaciones hacen que las interfaces en la cláusula de implementaciones se consideren como interfaces de empresa locales o remotas, a menos que:
- Las interfaces <business-local>, <business-remote>, o <local-bean> se especifican en el archivo ejb-jar.xml.
- La anotación @LocalBean se especifica en la clase de bean.
- Las anotaciones @Local o @Remote con un valor vacío se especifican en las clases de interfaz en la cláusula implements.
Cuando se especifica la propiedad, una interfaz única en la cláusula de implementaciones se seguirá considerando como una interfaz de empresa local o remota incluso si se ha utilizado una de estas designaciones. En lugar de establecer la propiedad, puede eliminar la anotación @Local o @Remote con un valor vacío y, en su lugar, utilizar una de las demás opciones.
com.ibm.websphere.ejbcontainer.excludeRootExceptionOnRollback
De forma predeterminada, el contenedor EJB establecerá la causa raíz de la excepción que se produce cuando se restituye la transacción. Si esta propiedad se establece en true, el contenedor EJB no establecerá la causa raíz. Esto resulta útil si la aplicación no espera encontrar una causa o si la aplicación registra excepciones y ahora está registrando una cantidad mucho mayor de datos.
com.ibm.websphere.ejbcontainer.extendSetRollbackOnlyBehaviorToInstanceFor
Esta propiedad permite al usuario especificar los nombres de las aplicaciones en las que desee que los EJB de sus módulos EJB 3.x tengan el comportamiento del valor setRollbackOnly anterior a EJB 3.0.
El comportamiento del valor setRollbackOnly anterior a EJB 3.0 se describe en Cambio de las aplicaciones al comportamiento setRollbackOnly "específico de la versión" de WebSphere.
com.ibm.websphere.ejbcontainer.limitSetRollbackOnlyBehaviorToInstanceFor
Esta propiedad permite al usuario especificar los nombres de las aplicaciones en las que desee que los EJB de sus módulos EJB 3.x tengan el comportamiento del valor setRollbackOnly EJB 3.x.
El comportamiento del valor setRollbackOnly EJB 3.x se describe en Cambio de las aplicaciones al comportamiento setRollbackOnly "específico de la versión" de WebSphere.
com.ibm.websphere.ejbcontainer.poolSize
Especifica el tamaño de la agrupación para el tipo de bean especificado. Esta propiedad se aplica a beans controlados por mensajes, beans de entidad y sin estado. Si no especifica un valor predeterminado, se utilizan los valores predeterminados del contenedor, 50 y 500.
beantype=[H]min,[H]max [:beantype=[H]min,[H]max...]
El elemento beantype es el nombre Java EE del bean, formado por la concatenación del nombre de aplicación, el carácter #, el nombre de módulo, el carácter # y el nombre del bean, es decir, la serie asignada al campo <ejb-name> en el descriptor de despliegue del bean. Los elementos min y max son los tamaños de agrupación mínimo y máximo para ese tipo de bean. No especifique los corchetes que se muestran en el prototipo anterior; indican unos tipos de bean adicionales opcionales que puede especificar después del primer tipo de bean. Cada especificación de tipo de bean está delimitada por un signo de dos puntos (:).
*=30,100
SMApp#PerfModule#TunerBean=54, :SMApp#SMModule#TypeBean=100,200
Puede especificar los tipos tipos de beans en cualquier orden dentro de la serie.
Puede designar el tamaño máximo de la agrupación EJB configurada como un límite estricto insertando el carácter H, justo delante del valor max. Sin el carácter H, el valor máximo indica el número de instancias de EJB que se pueden agrupar y no limita el número de instancias de EJB que se pueden crear o que se están utilizando. Al insertar el carácter H antes del valor máximo se indica un límite estricto y el contenedor EJB bloquea la creación de más instancias cuando se alcanza este límite. Las hebras adicionales deben esperar a que quede disponible una instancia o a que transcurra un tiempo de espera de transacción.
Puede designar el tamaño mínimo de la agrupación EJB configurada como un límite estricto insertando el carácter H, justo delante del valor min. Sin el carácter H , el valor mínimo indica cuántas instancias de EJB se mantienen en la agrupación cuando el tipo de EJB no se utiliza activamente pero no carga previamente la agrupación cuando se inicia la aplicación. Normalmente, el tamaño mínimo de la agrupación no se alcanza hasta que la aplicación accede simultáneamente al número de mínimo de instancias de EJB. Al insertar el carácter H antes del valor mínimo se indica un límite estricto y el contenedor EJB precarga la agrupación con el número mínimo de instancias de EJB cuando se inicia la aplicación.
SMApp#SMModule#TypeBean=100,H200Si desea indicar que el contenedor EJB precarga la agrupación con un número mínimo de 100 instancias de EJB cuando se inicia la aplicación, especifique:
SMApp#SMModule#TypeBean=H100,200
