Fehlerbehebung für die Bean Validation in RAR-Modulen beheben

RAR-Beans, deren Validierung fehlschlägt, werden nicht in Betrieb genommen. Wenn ungültige Integritätsbedingungen gefunden werden, treten in Anwendungen Ressourcenkonnektivitätsprobleme auf, die je nach Beantyp und Implementierung der RAR-Datei variieren. In diesem Artikel wird erläutert, wie diese Probleme zu interpretieren, zu behandeln und zu verhindern sind.

Ungültige Integritätsbedingungen in RAR-Beans

WebSphere Application Server zeigt eine Ausnahme wegen ungültiger Integritätsbedingungen an und zeichnet alle ungültigen Integritätsbedingungen im Systemprotokoll auf, wenn die RAR-Beaninstanzen validiert werden, die gegen eine oder mehrere Vorgaben verstoßen. Die Ursachen aller ungültigen Integritätsbedingungen müssen bestimmt und behoben werden, um die vollständige Konnektivität zur betroffenen Ressource wiederherzustellen.

Die Problembestimmung beginnt damit, in der Dokumentation des RAR-Providers die gültigen Werte für die Konfigurationseigenschaften nachzulegen, die in den Verstößen angegeben sind. Wenn die Eigenschaftswerte ungültig sind, müssen Sie sie entsprechend der Dokumentation rekonfigurieren und den Ressourcenadapter erneut starten. ö Ist der Adapter in eine Anwendung integriert, starten Sie die Anwendung erneut, um den Adapter erneut zu starten. Handelt es sich um einen eigenständigen Adapter, starten Sie den Anwendungsserver erneut.

Wenn in dem Verstoß ein gültiger Konfigurationswert angegeben ist, wurde die Integritätsbedingung für die Bean möglicherweise nicht ordnungsgemäß angegeben, oder die Bean berechnet den Eigenschaftswert nicht ordnungsgemäß. In diesen Fällen muss der RAR-Anbieter das Problem beheben.

Wenn das Problem durch eine fehlerhafte Integritätsbedingungsdefinition (Implementierung) verursacht wird, muss der Bean-Validation-Provider das Problem beheben. Wird die RAR-Datei von IBM® bereitgestellt oder verwendet die RAR-Datei die vom Anwendungsserver bereitgestellte Bean-Validation-Implementierung, wenden Sie sich an den IBM Support, um mit der Problembestimmung fortzufahren.

ResourceAdapter-Beans

ResourceAdapter-Beans werden validiert, wenn der Server einen J2C-Ressourcenadapter (Java™ 2 Connector) startet. Schlägt die Validierung fehl, weist der Server die ResourceAdapter-Instanz zurück, und die daraufhin ausgegebene Ausnahme zur ungültigen Integritätsbedingung bewirkt, dass der J2C-Ressourcenadapter ausfällt. Anwendungen können keine abgehenden Verbindungen zur Ressource herstellen, und die Ressource kann Anwendungen keine Nachrichten zustellen. Bei einem integrierten Adapter wird die Anwendung, in die der Adapter integriert ist, nicht gestartet. Transaktionen mit unbestätigtem Status, an denen die Ressource beteiligt ist, können nicht wiederhergestellt werden.

Im folgenden Beispiel sehen Sie eine Bean ResourceAdapter-Bean "MyConnector" an der Heapspeicheradresse "7efa7efa". Zwei Integritätsbedingungen für die Validierung werden nicht eingehalten. Die Ausnahme aufgrund der ungültigen Integritätsbedingungen bewirkt, dass J2CResourceAdapter_1285109360562 ausfällt:
[9/29/10 10:51:24:125 CDT] 00000000 BeanValidatio E   
 J2CA0238E: Bean Validation für JavaBean com.my.company.adapter.MyConnector@7efa7efa aufgrund einer oder mehrerer ungültiger Konfigurationseinstellungen,
die in der folgenden Liste ungültiger Integritätsbedingungen angegeben sind, fehlgeschlagen:

		ConstraintViolationImpl{interpolatedMessage='The minimum size is 2', propertyPath=dataBaseName, rootBeanClass=class com.my.company.adapter.MyConnector, messageTemplate='The minimum size is 2'}
		ConstraintViolationImpl{interpolatedMessage='must be greater than or equal to 10', propertyPath=idleTimeout, rootBeanClass=class com.my.company.adapter.MyConnector, messageTemplate='{javax.validation.constraints.Min.message}'}
…
[9/29/10 10:51:24:468 CDT] 00000000 RALifeCycleMa E   J2CA0128E: Beim Starten von ResourceAdapter cells/IBM-46DF84D297BNode01Cell/nodes/IBM-46DF84D297BNode01/resources.xml#J2CResourceAdapter_1285109360562 ist eine Ausnahme eingetreten. Ausnahme:
com.ibm.ejs.j2c.metadata.ConstraintViolationException
		at com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
		at com.ibm.ejs.j2c.RAWrapperImpl.createAndConfigureRA(
		at com.ibm.ejs.j2c.RAWrapperImpl.startRA(
		at com.ibm.ejs.j2c.RALifeCycleManagerImpl.startRA(
		at com.ibm.ejs.j2c.RALifeCycleManagerImpl.resourceProviderEvent(
. . .

ManagedConnectionFactory-Beans

ManagedConnectionFactory-JavaBeans werden während der ersten JNDI-Lookup-Operation (Java Naming and Directory Interface) einer J2C-Verbindungsfactory validiert.

Wenn die Validierung scheitert, weist der Anwendungsserver die ManagedConnectionFactory-Instanz zurück und zeigt eine Benennungsausnahme in der Anwendung an, die die Lookup-Operation durchführt. Diese Ausnahme zeigt die kausale Ausnahme zur ungültigen Integritätsbedingung (javax.validation.ConstraintValidationException) an.

Anwendungen können keine abgehenden Verbindungen zur Ressource herstellen. Transaktionen mit unbestätigtem Status, die über Ressourcenverbindungen gestartet werden, die von der Verbindungsfactory erstellt wurden, können nicht wiederhergestellt werden.

Im folgenden Beispiel sehen Sie eine ManagedConnectionFactory-Bean "MyMcf" an der Heapspeicheradresse "7dd07dd0". Zwei Integritätsbedingungen für die Validierung werden nicht eingehalten. Die Ausnahme zu den ungültigen Integritätsbedingungen bewirken, dass die Anwendung keine Verbindungsfactory abrufen kann, die für das Herstellen einer Verbindung zur Ressource "MyConnector" erforderlich ist:
[9/30/10 7:58:58:734 CDT] 00000023 BeanValidatio E  
 J2CA0238E: Bean Validation für JavaBean com.my.company.adapter.MyMcf@7dd07dd0 aufgrund einer oder mehrerer
ungültiger Konfigurationseinstellungen, die in der folgenden Liste ungültiger Integritätsbedingungen angegeben sind, fehlgeschlagen:
		ConstraintViolationImpl{interpolatedMessage='must be less than or equal to 30', propertyPath=mcfProperty2, rootBeanClass=class com.my.company.adapter.MyMcf, messageTemplate='{javax.validation.constraints.Max.message}'}
		ConstraintViolationImpl{interpolatedMessage='The value should be greater than 10', propertyPath=mcfProperty4, rootBeanClass=class com.my.company.adapter.MyMcf, messageTemplate='The value should be greater than 10'}
….
[9/30/10 7:58:58:765 CDT] 00000023 ConnectionFac E   J2CA0009E: Beim Instanziieren der ManagedConnectionFactory-Klasse com.my.company.adapter.MyMcf, die von der Ressource j2c/MyConnector verwendet wird, ist eine Ausnahme eingetreten: com.ibm.ejs.j2c.metadata.ConstraintViolationException
		at com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
		at com.ibm.ejs.j2c.ServerFunction.validate(
		at com.ibm.ejs.j2c.J2CUtilityClass.createMCFEntry(
	…
		at javax.naming.InitialContext.lookup(
		at com.my.company.app.MyEjbImpl.testJbv(
. . .     

Ungültige Integritätsbedingungen bei ActivationSpec-Beans

ActivationSpec-Beans werden beim Start der Anwendung validiert. Zu diesem Zeitpunkt aktiviert der Anwendungsserver erstmalig die Nachrichtenendpunkte, die an J2C-Aktivierungsspezifikationen gebunden sind. Diese Aktivierungsspezifikationen benennen die Beanklasse in ihrer Konfiguration. Wenn die Validierung scheitert, kann der Endpunkt nicht aktiviert werden, und die daraufhin ausgelöste Ausnahme zu den ungültigen Integritätsbedingungen bewirkt, dass die Anwendung mit dem Endpunkt fehlschlägt.

Da der J2C-Ressourcenadapter, der die Aktivierungsspezifikation enthält, gestartet wird, können die Anwendungen weiterhin Verbindungen zur Ressource herstellen. Die Ressource kann den Endpunkten, die erfolgreich aktiviert wurden, Nachrichten zustellen. Wenn die Aktivierungsspezifikation in einem integrierten Ressourcenadapter definiert ist, stoppt der Server den Adapter beim Stoppen der Anwendung. Transaktionsnachrichten, die von früheren Instanzen des Ressourcenadapters, der die Aktivierungsspezifikation enthält, ausgegeben wurden und nicht zugestellt werden konnten, können nicht wiederhergestellt werden.

Im folgenden Beispiel sehen Sie eine ActivationSpec-Bean "MyActSpec" an der Heapspeicheradresse "51625162". Zwei Integritätsbedingungen für die Validierung werden nicht eingehalten. Im Protokoll wird die Ausnahme zu den ungültigen Integritätsbedingungen angezeigt, die bewirkt, dass die Anwendung "my_company_app" fehlschlägt:
[9/29/10 10:52:05:125 CDT] 00000009 BeanValidatio E  
 J2CA0238E: Bean Validation für JavaBean com.my.company.adapter.MyActSpec@51625162 aufgrund einer oder mehrerer ungültiger Konfigurationseinstellungen, die in der folgenden Liste ungültiger Integritätsbedingungen angegeben sind, fehlgeschlagen:
		ConstraintViolationImpl{interpolatedMessage='Size should be between 2 and 4', propertyPath=asProperty1, rootBeanClass=class com.my.company.adapter.MyActSpec, messageTemplate='Size should be between 2 and 4'}
		ConstraintViolationImpl{interpolatedMessage='Should be < 30', propertyPath=asProperty2, rootBeanClass=class com.my.company.adapter.MyActSpec, messageTemplate='Should be < 30'}
[9/29/10 10:52:05:171 CDT] 00000009 RAWrapperImpl E   J2CA0089E: Die Methode activateEndpoint in der ResourceAdapter-JavaBean cells/IBM-46DF84D297BNode01Cell/nodes/IBM-46DF84D297BNode01/resources.xml#J2CResourceAdapter_1285109389828 ist mit der folgenden Ausnahme fehlgeschlagen: javax.resource.ResourceException: com.ibm.ejs.j2c.metadata.ConstraintViolationException
		at com.ibm.ejs.j2c.ActivationSpecWrapperImpl.validateActivation…(	at com.ibm.ejs.j2c.ActivationSpecWrapperImpl.createAndInitializ…(
		at com.ibm.ejs.j2c.ActivationSpecWrapperImpl.activateEndpoint(
…
[9/29/10 10:52:05:750 CDT] 00000009 ApplicationMg A   WSVR0217I: Die Anwendung wird gestoppt: my_company_app
. . .

AdministeredObject-Beans

AdministeredObject-Beans werden validiert, wenn der Server einen J2C-Ressourcenadapter startet, der das verwaltete Objekt in seiner Konfiguration enthält. Schlägt die Validierung fehl, weist der Server die AdministeredObject-Instanz zurück, und die daraufhin ausgegebene Ausnahme zur ungültigen Integritätsbedingung bewirkt, dass der Ressourcenadapter ausfällt.

Im folgenden Beispiel sehen Sie eine AdministeredObject-Bean "MyAdminObj" an der Heapspeicheradresse "3a803a80". Zwei Integritätsbedingungen für die Validierung werden nicht eingehalten. Im Protokoll wird die Ausnahme zu den ungültigen Integritätsbedingungen angezeigt, die bewirkt, dass der Ressourcenadapter fehlschlägt:
[9/29/10 10:51:25:125 CDT] 00000000 BeanValidatio E   J2CA0238E: Bean Validation für JavaBean com.my.company.adapter.MyAdminObj@3a803a80 aufgrund einer oder mehrerer ungültiger Konfigurationseinstellungen, die in der folgenden Liste ungültiger Integritätsbedingungen angegeben sind, fehlgeschlagen:
		ConstraintViolationImpl{interpolatedMessage='The value should be greater than 10', propertyPath=aoProperty4, rootBeanClass=class com.my.company.adapter.MyAdminObj, messageTemplate='The value should be greater than 10'}
…
[9/29/10 10:51:25:218 CDT] 00000000 AdminObjectSe A  
 J2CA0017I: Bei der Erstellung des Serializable-Objekts für das JNDI-Deployment von jms/MyAdminObj ist eine Ausnahme eingetreten:
 com.ibm.ejs.j2c.metadata.ConstraintViolationException
		at com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
		at com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
		at com.ibm.ejs.j2c.AdminObjectSerBuilderImpl._createAndValidate…(
		at com.ibm.ejs.j2c.AdminObjectSerBuilderImpl.createAndValidate…(
		at com.ibm.ejs.j2c.RALifeCycleManagerImpl.startRA(
. . . 

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdat_rarbeanval
Dateiname:rdat_rarbeanval.html