У меня были похожие проблемы при работе со списками, картами и т. Д. Поскольку коллекции не знают своего типа во время выполнения при генерации WSDL, типы, которые вы помещаете в коллекцию, игнорируются.Исключением из этого я обнаружил случай, когда другой метод, предоставляемый веб-службой, использовал этот конкретный тип.В качестве обходного пути я создал фиктивный метод, который использовал каждый тип, необходимый для списков и карт.
Так, например, у меня был класс с именем User, который расширил абстрактный класс с именем BaseObject, который не использовался непосредственновеб-сервис.Однако это иногда пропускалось через списки при поиске пользователей.Следующий код был моим обходным путем.
@WebService
public interface MyService
{
// Various @WebMethods here
/**
* This method should not be used. This is a workaround to ensure that
* User is known to the JAXB context. Otherwise you will get exceptions like this:
* javax.xml.bind.JAXBException: class java.util.User nor any of its super class is known to this context.
* Or it will assume that using BaseObject is OK and deserialisation will fail
* since BaseObject is abstract.
* This issue occurs because the classes available to the JAXB context
* are loaded when the endpoint is published. At that time it is not known
* that User will be needed since it is not explicitly referenced
* in any of these methods. Adding user here will cause it to be added to
* the context.
* @param user
* @return
*/
@WebMethod
void dummy(@WebParam(name="user") User user);
}
Я признаю, что это немного неприятная работа, и я не считаю это правильным решением, но, возможно, оно будет поддерживать вас, пока кто-то не сможет предоставитьлучшее решение.
Надеюсь, это поможет.