Zdravím všechny.

Zdědil jsem jeden systém komunikující pomocí web services. Jako server je použit Tomcat.

Celá komunikace slouží pro předávání informací mezi 2 systémy zákazníka. Konkrétně se jedná o předávání časů (typ xsi::dateTime). Zpráva může obsahovat několik položek tohoto typu. Od zákazníka vzešel požadavek, aby bylo možné odeslat hodnotu "nil". Ta má rozdílný význam oproti tomu, když hodnota chybí. Upravil jsem tedy příslušnou třídu tak, aby daný element byl "nillable" (viz níže).

static {
    ....

    elemField = new org.apache.axis.description.ElementDesc();
    elemField.setFieldName("eghf");
elemField.setXmlName(new javax.xml.namespace.QName("http://dom.tld/xxx";, "eghf")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "dateTime"));
    elemField.setMinOccurs(0);
    elemField.setNillable(true);
    typeDesc.addFieldDesc(elemField);
    elemField = new org.apache.axis.description.ElementDesc();
    elemField.setFieldName("aghf");
elemField.setXmlName(new javax.xml.namespace.QName("http://dom.tld/xxx";, "aghf")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "dateTime"));
    elemField.setMinOccurs(0);
    elemField.setNillable(true);
    typeDesc.addFieldDesc(elemField);
    elemField = new org.apache.axis.description.ElementDesc();
    elemField.setFieldName("cghf");
elemField.setXmlName(new javax.xml.namespace.QName("http://dom.tld/xxx";, "cghf")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "dateTime"));
    elemField.setMinOccurs(0);
    elemField.setNillable(true);
    typeDesc.addFieldDesc(elemField);
    ...
  }

Bohužel po vyvolání webové služby vrátí web server kód 500 a následující odpověď:

<<< HTTP/1.1 500 Internal Server Error
<?xml version="1.0" encoding="UTF-8"?>
<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.userException</faultcode>
<faultstring>java.lang.NumberFormatException: Invalid date/time</faultstring> <detail><ns1:hostname xmlns:ns1="http://xml.apache.org/axis/";>trlpgw1</ns1:hostname></detail>
</soapenv:Fault></soapenv:Body></soapenv:Envelope>

Bohužel se mi nedaří přesvědčit tomcat, aby vzal na vstupu zprávu s jakoukoliv "nil" hodnotou. Nemáte někdo nějakou smyslupnou radu?

Díky.

LŠ

P.S. Web services jsou pro mne nové, tak mne nekamenujte za případné nepřesnosti v popisu atp.

Odpovedet emailem