2016-12-07 10 views
0

私は2つのウェブサービスまたはエンドポイントにそれぞれ1つのメソッドを持ち、各メソッドは1つのURLにマップされています。私はRESTクライアントから1つのwebservice URLを呼び出しています。このメソッドでは、URLにマップされている別のWebサービスでメソッドを呼び出す必要があります。これはどのようにしてCXfのApacheで実現できますか?同じ戦争の別のWebサービスからwebserviceを呼び出す - apache cxf

私はHttpClientを使って別のWebサービスを呼び出そうとしましたが、完全なURLを使用して302コードを取得しても、404を取得していますが、相対URLを使用すると応答はありません。問題とは何か、正しいアプローチは何ですか?

+0

302は、エラーコードではありませんコントローラBからコントローラAの方法toCallを呼び出したい

@RestController @RequestMapping("/a") public class A{ @RequestMapping(...) public void toCall(){ //your code } } 

を必要とするすべての注釈を持つ2つの次のコントローラを持っています。 2つのサービスが同じ戦争にある場合、なぜあなたはWebサービスに行きますか?高価なもののように聞こえる –

+0

Davidに感謝します。だから私は他のエンドポイントに電話をかけるのですか?他のクラスのインスタンスを作成してメソッドを呼び出せますか?たとえば、認証用のサービスと操作用のサービスです。今オペレーションサービスが呼び出されると、私は最初に認証して操作を行いたい。 – user7185698

+0

@ user7185698ただ他のエンドポイントにエンドポイントインスタンスを挿入するだけです。あるいは、ビジネスロジックを持つオブジェクトを定義し、それを両方のエンドポイントに注入します。これはCXFの問題ではありません。あなたがスプリングの設定やアノテーションを使ってエンドポイントを定義していて、インスタンスがどこにあるのかわからない場合は、人々があなたにアドバイスできるようにコードを表示してください – pedrofb

答えて

1

httprequestを使用せずに他のコントローラを直接呼び出そうとすることができます。 は、たとえば、あなたはあなたが

@RestController 
@RequestMapping("/b") 
public class B{ 
    @RequestMapping(...) 
    public void method(){ 
     A a = new A(); 
     a.toCall(); 
    } 
} 
+0

私の質問はtoCall()メソッドはqueryparamと生データを入力として受け取りますこれはa.toCall()から管理できますか? – user7185698

+0

メソッドのパラメータのように引数を直接toCall(param1、param2、...)に置きます。 – nassim

関連する問題