Предотвращение классов уничтожения NetBeans JAXB - PullRequest
2 голосов
/ 03 мая 2010

Я разрабатываю сервис SOAP с использованием JAX-WS и JAXB под Netbeans 6.8 и немного расстраиваюсь из-за того, что Netbeans портит мою работу каждый раз, когда схема XSD, в которой мои привязки JAXB основаны на изменениях.

Для уточнения, среда IDE автоматически генерирует классы, связанные со схемой, которые затем можно (не) маршалировать из / в XML с помощью JAXB. К этим классам я добавил дополнительные методы (например) для преобразования в и из отдельных классов, предназначенных для сохранения в базе данных с JPA. Проблема в том, что всякий раз, когда схема изменяется и я перестраиваюсь, эти классы восстанавливаются, и все мои пользовательские методы удаляются. Я могу вручную заменить их, вставив копию из файла резервной копии, но это довольно трудоемкий и утомительный процесс. Поскольку я использую итеративный подход к проектированию, схема меняется довольно часто, и я трачу очень много времени, когда это происходит, просто для восстановления моего предыдущего кода.

Хотя среда IDE автоматически восстанавливает классы, связанные с JAXB, вполне разумно, и я не хочу подразумевать иное, мне было интересно, есть ли у кого-нибудь какие-нибудь яркие идеи относительно того, как предотвратить повторное восстановление моей дополнительной работы каждый раз моя схема меняется?

Ответы [ 2 ]

1 голос
/ 03 мая 2010

Внесение изменений в исходный код XJC не очень хорошая идея по причинам, которые вы обнаружили. Вы должны либо использовать настройку привязки или XJC для плагина, чтобы сгенерировать дополнительный код, который вам нужен, либо переместить ваш дополнительный код из кода, сгенерированного XJC, в отдельные исходные файлы.

Если ваш дополнительный код предназначен для преобразования между моделями классов JAXB и JPA, то он, вероятно, может выступать в качестве отдельного слоя перевода. Это не очень хорошо, но это обойдет вашу проблему.

В качестве альтернативы есть XJC-плагин , который должен позволить вам сохранить код, который был вручную добавлен в сгенерированный источник, но он плохо документирован (и я сам не использовал его). Возможно, вам придется выследить http://jaxb.dev.java.net/, чтобы узнать, как его использовать.

0 голосов
/ 05 июня 2013

Вместо изменения сгенерированных классов для добавления методов - расширьте сгенерированные классы и поместите ваши дополнительные методы в ваши классы, производные от сгенерированных классов.

...