我正在使用 Netbeans 创建一个 Web 应用程序项目。当我创建新的 Web 服务(代码优先 WS)时,IDE 会添加 METRO2.0 库。SOAP Web 服务很好地部署在我的 apache Tomcat 6 中。但是,当我发送复杂类型时,客户端无法访问客户端中发送对象的方法。假设我有一个名为Person的类和一个操作:
@WebMethod(operationName = "getOnePerson")
public Person getOnePerson() {
return new Person("MyName", "MySurname", 24);
}
和 Person 类:
public class Person {
private String name, surname;
private int age;
public Person() {
}
public Person(String name, String surname, int age) {
this.name = name;
this.surname = surname;
this.age = age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public String getSurname() {
return surname;
}
}
那么如何让客户知道Person方法呢?谢谢编辑:我试图通过添加 Pesron 的属性来更新我的 XSD 文件:
<xs:complexType name="person">
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="surname" type="xs:string" />
<xs:attribute name="age" type="xs:int" />
</xs:complexType>
通过添加这部分,客户端知道了 Person 类的 getter 和 setter,但是当尝试运行程序时,所有的 getter 都返回 null(客户端):
public class Main {
public static void main(String[] args) {
try {
Person p = getOnePerson();
System.out.println(p);
System.out.println(p.getSurname());
System.out.println(p.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
private static Person getOnePerson() {
com.company.ws.BeanWebService_Service service = new com.company.ws.BeanWebService_Service();
com.company.ws.BeanWebService port = service.getBeanWebServicePort();
return port.getOnePerson();
}
}
返回: com.company.ws.Person@d75415 null null 那么你能告诉我为什么客户端不知道类属性的不同值吗?