Я использовал Eclipse для создания заглушки кода Java-клиента с учетом стороннего wsdl. Клиент работает отлично, я могу получить доступ к веб-сервису и делать то, что мне нужно.
Теперь я хотел бы написать несколько модульных тестов, которые могут запускаться без подключения к веб-сервису. Можно ли использовать какой-либо механизм в стеке axis2 для десериализации XML-файла в один из объектов Java в коде-заглушке клиента Java?
Например, один из классов в коде заглушки клиента - «Контакт». Скажем, у меня есть XML-файл, который имитирует XML, который обычно находится в запросе на мыло. Как я могу десериализовать это в объект Контакт java?
Я раньше использовал XMLBeans, но надеюсь, что есть более простой способ, поскольку кажется, что java-клиент уже где-то выполняет эту десериализацию? Может быть, у axis2 есть метод, позволяющий взять кусок xml и вернуть объект java?
ОБНОВЛЕНИЕ:
Я пробовал это:
String packageName = Contact.class.getPackage().getName();
JAXBContext jc = JAXBContext.newInstance( packageName );
Я понял:
java.lang.AssertionError: javax.xml.bind.JAXBException: "com.sforce.soap._2006._04.metadata" doesnt contain ObjectFactory.class or jaxb.index
Затем я попробовал это:
Contact c = new Contact();
JAXBContext jc = JAXBContext.newInstance( c.getClass() );
Но тогда я получаю исключение, что один из классов, который использует класс контактов, does not have a no-arq default constructor
Я надеялся, что это будет быстро и легко сделать, но пока у меня не будет времени полностью освоить axis2 и то, как он использует jaxb, я просто буду анализировать xml вручную.