使用实用程序函数post调用实现Java Runnable
我有一个工作项目,在这个项目中,我让多个线程调用我创建的实用程序函数,该函数将post表单发送到我们拥有的内部API 我在这里使用使用实用程序函数post调用实现Java Runnable,java,multithreading,jenkins,javax,javax.ws.rs,Java,Multithreading,Jenkins,Javax,Javax.ws.rs,我有一个工作项目,在这个项目中,我让多个线程调用我创建的实用程序函数,该函数将post表单发送到我们拥有的内部API 我在这里使用callAPI方法,该方法在实用程序类中,是公共的、最终的和静态的: public static int callAPI(String url, TaskListener listener, String operation, String id, String password, String sUser){ Client client = Clien
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类中有这个run方法:
@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循环
您是否尝试运行
thread.join()
,等待线程完成?(运行thread.start()
)后,它可能会引发异常。尝试在那里放置一个Try-catch。@a.Pahlavan我实际上使用的是Jenkins Executor服务,而不是以那种方式启动线程。我可以查看它是否有一些相关信息。@RobinGreen响应行中是否有异常?我将在那里尝试捕获我知道线程正在运行def,但是如果需要,我还可以找出如何使用executor服务捕获异常。您是否尝试调试此代码?