AXIS 1.4 adiciona elementos para tipo de falha personalizado
Pergunta
Talvez alguém encontrou uma solução para o problema seguinte:
Parece como se AXIS 1.4 adiciona um <exceptionName>
e um elemento <hostname>
a cada elemento culpa personalizado. No WSDL a falha é definida para consistir apenas de um systemMessage
mensagem de falha personalizado.
Esta é a resposta de regressar do meu serviço. Não se preocupe com o erro, poderia ser qualquer erro que é retornada como uma falha.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.generalException</faultcode>
<faultstring/>
<detail>
<ns1:systemMessage xmlns:ns1="http://my.domain/workflow/engine/wsdl/types">
<message>nullcvc-datatype-valid.1.2.1: '2008-12-02T00:00:00' is not a valid value for 'date'.cvc-type.3.1.3</message>
<code>XML string is not valid</code>
<parameter/>
</ns1:systemMessage>
<ns2:exceptionName xmlns:ns2="http://xml.apache.org/axis/">com.domain.commons.ws.schema.SystemMessageType</ns2:exceptionName>
<ns3:hostname xmlns:ns4="http://xml.apache.org/axis/">my.host.com</ns3:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Parece que este é um erro no Eixo 1.4. Alguém sabe uma solução para este comportamento?
Solução
Não há uma solução para o problema:
Na classe de falha gerado AXIS que se estende a partir org.apache.axis.AxisFault alterar os construtores como se segue, a fim de suprimir os elementos (a seguir é a classe de falha que é usado para a falha devolvido na pergunta):
public SystemMessageType() {
// Suppress the two elements
this.removeHostname();
this.removeFaultDetail(org.apache.axis.Constants.QNAME_FAULTDETAIL_EXCEPTIONNAME);
}
public SystemMessageType(
java.lang.String message1,
java.lang.String code,
java.lang.String[] parameter) {
// Call the default constructor
this();
this.message1 = message1;
this.code = code;
this.parameter = parameter;
}
Esta solução resolve o problema. No entanto, sempre que você regenerar o seu código para o serviço web sabão que você tem que se adaptar a classe falha.