仕様:-サーバー:Weblogic9.2はお客様によって修正されました。-顧客によって修正されたwsdlおよびxsdファイルによって定義されたWebサービス。変更は許可されていません。
やあ、
このプロジェクトでは、メールシステムを開発する必要があります。これは、Webサービスで一般的な作業を行う必要があります。ルート以外のxsd要素(wsdlではない)から自動生成されたクラスを受け取るBeanを作成します。このBeanはこの一般的な作業を行います。メールシステムは、xsdファイルで定義された要素を含むxmlを受信し、この要素情報をwsdlcで生成されたクラスにドロップする必要があります。このオブジェクトを使用すると、このインゲンマメを使用できます。メールリクエストをWebサービスにリダイレクトすることはできません。
WL9.2リソースでこれを行うためのコードを探しましたが、何も見つかりませんでした。現時点では、このアンマーシャリングにJAXBを使用しようとしました。
JAXBContext c = JAXBContext.newInstance(new Class[]{WasteDCSType.class});
Unmarshaller u = c.createUnmarshaller();
WasteDCSType w = u.unmarshal(waste, WasteDCSType.class).getValue();
Waste変数はDOMElementオブジェクトです。ルートがXSDに含まれていないため、ルート要素ではありません。
まず、自動生成されたクラスに引数なしのコンストラクターを追加する必要がありました。問題ありません。これを解決し、最終的にエラーなしでxmlをアンマーシャリングしました。しかし、属性に問題がありました。アンマーシャリングは属性を設定しませんでした。単純な属性でも、大きいまたは短い列挙属性でもない、どのクラスにもありません。どのタイプのxml要素でも問題ありません。
ObjectFactoryがwsldcによって作成されていないため、「コンテキスト文字列」(パッケージ名)からアンマーシャラーを作成することはできません。スキーマを設定すると、要素の説明が見つかりません。アンマーシャルがクラッシュします。
ビルドの内容は次のとおりです。
<taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask" />
<taskdef name="wsdlc" classname="weblogic.wsee.tools.anttasks.WsdlcTask"/>
<target name="generate-from-wsdl">
<wsdlc
srcWsdl="${src.dir}/wsdls/e3s-environmentalMasterData.wsdl"
destJwsDir="${src.dir}/webservices"
destImplDir="${src.dir}/webservices"
packageName="org.arc.eterws.generated"
/>
<wsdlc
srcWsdl="${src.dir}/wsdls/e3s-waste.wsdl"
destJwsDir="${src.dir}/webservices"
destImplDir="${src.dir}/webservices"
packageName="org.arc.eterws.generated"
/>
</target>
<target name="webservices" description="">
<jwsc srcdir="${src.dir}/webservices" destdir="${dest.dir}" classpathref="wspath">
<module contextPath="E3S" name="webservices">
<jws file="org/arc/eterws/impl/IE3SEnvironmentalMasterDataImpl.java"
compiledWsdl="${src.dir}/webservices/e3s-environmentalMasterData_wsdl.jar"/>
<jws file="org/arc/eterws/impl/Ie3SWasteImpl.java"
compiledWsdl="${src.dir}/webservices/e3s-waste_wsdl.jar"/>
<descriptor file="${src.dir}/webservices/META-INF/web.xml"/>
</module>
</jwsc>
</target>
私の質問は次のとおりです。
- WeblogicはどのようにJAX-RPC技術を使用してxmlを「アンマーシャル」し、xsd要素を使用して同じことを実行できますか?
- はいの場合、どうすればこれを行うことができますか?
- そうでない場合、この問題に対する複雑ではない解決策はありますか?
- そうでない場合は、XMLBean技術を使用する必要があります。または、JAXB技術を使用してXSDを再生成します。最善の解決策は何ですか?
注:実際には、単一のxsdではなく、複雑なxsd構造があります。