我正在使用Netbeans创建Web应用程序项目。当我创建一个新的Web服务(代码第一个WS)时,IDE添加METRO2.0库。 SOAP web服务已经部署在我的apache Tomcat 6中。但是,当我发送复杂类型时,客户端无法访问客户端中发送的对象的方法。 说我有一个名为人类和操作:使通过SOAP发送的对象的方法可见
@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;
}
}
那么请问有什么可以让客户知道人的方法呢? 感谢 编辑:我已经尝试通过增加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方法返回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();
}
}
回报: [email protected] 空 空 那么你能否告诉我为什么客户不知道类属性的不同值?
我可以将类复制到客户端。但是JVM能够解析每个属性的地址内存吗?实际上,客户端会自动创建一个名为com.company.ws.Person的新类型,其中没有方法。因此创建具有相同名称的另一个类可能会导致一些问题。不是吗? – 2012-04-15 11:54:02