我正在尝试使用JAX -WS进行Web应用程序。我的问题似乎很简单,但我无法理解如何解决它。我有类变量,我需要在GET和POST请求中使用这些值。例如,我在GET方法中启动'响应',然后我需要在POST方法中使用它,但是当我从js调用POST api / conversation时,我收到错误,因为'response'仍为null。如何为变量保存价值?这是我的代码
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 :(得分:0)
有问题的Java类似乎不是容器托管bean。当您对GET和随后的POST方法进行休息服务调用时,会创建两个单独的Conversation类实例。因此,在第二次POST调用中,类字段响应将为null。
有多种方法可以解决这个问题。但是,采取的方法取决于回答问题:服务是否真的应该知道两个单独的客户请求?或者客户端应该进行一次GET调用,然后为后续的POST提供所需的信息。
我会使用下面提到的方法1,除非有充分的理由使用2,3或4.(2,3和4类似,只是它们是不同的规范/框架)