У меня есть устаревшее приложение Java, которое использует класс mypackage.Foo. Я хотел бы, чтобы это приложение использовало веб-службу, которая возвращает экземпляры Foo. Чтобы подключиться к этой веб-службе, я использую wsimport в WSDL для генерации артефактов, и это дает мне еще один файл Foo.java. В идеале я хотел бы сказать wsimport генерировать артефакты, которые используют исходный Foo, и не генерировать никаких дополнительных файлов Foo, но я не нашел способ сделать это. Как скомпилировать два файла Foo в Java-приложении? Кажется, мои варианты:как согласовать конфликт между исходным и сгенерированным файлом в веб-сервисах Java?
1) положить сгенерированный файл Foo в другой пакет. Но тогда присваивание otherpackage.Foo переменной mypackage.Foo не удается
2) используйте сгенерированный Foo вместо исходного Foo. В некоторых случаях это может показаться лучшим решением, но исходный Foo имеет функциональность, которая не находится в сгенерированном Foo. Кроме того, изменение приложения не представляется возможным.
3) используйте первый вариант и напишите способ вручную скопировать поля otherpackage.Foo в mypackage.Foo. Если все остальное терпит неудачу, это будет то, что я делаю, но кажется ужасно неэлегантным.
Уверен, что мне не хватает простой передовой практики. Цените любые идеи!
Хотите знать, если вы когда-либо получили удовлетворительный ответ на это с помощью wsimport? У меня такая же проблема (http://stackoverflow.com/questions/2642583/correct-use-of-wsdl-generated-sources) –
Коллега игры мне рабочее решение, которое использует привязки для сопоставления сложных типов WSDL с локальными классами , в основном говоря wsimport не генерировать заглушки для этих классов, а также использовать локальные. В этом примере используется maven, поэтому я не уверен, что будет выглядеть каноническая версия, но ключ был файлом bindings.xml с такими записями, как – RHH
jxb: bindings version = "1.0" xmlns: jxb = "http://java.sun.com/xml/ns/jaxb "xmlns: xs =" http://www.w3.org/2001/XMLSchema "> - -
RHH