2017-05-31 5 views
0

JAX-WSを使用してWebアプリケーションを作成しようとしています。私の問題は非常に単純なようですが、解決方法を理解できません。 GETとPOSTリクエストで使用する必要があるクラス変数があります。たとえば、私はGETメソッドで「レスポンス」を開始し、POSTメソッドでそれを使用する必要がありますが、POST API /会話をjsから呼び出すと、「レスポンス」がnullのためエラーが発生します。変数の値を保存するにはどうすればよいですか?ここに私のコードは、問題のJavaクラスは、コンテナ管理BeanではないようですJAX-WSリクエスト間の変数を使用する

import javax.ws.rs.*; 

@ApplicationPath("api") 
@Path("conversation") 
public class Conversation { 
    private final String conversationWorkspace = "myworkspace"; 
    private final static String CONVERSATION_ID = "myid"; 
    private final static String CONVERSATION_PASS = "mypass"; 

private MessageRequest request; 
private MessageResponse response; 

private ConversationService service; 

@GET 
@Produces("application/text") 
public String getInitiatePhrase(){ 
    service = new ConversationService("2017-05-26", CONVERSATION_ID, CONVERSATION_PASS); 
    response = service.message(conversationWorkspace, null).execute(); //here response gets its value 

    return response.getText().get(0); 
} 

@POST 
@Produces("application/text") 
@Consumes("application/text") 
public String getBotAnswer(String userText){ 
    System.out.println("response " + response); 
    request = new MessageRequest.Builder().inputText(userText).context(response.getContext()).build(); //response must not be null 
    response = service.message(conversationWorkspace, request).execute(); 

    return response.getText().get(0); 
} 

}

答えて

0

です。 GETメソッドとその後のPOSTメソッドを呼び出すと、Conversationクラスの2つのインスタンスが作成されます。したがって、クラスフィールド応答は、2回目のPOST呼び出しではnullになります。

この問題を解決する方法は複数あります。しかし、取るべきアプローチは質問に答えることによって決まります。サービスは本当に2つの別々のクライアント要求を認識しなければなりませんか?クライアントがGETコールを1つ作成し、それに続くPOSTに必要な情報を提供する必要があります。

I 2、3または4のいずれか(2、3及び4は、ちょうどそれらが異なる仕様/フレームワークである類似している)を使用する正当な理由がない限りアプローチ1は、以下に述べる使用する

  1. は使用バネセッションが(Beanのスコープ
  2. クライアントがGETの応答をキャッシュし、CDIのセッションを使用してEEステートフルセッションBean(http://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html
  3. を使用してPOSTリクエスト
  4. バック必要な情報を送信するには、(http://docs.oracle.com/javaee/6/tutorial/doc/gjbbk.html)Beanをスコープ
  5. http://springinpractice.com/2008/05/08/session-scoped-beans-in-spring/ https://tuhrig.de/making-a-spring-bean-session-scoped/
+0

私は1つのアプローチを使用しました。ありがとうございました! – Tanya

関連する問題