2010-11-29 2 views
0

меня это (не так круто) веб-службы:Перевести объект Java на мыло

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 знать, как перевести объект в ответ на мыло?

ответ

0

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

Я подозреваю, что вы пытаетесь выполнить замещение типа во время выполнения, используя суперкласс. Если это так, вы должны использовать JAX-WS 2.1 и аннотацию XmlSeeAlso в JAXB 2.1 для этого; рекомендуется также создать подходящий суперкласс, даже если вам удастся создать соответствующий WSDL.

0

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

Смежные вопросы