2017-05-17 12 views
0

JAX-WSとwsimportを使用してWebサービスクライアントを生成しました。Schematronに対してWebServiceメッセージを検証する

これは私のクライアントコードです:

URL url = new URL("http://localhost:9999/ws/processstuff?wsdl"); 
QName qname = new QName("namespace", "ProcessStuffImplService"); 
Service service = Service.create(url, qname); 
ProcessStuffInterface processStuffInterface = service.getPort(ProcessStuffInterface.class); 

ProcessStuffObject processStuffObject = new ProcessStuffObject(); 
//Web service call 
processStuffInterface.processStuff(processStuffObject); 

私は上記のWebサービス呼び出しを行う前に、与えられたSchematronルールに対してprocessStuffObjectを検証する必要があります。私はph-schematronのようなライブラリを見てきましたが、検証はFileなどのようなオブジェクトに対してしかできないようです。誰でも、私のProcessStuffObjectのように、JAX-WSで生成されたオブジェクトをSchematronのルールに対して検証する方法を知っていますか?

更新:
今私がph-のSchematronで検証することができFileオブジェクトにProcessStuffObjectを整列化しているが、これは本当に愚かな解決策のように思えます。

答えて

0

通常、JAX-WSはJAXBを使用してオブジェクトをXMLにマーシャリングし、ワイヤを介して送信し、受信したXMLをオブジェクトにアンマーシャリングします。 JAXB APIは、XMLなどのオブジェクトを透過的に処理するために、ファイル、文字列、バイト配列またはその他の中間表現に最初にマーシャリングする必要はありません。

必要なクラスはJAXBSourceです。それはthe javax.xml.transform.Source interfaceを実装し、オブジェクトとJAXBContextまたはMarshallerを提供することができます。そのようなインスタンスを取る変換や他のメソッドのソースとして、それを指定することができます。いくつかのph-schematronメソッドは、入力ソースとしてsuch as this oneを受け入れます。

SchematronファイルをXSLTにプリコンパイルする場合は、Java XML変換APIを使用して、ソースをトランスに供給するだけです。

関連する問題