考慮下面的類(請假設私有字段的公共getter和setter方法)。如何使用JAX-WS/JAXB編寫參數化類型?
// contains a bunch of properties
public abstract class Person { private String name; }
// adds some properties specific to teachers
public class Teacher extends Person { private int salary; }
// adds some properties specific to students
public class Student extends Person { private String course; }
// adds some properties that apply to an entire group of people
public class Result<T extends Person> {
private List<T> group;
private String city;
// ...
}
我們可能有以下的Web服務實現如下註解:
@WebService
public class PersonService {
@WebMethod
public Result<Teacher> getTeachers() { ... }
@WebMethod
public Result<Student> getStudents() { ... }
}
的問題是,JAXB似乎馬歇爾結果對象爲Result<Person>
,而不是具體類型。因此,由getTeachers()返回的結果序列化爲包含List<Person>
而不是List<Teacher>
,並且getStudents()也是相同的,必須作必要的修改。
這是預期的行爲?我是否需要在Person上使用@XmlSeeAlso?
謝謝!
LES
你能給出一個結果XML嗎? – Bozho 2010-02-17 06:17:41
我實際上使用返回JSON數據的JAX-WS JSON插件。 getTeachers示例的示例爲:{city:「Memphis」,group:[{name:「Johnny」}]}。也就是說,「薪水」不會出現。 getStudents也一樣 - 它會像上一個例子一樣(當然不會顯示)。我現在不在我的開發箱中,這就是爲什麼我不能發佈WSDL的實例或生成的模式或XML通過SOAP使用SoapUI訪問服務的原因。 – les2 2010-02-17 06:25:44