Tengo un servicio web creado en Java (1.6), con metro (2.0), usando maven, bajo Tomcat 6. En todos los métodos web, el tipo de devolución es genérico clase:Unmarshal genera un campo nulo genérico con un campo de lista <T>
public class WsResult<T> {
protected T result; // the actual result
protected Code requestState; // 0K, or some error code if needed
protected String message; // if error, instead of result, insert a message
}
Por ejemplo:
public WsResult<OtherClass> someMethod(...);
public WsResult<Foo> someMethod_2(...);
Y en el cliente:
MyServiceService service = new MyServiceService();
MyService port = service.getMyServicePort();
WsResult result = port.someMethod(...);
OtherClass oc = (OtherClass) result.getResult();
WsResult res = port.someMethod_2(...);
Foo o = (Foo) res.getResult();
En algunos métodos web está funcionando. Pero cuando el resultado es una clase con un atributo List<? class>
, no se puede eliminar.
Este proyecto es uno de los más grandes. Entonces, para fines de prueba, creé uno nuevo, más simple, solo el proyecto, con el mismo modelo de datos, y copié uno de los métodos web, en este caso funcionó, y después del desempate, obtuve un resultado que podría enviar al tipo esperado
¿Qué podría estar pasando?
EDIT:
La respuesta es una solución que sí, pero genera un captador para cada tipo de agregado a la declaración del campo. ¿Hay una manera mejor?
¿Se pueden publicar los fragmentos relacionados del proyecto de prueba? –
Disculpe por solo comentar ahora, pero estoy muy ocupado. Editó la publicación, con el ejemplo de uso. –