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 のゲッターとセッターを認識しますが、プログラムを実行しようとすると、すべてのゲッターが 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 では、クライアントがクラスの属性のさまざまな値を認識しない理由を教えてください。