2016-05-04 15 views
0

私は多くのWebサービスを管理しなければならず、クライアントとクライアントの中間に私のアプリケーションを入れなければなりません。クライアントが私に電話をかけ、サーバーを呼び出してクライアントに送信する。jaxbのオブジェクトの名前空間を変更する

リクエストとレスポンスの両方に 'エンベロープが定義されています:異なるがほぼ同じです。

としましょう:

<req xmlns="namespaceReq"> 
<req-data>..different info 1..</req-data> 
<info>...Info object...</info> 
</req> 

<resp xmlns="namespaceResp"> 
<resp-data>..different info 2...<resp-data> 
<info>...Info object...</info> 
</resp> 

だから私は、インフォオブジェクト - -aka要求と応答の間の共通クラスを共有したいです。私はリクエストのためのJavaパッケージをパッケージ名とReqとReq-dataクラスのネームスペースで行い、もう一つはレスポンスのために(パッケージ名のレスポンスのネームスペースを使って)、 RespとResp-dataクラス)、共通部分(Infoクラス)を保持するための別のパッケージを作成しましたが、問題があります...

共通のInfoオブジェクトを共有できるようにするにはどうすればよいですか要求と応答の両方に?

私はpackage-info.javaでリクエストの名前空間を置く場合は、要求のために動作しますが、私は応答を置けば、応答のために、それは要求のために動作するものではありません...

答えて

1

共通オブジェクトパッケージすべきです独自のXML名前空間を定義する...私はあなたがしようとしているコンフィギュレーションのようなものを行っているが、私は... XSDファイルから例のオブジェクトを生成:

XSDコモンズ:

<xs:schema 
    targetNamespace="http://xyz/commons" 
    xmlns:tns="http://xyz/commons" 
    elementFormDefault="qualified" 
    version="1.0" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:complexType name="InfoType"> 
    <xs:sequence> 
     <xs:element name="Address" type="xs:string" maxOccurs="1" /> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

XSDリクエスト:

<xs:schema 
targetNamespace="http://xyz/requests" 
xmlns:tns="http://xyz/requests" 
xmlns:commons="http://xyz/commons" 
elementFormDefault="qualified" 
version="1.0" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
> 
    <xs:import namespace="http://xyz/commons" schemaLocation="commons.xsd" /> 

    <xs:element name="Request" type="tns:RequestType" /> 

    <xs:complexType name="RequestType"> 
    <xs:sequence> 
     <xs:element name="info" type="commons:InfoType" /> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 
+0

ありがとうございます。サービスを呼び出すときに問題が発生し、モデルに応答をバインドしようとしましたが、私のものではないためサービスを変更できません。問題は、その共通のパッケージを持っていないため、自分の応答を私のモデルにバインドすることにあります。 : 私はしたいと思っているとは考えていません....そうではありません... – inigoD

+0

これはちょうどアイデアです(私は前にそれを試していない)が、 –

+0

あなたのサービスオブジェクトを独自のオブジェクト名前空間に拡張する(継承する)ことができるかどうかを確認してください。 –

関連する問題