Я уверен, что у вас есть много вопросов по этому типу вещей здесь, но ни один из ответов, которые я нашел, кажется, не имеет отношения к проблеме, с которой я сталкиваюсь, поэтому я надеялся, что смогу получить конкретные ответы.
У меня есть проект, который состоит из клиента и сервера. Сервер подключается к базе данных, и клиент может вызывать методы на сервере через файл wsdl. Это прекрасно работает, но сервер может возвращать только простые типы и списки. Я посмотрел, как обрабатывать пользовательские типы, и был направлен в JaxB, который, кажется, именно то, что я ищу. К сожалению, я немного смущен тем, как я должен это использовать. Я использую среду IDE NetBeans (6.9.1), которая упрощает работу с файлами wsdl, хотя я читал, что передача сложных классов довольно тривиальна из командной строки, как только вы получили конец wsdl работает нормально?
Я хочу, чтобы сервер возвращал класс - он будет просто содержать данные - которые клиент может читать и использовать.
Я сделал следующее, но, очевидно, я где-то ошибаюсь!
- У меня есть класс с именем Customer на стороне сервера, который создается и возвращается, когда клиент вызывает определенный метод.
- Клиент, очевидно, не может правильно интерпретировать этот класс.
- Я использовал schemagen для создания схемы XML из класса Customer. Затем я использую мастер netbeans, чтобы связать схему с классом в клиенте.
- Полагаю, это то, где я запутался. Я хочу отменить ответ xml от сервера и использовать его для создания нового объекта на клиенте. Я использую ярлык netbeans "jaxbu", который расширяется до некоторого кода, но я не уверен, как поместить возвращаемый объект в unmarshaller. Если это имеет какой-то смысл?
Код, сгенерированный "jaxbu", аналогичен приведенному ниже, внутри блока try:
javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(c.getClass().getPackage().getName());
javax.xml.bind.Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
c = (CustomerInfo) unmarshaller.unmarshal(new java.io.File("File path"));
Любая помощь будет принята с благодарностью, и если вам потребуется дополнительная информация. пожалуйста, не стесняйтесь спрашивать.
Спасибо,
Mathew