02 June, 2009

Apache Ant и Metro

Столкнулся с такой проблемой - в некоторых случаях приложение, собранное антом не работает. Конкретно - не работает десереализация запросов на веб-сервис. Получаемый запрос содержит null в значениях полей. Опытным путём было выяснено, что на это влияет используемая версия Java. Под 1.5 работает корректно, под 1.6 - не работает. Нашли ошибку в метро, связанную именно с версией JDK и на этом успокоились. Но было одно исключение из правил. У одного из разработчиков под 1.5 тоже не работало. Как выяснилось позже, виноват был во всё Ant. Metro создавал файл package-info.java, в котором было примерно следующее содержание: @javax.xml.bind.annotation.XmlSchema(namespace = "http://z.y.x.com", elementFormDefault=javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED) package com.x.y.z; Ант, в свою очередь, должен был этот файл компилировать. А в реальности этого не происходило, поэтому Metro не мог корректно отобразить XML-запрос на объекты доменной области. Решение было немного кривым, но при этом поразительно простым - принудительный вызов javac на файлах package-info.java.

No comments:

Post a Comment