2

複数の外部 Web サービスへの統合を作成する必要があります。それらのいくつかはSOAP(WSDLを持っています)、いくつかはかなりアドホックです-HTTP(s)、基本認証またはURLのパラメーターによる認証(!)、実際にはドメインクラスにうまくマップされないXMLのような自然言語..

今のところ、Spring Web 3.0RestTemplateを使用してスパイク統合を行い、JAXB2 を使用してバインディングを行いました ( Jaxb2Marshaller)。ドメイン クラスは XML よりもクリーンである必要があるため、何らかのバインディングが必要です。

効きますが、ちょっと気持ち悪いです。明らかに、これは部分的にサービスがどのように構築されているかという理由によるものです。そして、私が抱えている小さな問題の 1 つはRestTemplate、サービスは REST とは関係がないため、名前を付けることです。これは私が一緒に暮らすことができます。ただし、JAXB2 は少し重く感じます。

だから、私はいくつかの他の選択肢を探しています。アイデア?私は単純な解決策を持ちたいです(RestTemplateで問題ありません)。あまりにもエンタープライズではありません..

4

2 に答える 2

1

While some of your services may be schemaless XML, they will still probably have a well-documented API. One of the techniques that the Spring folks seem to be pushing, at least from the web-service server side, is to use XPath/XQuery for retrieving only the information you really need from a request. I know that this may only end up being part of your solution, but I'm not sure that this is a situation where one particular binding framework is going to meet all your needs.

于 2011-08-19T13:46:14.117 に答える
1

私の理解が正しければ、さまざまな技術を使用してさまざまな外部 (Web) サービスを呼び出す必要があるアプリケーションが 1 つあります。最初に頭に浮かぶのは、中級レベルを持っていることです。これは en ESB ソリューションと同じくらい精巧なものかもしれませんが、私の推測では、それはあなたが探しているものではありません。

たとえば、クラス階層の最上位にインターフェイス「Consumer」を配置することで、この中間レベルを実現できます。実装するメソッド: doConsume() など。

調べてみると、ストラテジーやテンプレートなどのいくつかのデザイン パターンを利用する機会がおそらくあるでしょう。積極的になることを忘れずに、「もしも..」と数回尋ねるようにしてください (例: 彼らが私に別のサービスを利用する必要があるとしたら? など)。

JAXB が重すぎると感じる場合は、他の API を見つける必要があります。

どちらが良いかは状況によって異なります。それらのいずれかで問題が発生した場合は、SOでここで助けを見つけることができると確信しています(そして、私よりもそれらを実際に使用した経験がある人から;-)

于 2011-08-19T13:21:32.297 に答える