0

我有一个工作项目,我有多个线程调用我创建的实用程序函数,该函数将发布表单发送到我们拥有的内部 API。

我在callAPI这里使用实用程序类中的方法,它是公共的、最终的和静态的:

public static  int callAPI(String url, TaskListener listener, String operation, String id, String password, String sUser){
      Client client = ClientBuilder.newClient();



      Form form = new Form();
      form.param("case", id);
      form.param("user", sUser);
      form.param("password", password);
      listener.getLogger().println("*******************************************************");
      listener.getLogger().println("Sending API Service Request");

      Response response = client.target(url)
              .path(operation)
              .request(MediaType.APPLICATION_JSON)
              .post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));


  }

然后我在我的 Runnable 类中有这个运行方法:

  @Override
  public void run(){

       listener.getLogger().println("Thread Started.\n");

       int runId = Utility.callAPI(wUrl, listener, operation, password, sUser);

       listener.getLogger().println("call completed");
  }

那么在 Jenkins 控制台输出中实际打印的内容是:

*******************************************************
Sending API Service Request
Thread Started.

这意味着我知道我的run()方法正在被调用,所以我的线程正在启​​动。我知道它可以runAPI在实用程序中看到我的方法。

现在我只能收集到这一行:

 Response response = client.target(url)
                  .path(operation)
                  .request(MediaType.APPLICATION_JSON)
                  .post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));

发送一个请求,线程在完成其余方法之前从那里退出run()

我试过了:

  • 放置一个线程睡眠循环
  • 将调用置于while循环中

自从我完成任何 Java 编程或线程以来已经有一段时间了。这是一件非常简单的事情,我知道我忘记了。

此外,我已经更改了很多代码,并且只显示了关键部分是工作项目的一部分,我不想冒险。

4

0 回答 0