3

私はこのように動作するWebサービスを持っています:

@WebService(serviceName = "TempService")
public class TempService {
  @WebMethod(operationName = "addBarkod")
  public Boolean addBarkod(@WebParam(name = "barkod") Barkod barkod) {
    System.out.println(barkod.getBarkodNo());
  }
}

およびBarkodクラスは次のとおりです。

public class Barkod {
  private String barkodNo;
// there are constructors and getters, setters etc. nothing fancy //
}

この構造を使用すると、問題なく、soapUIを使用してWebサービスを呼び出すことができます。問題は、モデルクラスに次のようなJAXBアノテーションを付けたい場合です。

@XmlType(name="barkod")
@XmlRootElement(name="barkod")
@XmlAccessorType(XmlAccessType.FIELD)

これをglassfish3.1にデプロイすると、soapUIは新しい構造の新しいクライアントリクエストを生成しますが、「barkod.getBarkodNo();」を実行する場合は addBarkod操作では、NullPointerExceptionがスローされます。Webサービスに送信したXMLが適切なバーコードオブジェクトを作成していないようです。

Webサービスクラスなどと関係がありますか?

4

1 に答える 1

0

soapUIがWSDLからリクエストを自動的に生成するために問題が発生したと思います。名前空間句なしで@XmlRootElementを使用してクラスに注釈を付けると、指定されたXMLがmayオブジェクトにマップされません。@XmlRootElemen(namespace = "")を割り当てると、問題は解決します。

とにかく応答してくれてありがとう。

于 2012-04-12T11:13:33.390 に答える