JAX-WS validar esquema no WebLogic com @SchemaValidation
Não consegui encontrar a solução e encontrei mais pessoas presas no mesmo problema, então postarei aqui.
Por padrão, um servidor JAX-WS (pelo menos para o WebLogic) não validará a mensagem recebida com seu esquema associado.
Isso pode levar a muitos problemas, já que qualquer valor inválido (formato xsd: dateTime incorreto, letras em um campo numérico etc.) resultará em umnulo valor no objeto Java, incluindo campos obrigatórios.
O que eu preciso fazer é uma validação simples que deve ser fornecida pelo servidor.
import com.sun.xml.internal.ws.developer.SchemaValidation;
@Stateless
@WebService(portName="ValidatedService")
@SchemaValidation
public class ValidatedService {
public void operation(@WebParam(name="request") ValidatedRequest request) {
/* do stuff */
}
}
Por alguma razão, quando eu estava tentando usar a validação de esquema fornecida, estava recebendo a seguinte exceção:
Caused By: javax.xml.ws.WebServiceException: Annotation @com.sun.xml.internal.ws.developer.SchemaValidation(handler=class com.sun.xml.internal.ws.server.DraconianValidationErrorHandler) is not recognizable, atleast one constructor of class com.sun.xml.internal.ws.developer.SchemaValidationFeature should be marked with @FeatureConstructor
Não desejo implementar nenhum validador personalizado. O servidor deve fornecer esse tipo de serviço com uma configuração simples e direta.