Playframework Ning WS и поток
У меня есть простой метод Java для загрузки файла с локального диска в удаленный веб-сервис, и он отлично работает в классе контроллера.
Теперь я переместил этот метод в отдельный класс. Я пытаюсь вызвать этот метод из потока:
public void run(){
while (true){
System.out.println("Geting next Task for processing ...");
try {
CommonUtils.uploadVideo(32);
Thread.sleep(20000);
} catch (InterruptedException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Inject
static
WSClient ws;
synchronized static void uploadVideo(int taskId) throws InterruptedException, ExecutionException, IOException {
....
....
...
com.ning.http.client.AsyncHttpClient underlyingClient = (com.ning.http.client.AsyncHttpClient) ws.getUnderlying();
final String response;
response = underlyingClient.preparePost("http://192.16.10.125:9001/publish").
setHeader("watermark", "0").
addBodyPart(new FilePart("file", file)).execute().get().getResponseBody().toString();
}
И я получил ошибку:
Exception in thread "Thread-8" java.lang.NullPointerException
at utils.CommonUtils.uploadVideo(CommonUtils.java:308)
at utils.TaskRunner.run(TaskRunner.java:88)
at java.lang.Thread.run(Unknown Source)
Что случилось? Является ли проблема асинхронного вызова веб-службы?