Validação de Bean em Módulos RAR

O WebSphere Application Server valida restrições de JavaBeans de Resource Adapter Archive (RAR) em conformidade com a especificação Java™ Connector Architecture (JCA) versão 1.6.

Adaptadores de recursos podem especificar os requisitos de validação das propriedades de configuração para o Application Server por meio das anotações no código de origem do adaptador de recursos, especificações de restrição em um descritor de validação de adaptador de recursos ou uma combinação dos dois. Com a especificação dessas restrições, os adaptadores de recursos podem usar restrições de validação integradas fornecidas com o Application Server, restrições de validação de bean customizado fornecidas pelo desenvolvedor de aplicativos ou terceiros ou uma combinação dos dois. Os desenvolvedores de adaptador de recursos podem aplicar restrições aos campos e às propriedades compatíveis com JavaBeans dos seguintes tipos de JCA:
  • ResourceAdapter
  • ManagedConnectionFactory
  • ActivationSpec
  • AdministeredObject
No tempo de execução, o servidor de aplicativos cria instâncias de tipos de bean declaradas pelo adaptador de recursos. Cada instância é validada imediatamente na configuração de suas propriedades de configuração, antes de colocar a instância em serviço.

Ao validar um bean RAR, o Application Server cria uma instância de um factory de validador de acordo com o descritor de implementação de bean descoberto pelo Application Server. Uma instância do validador é obtida do factory e usada para validar a instância de bean.

Se a validação falhar, o Application Server emitirá uma exceção de violação de restrição e relatará todas as violações ao log do sistema. Os efeitos da exceção para cada tipo de bean RAR e as informações de determinação de problema são documentados no tópico Resolvendo Problemas de Validação de Bean em Módulos RAR.
Evitar Problemas Evitar Problemas: A especificação Validação de Bean requer que no máximo um validation.xml esteja visível no caminho de classe. Este requisito é violado sempre que dois ou mais RARs independentes fornecerem um descritor de validação. Consulte a seção "Descritor de validação de bean RAR" neste tópico para obter mais informações. Quando mais de um validation.xml estiver visível para os carregadores de classes do Application Server, os módulo Application Server ou aplicativo poderão falhar ao adquirir o ValidatorFactory e, subsequentemente, não poderão executar a validação de bean. Por exemplo, o servidor não pode validar os beans de um RAR integrado em um aplicativo sempre que o RAR integrado não possui uma configuração de validação e dois ou mais RARs independentes fornecerem as configurações. Para evitar este problema, instale os RARs independentes que fornecem um descritor de validação de bean como isolados sempre que possível.gotcha

Anotações de Restrição Integrada

Boas Práticas Boas Práticas: Use anotações de restrição integrada para especificar o intervalo e os atributos obrigatórios das propriedades de configuração em vez de fornecer anotações customizadas para o mesmo propósito. As restrições a seguir são úteis, mas é possível usar todas as restrições integradas de validação de bean. Consulte o tópico Restrições Integradas de Validação de Bean para obter uma lista completa das restrições.bprac
  • @Min

    Especifica o valor mínimo da propriedade de configuração decorada com esta anotação. O valor deve ser maior que ou igual ao mínimo especificado.

  • @Max

    Especifica o valor máximo da propriedade de configuração decorada com esta anotação. O valor deve ser menor que ou igual ao máximo especificado.

  • @Size

    Especifica o intervalo de valores da propriedade de configuração decorada com esta anotação. O valor deve ser maior que ou igual ao mínimo especificado e menor que ou igual ao máximo especificado.

  • @NotNull

    Especifica que o valor da propriedade de configuração decorada com esta anotação não deve ser nulo. Ou seja, a propriedade é necessária.

O exemplo a seguir é uma classe de bean RAR decorada com as anotações de restrição integrada.

O valor da propriedade de configuração serverName não deve ser nulo, e o valor da propriedade instanceCount deve ser pelo menos 1 quando o Application Server cria e configura uma instância da classe MyConnector. Caso contrário, uma exceção de validação de restrição ocorre e, no caso de um bean ResourceAdapter, o adaptador de recursos falha ao iniciar. Consulte o tópico Resolvendo Problemas de Validação de Bean em Módulos RAR para obter mais informações.

package com.my.company;

@Connector(…)
public class MyConnector implements ResourceAdapter, Serializable 
{
	@ConfigProperty(type=java.lang.String.class,defaultValue="WAS")
	private String serverName;

	@NotNull() 
	public String getServerName() {return serverName;}

	private Integer instanceCount = 0;

	@Min(value=1)
	public Integer getInstanceCount() {return instanceCount;}
	…

Descritor de Validação de Bean de RAR

As restrições de validação de bean podem ser declaradas por meio de um descritor XML fornecido por um módulo RAR. No caso mais simples, um descritor de validação de RAR consiste na configuração de validação declarada no arquivo validation.xml e zero ou mais arquivos XML que declaram restrições de validação de bean de RAR. Os arquivos contendo declarações de restrição são especificados nos elementos constraint-mapping da configuração de validação (validation.xml).

Você deve empacotar o descritor de validação no diretório META-INF de um módulo RAR. Quaisquer classes de anotação de restrição customizada que são declaradas no descritor de validação também devem ser empacotadas no módulo RAR.

O exemplo a seguir é um descritor de validação RAR simples que declara metadados de restrição como o código mostrado na seção "Anotações de restrição integrada".

<?xml version="1.0" encoding="UTF-8"?>
<validation-config
		xmlns=http://jboss.org/xml/ns/javax/validation/configuration
 		xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
 		xsi:schemaLocation=http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.0.xsd>
<constraint-mapping>META-INF/constraints.xml</constraint-mapping>
</validation-config>
The constraints XML file is also located in the META-INF directory and looks like the following:
<constraint-mappings
	xmlns=http://jboss.org/xml/ns/javax/validation/mapping
	xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
	xsi:schemaLocation=http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd>
<default-package>com.my.company</default-package>
<bean class="MyConnector" ignore-annotations="true">
	<field name="serverName">
		<valid/>
		<!-- @NotNull() -->
		<constraint annotation="javax.validation.constraints.NotNull">
			<message>Value is not null</message>
		</constraint>
	</field>
	<field name="instanceCount">
		<valid/>
		<!-- @Min(1) -->
		<constraint annotation="javax.validation.constraints.Min">
				<message>Minimum possible value is 1</message>
				<element name="value">1</element>
			</constraint>
		</field>
	</bean>
<constraint-mapping>
O módulo RAR compactado, MyResourceAdapter.rar, é semelhante ao seguinte:
my/
  company/
    MyConnector.class
. . .
META-INF
  /validation.xml
  /constraints.xml

Validação de Bean de Terceiros

O WebSphere Application Server suporta o uso de diferentes implementações de validação de bean. Se um adaptador de recursos exigir uma implementação de validação de bean diferente da implementação fornecida pelo produto, e o RAR fornecer a implementação de validação de bean, você deverá empacotar o arquivo JAR que contém a implementação de validação de bean no diretório-raiz do módulo RAR.

O módulo RAR também deve conter um descritor de configuração de validação único (validation.xml), que pode ser compactado em um diretório META-INF do módulo RAR ou no diretório META-INF/services do arquivo JAR de validação do bean, mas não em ambos.

Descoberta de Configuração de Validação de Bean de RAR

Ao validar beans de RAR, o Application Server faz a autoinicialização da configuração de validação de bean, específica do RAR, de acordo com o descritor de validação de bean fornecido no diretório RAR META-INF. Se o descritor não existir, o servidor fará a autoinicialização da configuração usando o primeiro descritor de validação descoberto no contexto de carregamento da classe do RAR, como aquele fornecido em uma validação de bean de terceiros que é empacotado no RAR. Finalmente o servidor usa a configuração de validação padrão fornecida pelo produto.

O servidor então cria um factory de validador específico para a configuração de validação do bean descoberto e usa este factory para criar instâncias do validador para validar as instâncias de bean de RAR. Ao implementar um RAR que fornece um descritor de validação de bean, você deve executar etapas adicionais para garantir que o carregador de classes que carrega o RAR carregue o descritor de validação de bean e as classes empacotadas no RAR.

Para um RAR integrado, após implementar o aplicativo que integra o RAR, você deve configurar o modo de delegação do carregador de classes de aplicativo para Pai-Último (Filho-Primeiro). Consulte o tópico Configurando Carregadores de Classes de Aplicativo para obter mais informações.

Para um RAR independente, você deve instalar o RAR como um provedor de recursos isolado. Consulte o tópico Configurações de Adaptador de Recursos para obter informações adicionais.


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



Í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=cdat_rarbeabval
Nome do arquivo: cdat_rarbeabval.html