私は、ws請願を取得し、どのwを呼び出さなければならないかを選択し、それを呼び出し、応答を取得し、構文解析してクライアントに返すJava JWSで行われたWSディスパッチャーです。これを行うにはJava WS:モデルオブジェクトからElementNSImplを構築する方法は?
、私が呼ばれなければならないサービスの具体的な情報と私のサービスと別の部分に関連する情報と一部で構成されるXMLを持っているので、2つのdiferentの呼び出しは次のようになります。
<petition>
<generic><servicename>ws1</servicename></generic>
<especific>.... whatever....</especific>
</petition>
<petition>
<generic><servicename>ws2</servicename></generic>
<especific>.... whatever needed for ws3....</especific>
</petition>
そして彼らの復帰。この私がモデルの「特定フィールド(両方請願と応答して)、ラベル@XmlAnyElement(偽= LAX)を使用してきたので、私のサービスでは、私はすべてのコールを取得を行うには
<return>
<generic><servicename>ws1</servicename></generic>
<specific><city>bilbao</city></specific>
</return>
<return>
<generic><servicename>ws2</servicename></generic>
<specific>
<person>
<name>Olof</name>
</person>
</specific>
</return>
JWSによって解析されない内部のもの(特定の部分)との「請願」として、私は私が呼ぶサービスからオブジェクトを取得するときに、この作品はよく
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {})
@XmlRootElement(name = "petition")
public class Petition{
....
@XmlAnyElement(lax=false)
private Object specific;
....
}
(Same for the response object.)
とリターン:私はマーシャラーを使用して呼び出され、彼が使用されなければならない特定のどのモデル知らせる各サービスの特定の部分でそれを解析しますそれは '特定の'フィールドのElementNSImplオブジェクトとして直接ですが、通常は解析する必要があります(通常、返される特定のオブジェクトは、返されるオブジェクトの同じタイプではありません)、私はそれを行うことができません。
この場合、新しいオブジェクト(返すタイプから)を作成し、取得した情報を入力してクライアントに返します。さて、私はそれを行うには、私は、サービスの特定のデータオブジェクトを設定し、それを返そうとしたが、WSはクライアントに何も返さない(長さ0のHTTP応答200)...
また、私が設定されている場合は、手動で、「NULL」のオブジェクトに対する応答の「具体的な」部分はよく整列化され、私のクライアントは、受信:
<response>
<generic><servicename>ws2</servicename></generic>
</response>
は、だから私はそれがElementNSImplを待っていますことを考えますしかし、JAXBにアノテートされたオブジェクトからビルドする方法はわかりません。