2

私は多くのことを行うWebサービスを持っています。それができることの簡単な例(例だけに注意してください):

  • 製品の返品リスト
  • 製品価格を更新する
  • 新製品を追加する
  • 既存の製品を更新する
  • 返品価格
  • 返品パンフレット+画像
  • 製品パンフレット+画像を追加

最初の5つのサービスは、リクエストがSOAP Webサービスに送信され、リストを返すか、データベース内の既存の行を更新するか、新しい行を作成するという点で非常に単純です。

最後の2つは、バイナリファイルをサービスに送信し、サービスからバイナリファイルを受信するという点で少し注意が必要です。

サーバー側にSOAPサービスを実装しても問題ありません。私はすでにフレームワークを用意していますが、今はサービスを実装する必要があります。私が問題を抱えているのは、これらのサービスを消費するクライアントを実装する方法です。

私はSOAPクライアントについて読んでいて、ファイルをSOAP添付ファイルとして送信できることを知っていますが、これがどのようにHTTPリクエストに変換されるのかよくわかりません。

質問:

  • クライアントをWebポータルにしたいのですが、WebブラウザからWebサービスを呼び出す方法がよくわかりません。これは可能ですか?
  • ブラウザからのWebサービス呼び出しはどのように機能しますか?通常のHTTP呼び出しですか?
  • そして最も重要なのは、バイナリファイルのアップロード/ダウンロードはどのように機能するのでしょうか?
  • リクエストを保護するという点で、どちらがより安全ですか?Webポータルベースのクライアントまたはシッククライアントベースのクライアント?
  • Webポータルまたはシッククライアントの代わりにJavaWebStart / JNLPを使用することに利点はありますか?
  • バイナリデータ転送のために、WebポータルとWeb Startを組み合わせて使用​​することはできますか?
  • Webポータル(つまり、Webブラウザー)からWebサービスを呼び出すのが一般的な方法ですか?

私が思うもう1つの方法は、クライアントをシッククライアント(デスクトップアプリケーション)として実装することです。これに伴う問題は、GUISwingベースのアプリケーションの経験がないことです。

ソリューションの重要な側面の1つは、セキュリティで保護する必要があるため、どのアプローチを使用する場合でも、証明書を使用してセキュリティで保護する必要があることです。サービスの大部分は、Springテクノロジーを使用して実装されます。私はWebサービスにSpring-WSを使用していますが、Webポータルとして実行できる場合はおそらくSpring-MVCを使用します。

WebサービスとWebアプリケーションは両方とも同じアプリケーションサーバーで実行されます。

4

1 に答える 1

2

「クライアントをWebポータルにしたいのですが、WebブラウザからWebサービスを呼び出す方法がよくわかりません。これは可能ですか?」

wsがHTTPをサポートしている場合(以下を参照)、理論的にはブラウザからサービスにリクエストを送信できますが、サービスメソッドによって返される非プリミティブ型をどのように処理しますか?たぶん、RESTfullサービスも見ておく必要があります。

「ブラウザからのWebサービス呼び出しはどのように機能しますか?通常のHTTP呼び出しですか?」

これは、使用しているWebサービスの実装によって異なります。いくつかのWebサービス、つまりHessian&BurlapまたはSpring HttpInvokerは、httpトランスポートをサポートしているものもあります。呼び出しは、追加のパラメーターと添付ファイルを持つ通常のhttp urlになります(httpのpostメソッドがhttp Webサービスにアクセスする一般的な方法だと思います)。

「そして最も重要なのは、バイナリファイルのアップロード/ダウンロードはどのように機能するのでしょうか?」

これも状況によって異なります。最近、 Hessianを使用してファイルをアップロードしようとしましたが、ファイルサイズが一定の制限(約30MB程度)に達すると失敗しました。フォーラムのエントリによると、これはヘッセンのシリアル化戦略が原因であるとのことですが、解決策が見つかりませんでした。あなたのwsがMTOMをサポートしているかどうかを確認してください。CXFのように、これでアップロードが機能しました。cxfホームページにも画像をアップロードする例があります。

「要求の保護に関して、どちらがより安全ですか?Webポータルベースのクライアントまたはシッククライアントベースのクライアントですか?」

どちらのクライアントタイプもサーバーとの間でデータを送受信しているため、接続を保護する必要があります。シッククライアント(セキュリティトークンと信頼ポリシーのほかに)を使用すると、顧客を認証するためにカスタムログイン機能も必要になる場合があります。したがって、最終的には、標準のhttpログインが適切に実装されていない場合にも、非常に安全でない可能性があることを知っているように、重要な手法を正しく使用することが重要です。

「Webポータルまたはシッククライアントの代わりにJavaWebStart / JNLPを使用することに利点はありますか?」

WebStartを使用すると、カスタムクライアントと少なくとも1つのページまたはサーブレットを構築する必要があります。これは、カスタムクライアントの自動ダウンロード/インストール/アップグレードの手法です。

「バイナリデータ転送のために、WebポータルとWeb Startを組み合わせて使用​​することはできますか?」

もちろんそうだ。Springを使用している場合は、クライアントがまったく同じ機能にアクセスできるようにするのは非常に簡単です。プレーンロジックをサービスファサード(@Service)に追加するだけです。次に、MVCコントローラー(@Controller)を使用してブラウザーのサポートを追加し、ServiceExporterを使用してwsのサポートを追加ます。

「Webポータル(つまり、Webブラウザ)からWebサービスを呼び出すのは一般的な方法ですか?」

そうではないと思います。RESTサービス以降を参照してください。

「...これに関する問題は、GUISwingベースのアプリケーションの経験がないことです。」

これは問題になる可能性がありますが、SwingアプリケーションはNetBeansのグラフィカルエディタを使用して簡単に構築できます。

「...どのアプローチを使用する場合でも、証明書を使用してセキュリティで保護する必要があります。サービスの大部分は、Springテクノロジーを使用して実装されます。」

そのためには、SpringSecurityをご覧ください。これは、多くのニーズとうまく統合されます。

私が助けることができることを願っています。

于 2012-04-19T20:28:51.657 に答える