2つのWebサービスとクライアントを使用して旅行代理店のインターフェースを提供するシステムを作成しています。利用可能なフライトをXML文書(スキーマに基づく)に格納し、オファーを取得したり、特定のフライトを予約する方法を提供するフライト予約Webサービスがあります。特定の通貨でユーザー価格を提供するために、フライト予約サービスと通貨換算サービスを利用する旅行代理店サービスもあります。その後、利用可能なフライトを表示および予約するために旅行代理店サービスを利用します。Webサービス/クライアント間でJAXBオブジェクトを渡す
私の問題は、フライト情報をフライト予約サービスから旅行代理店サービスまで、そしてその後はクライアントに提供することです。オファーリストに使用されるスキーマは、Webサービスとクライアントの両方で使用されます。オファーを含むXML文書は、OffersType
のオブジェクトになるようにフライト予約サービス内でアンマーシャリングされます。私はこのオブジェクトを旅行代理店に戻して、その上で操作を実行できるようにしてから、クライアントに返します。しかし、旅行代理店プログラムのメソッドにアクセスするときはflightbooking.OffersType
が返されますが、これはローカルOffersType
にキャストできません。これを行う方法はありますか?または、OffersType
の情報を使用する新しいOffersType
を作成する必要がありますか?
ですから、例えば、フライト予約Webサービス上:オファーはOffersType
のインスタンスであることと
@WebMethod(operationName = "getOffers")
public OffersType getOffers() {
try {
javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(this.getClass().getPackage().getName());
javax.xml.bind.Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
offers = (OffersType) unmarshaller.unmarshal(new java.io.File("\\resources\\CurrentOffers.xml")); //NOI18N
} catch (javax.xml.bind.JAXBException ex) {
// XXXTODO Handle exception
java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
}
return offers;
}
。その後
旅行代理店側:
private OffersType getOffers() {
OffersType ret = new OffersType();
flightbooking.FlightBookingWS port = service.getFlightBookingWSPort();
return port.getOffers();
}
が、返されるオブジェクトはflightbooking.OffersType
のインスタンスであると明らかにそれは、動作しません。
ショーあなたがこれまでに試したもののいくつかのコード。 – tobiasbayer
「OffersType」という2つのクラスがあります:1つはあなたの側にあり、もう1つは旅行代理店の側にありますか? – AlexR
はい、それぞれの端に1つ、OffersTypeという2つのクラスがあります。どちらも同じxsdに基づいています。サンプルコードでOPを編集しました。 – Bonnotbh