#java #xml #xsd #jax-ws
#java #xml #xsd #jax-ws
Вопрос:
в настоящее время я переношу одно из наших приложений с Java 8 / TomCat 8 на Java 11 и TomCat 9.
Мне потребовалось уже довольно много времени, но есть одна странная проблема, в которой мне нужна помощь. Я использую JAXWS-RT версии 2.3.3
Мы предоставляем некоторые веб-сервисы с помощью JAXWS, где мы возвращаем простой объект Java, аннотированный некоторой аннотацией XML.
В целом веб-сервис также доступен и также работает.
Но параметр запроса не отображается через xsd.
Это сервис:
@WebMethod(operationName = "ValuesRequestDataLabel", action = "tns:valuesMessage")
@WebResult(name = "VDataServiceResponse", partName = "VDataServiceResponse", targetNamespace = "http://www.test.com/services/DataService/")
public DataServiceResponse valuesRequestDataLabel(
@WebParam(name = "VDataServiceRequestLabel", partName = "VDataServiceRequestLabel", targetNamespace = "http://www.test.com/services/DataService/") DataServiceRequestLabel vDataServiceRequestLabel) {
DataServiceResponse result = getDataServiceBase().performValuesRequestDataLabel(vDataServiceRequestLabel);
return resu<
}
И это часть класса request (я не включил геттеры и сеттеры):
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"startTime",
"endTime",
"compression",
"user",
"label"
})
@XmlRootElement(name = "valuesRequestLabel")
public class DataServiceRequestLabel {
@XmlElement(name = "StartTime", required = true)
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar startTime;
@XmlElement(name = "EndTime", required = true)
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar endTime;
@XmlElement(name = "Label", required = true)
protected List<String> label;
@XmlElement(name = "Compression", required = false)
protected Boolean compression;
@XmlElement(name = "User", required = false)
protected String user;
....
И это результат xsd, сгенерированный во время выполнения (где я пропускаю данные запроса):
....
<xs:complexType name="ValuesRequestDataLabel">
<xs:sequence>
<xs:element name="VDataServiceRequestLabel" form="qualified" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
....
Но я бы ожидал (и так было в старой среде):
....
<xs:complexType name="ValuesRequestDataLabel">
<xs:sequence>
<xs:element name="VDataServiceRequestLabel" form="qualified" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="StartTime" type="xs:dateTime"/>
<xs:element name="EndTime" type="xs:dateTime"/>
<xs:element name="Compression" type="xs:boolean" minOccurs="0"/>
<xs:element name="User" type="xs:string" minOccurs="0"/>
<xs:element name="Label" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
....
Кто-нибудь знает, что не так?