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.