Создание уникального сериализуемого идентификатора для каждого из сгенерированных классов в JAXB
Я использую ant wsimport для создания заглушки клиента из wsdls. Кроме того, я хотел бы генерировать классы клиентов, которые реализуют Serializable
. Я хотел бы создать другой serialVersionUID
для каждого класса. Я попробовал файл привязки, который был показан ниже. Но его создание одинаково serialVersionUID
для всех классов. Могу ли я дать свой собственный serialVersionUID
каждому классу?
<wsimport xendorsed="true" binding="binding.xml" debug="true" keep="true"
verbose="false" sourcedestdir="${generated}" wsdl="${src}${wsdl.file}"
wsdlLocation="${wsdl.file}">
</wsimport>
привязка конфигурации
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<globalBindings>
<serializable uid="1" />
</globalBindings>
</bindings>
Ответы
Ответ 1
Только для записи невозможно создать уникальный serialVersionUID
для каждого сгенерированного класса, потому что не имеет смысла делать это.
Позвольте мне объяснить:
A serialVersionUID
представляет собой версию вашего класса в определенный момент времени. Если вы измените свой класс, ваш serialVersionUID
должен измениться.
Поэтому, когда JDK десериализует объекты одного класса, он знает, к какой версии вашего класса следует десериализовать его.
В случае JAXB, поскольку вы генерируете все свои классы одновременно, каждый раз, когда нет смысла выводить все классы по отдельности. Просто потому, что они могут меняться только как группа. (Если вы не вытащите их из целевой папки..)
Надеюсь, это немного лучше.
Ответ 2
Это файл привязки, который мы используем, что делает трюк для нас.
<xs:schema elementFormDefault="qualified" version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jaxb:version="2.0"
jaxb:extensionBindingPrefixes="xjc">
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings>
<xjc:serializable />
</jaxb:globalBindings>
</xs:appinfo>
</xs:annotation>