Перевести объект Java в мыло - PullRequest
0 голосов
/ 30 ноября 2010

У меня есть этот (не очень крутой) веб-сервис:

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService()
public class WMCWeb {
}

И хотел бы сделать что-то вроде

@WebMethod(operationName = "getMyObject")
public MyObject getMyObject(@WebParam(name = "id") String id) {
        ...
        return new myObject;
}

Но я не могу просто вернуть объект. Я действительно не знаю, что я должен сделать, чтобы иметь возможность сделать это. Я читал кое-что о написании org.apache.soap.util.Serializer, но это кажется старым решением. Как я могу заставить WebService знать, как преобразовать объект в ответ Soap?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2010

JAX-WS использует JAXB (фактическая версия используемого JAXB зависит от версии JAX-WS) для выполнения привязки между документом XML (сообщение SOAP на проводе) и типами Java.Если вы замените параметр String одним из типов java.lang.Object, то среда выполнения JAXB обязательно обнаружит трудности во время сериализации и десериализации, поскольку не существует таких привязок, определяющих, как среда выполнения должна выполнять такой процесс.1003 * Я подозреваю, что вы пытаетесь выполнить подстановку типов во время выполнения, используя суперкласс.В этом случае вам следует использовать JAX-WS 2.1 и аннотацию XmlSeeAlso в JAXB 2.1;также рекомендуется создать подходящий суперкласс, даже если вам удастся сгенерировать соответствующий WSDL.

0 голосов
/ 30 ноября 2010

посмотрите на CXF или axis2. На самом деле они предоставляют методы в виде веб-службы, и вы можете легко вызывать эти методы, используя что-то вроде скелета (точно так же, как работает EJB). также, если у вас уже есть веб-служба (то есть WSDL опубликован), вы можете сделать WSDLtojava, и он создаст эти объекты для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...