0

jax-wsSOAP ベースの Web サービスの開発に使用しています。以下のエンドポイントがあり、以下のような 1 つの Web メソッドがあります。

@WebService
public interface MySoapService {

    @WebMethod
    public List<Result> getResult(TestRequest request);
}

上記の Web メソッドでは、TestRequest は JAXB を使用して XSD から生成されます。私の質問は、この Web サービスが公開されており、JAXB 生成オブジェクトを入力として受け取るため、XSD に対して検証を実行する必要がありますか?

メソッドが XML 文字列を入力として受け取る場合、XSD に対して検証を行うことができます。しかし、ここでは、JAXB オブジェクトを入力として直接受け取る webmethod があります。そのような場合、XSD に対する入力の検証は誰の責任です。

また、JAX-WS を使用していることを教えてください。私の Web メソッドは、XML 文字列ではなく JAXB 生成オブジェクトを入力として受け取ります。じゃあどれがスタンダード?XSD から生成された入力または JAXB オブジェクトとして xml 文字列を取得しますか? JAXB 生成オブジェクトを受け入れる Web メソッドを直接記述できますか?

ありがとう!

4

1 に答える 1

1

デフォルトでは、JAX-WS は着信要求に対してスキーマ検証を実行しません。@SchemaValidation をサービスに追加することで有効にできます。

ただし、最後の質問への回答として、メソッドは JAXB で生成されたオブジェクトを引数として確実に受け入れる必要があります。XML を文字列として受け入れることは、検証または解析されていないことを示しているため、非常に悪い考えです。JAX-WS、Spring-WS などを使用することの要点は、自分で XML をいじらないようにすることです。これらのライブラリは非常にうまく機能します。

これに続いて、スキーマの検証をオンにすることは通常は必要ありません。これは、JAX-WS が JAXB マーシャラーを使用して引数を生成しようとするためです。受信した XML の文字列からこれらのオブジェクトを生成できない場合、それらは明らかに無効であり、例外がスローされます。

tl;dr - はい、スキーマを検証できますが、おそらく行う価値はありません。

于 2013-11-06T11:16:41.550 に答える