1

派手なツールを使用せずに単純なWebサービスJAX-WSをいじっています(CXFやMetroなどを使用していません)

JDK 1.6.x が提供する組み込みサポートを使用して、この Web サービスを作成しています (JDK 6 の JAX-WS RI 2.1.6 )。

私の質問 - Web サービスに検証を導入したいので、「@SchemaValidation」を使用すると思いました

インポートも試みましたが、コードのコンパイルに失敗しました

私のコードのスナップショット:

package com.mkyong.ws;
import javax.jws.WebService;
**import com.sun.xml.ws.developer.SchemaValidation;**


@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")
**@SchemaValidation()**  
public class HelloWorldImpl implements HelloWorld{

コンパイル中に例外が発生します:

javac com\mkyong\ws\HelloWorldImpl.java
com\mkyong\ws\HelloWorldImpl.java:3: package com.sun.xml.ws.developer does not exist
import com.sun.xml.ws.developer.SchemaValidation;
                           ^
com\mkyong\ws\HelloWorldImpl.java:8: cannot find symbol
symbol: class SchemaValidation
@SchemaValidation()
^
2 errors

私の質問は、RI の JDK1.6 実装でこの注釈を使用できないかということです。クラスパスに特別な jar をインポートする必要がありますか? ありがとう、サティシュ

4

3 に答える 3

1

JarFinderによると:

http://www.jarfinder.com/index.php/java/info/com.sun.xml.ws.developer.SchemaValidation

  • jaxws-rt-2.1.4.jar
  • jaxws-rt-2.1.3.jar

編集- その注釈が正確に何に使用されているかはわかりませんが、

  1. Unmarshallerクラスを使用して XML ペイロードを検証するために JAXB (したがって JDK 1.6 のみ) を使用することができます。をご覧くださいUnmarshaller.setSchema()。いくつかの例もあります。必要な場合はお知らせください。
  2. 注釈の名前空間から判断すると、それは内部の何かのように見えます ( com.sun.xml...)
于 2012-12-31T13:09:52.547 に答える
0

JDK に同梱されているアノテーションを使用する場合は、サービス実装 Bean@SchemaValidationのパッケージから使用します。com.sun.xml.internal.ws.developer.SchemaValidationただし、このパッケージの注釈を使用して問題が発生した例を少なくとも 2 つ見たことがあります。

使用しようとしている注釈は、com.sun.xml.ws.developer.SchemaValidationパッケージ内の Glassfish の JAX-WS RI にバンドルされているため、代わりにそれを使用する場合は、プロジェクトのクラスパスに含める必要があります。

于 2013-01-01T17:44:49.280 に答える
0

wsdlの使用を検討してみてください。wsdl では、あらゆる種類の検証を追加できます。wsdl の検証規則は、Web サービスの実装に使用する言語に依存しません。

于 2012-12-31T12:26:29.333 に答える