使用createBackgroundTaskDialog执行异步任务时,控制台报错
BackgroundTask<Integer, Void> task = new UploadTask(fileRef.getFileName(), fileUtils.getStorageFilePath(fileRef.getPath()), this.organizationName);
dialogs.createBackgroundTaskDialog(task)
.withHeader("同步中")
.withText(fileRef.getFileName())
.withTotal(100)
.withShowProgressInPercentage(true)
.withCancelAllowed(false)
.open();
private class UploadTask extends BackgroundTask<Integer, Void> {
private final String title;
private final String filePath;
private final String tags;
public UploadTask(String title, String filePath, String tags) {
super(10, TimeUnit.MINUTES, CourseDetailView.this);
this.title = title;
this.filePath = filePath;
this.tags = tags;
}
@Override
public Void run(TaskLifeCycle<Integer> taskLifeCycle) throws Exception {
aliyunVodUtils.uploadVideo(title, filePath, tags, (videoId, playUrl) -> {
Course course = getEditedEntity();
course.setVideoId(videoId);
course.setVideoPlayUrl(playUrl);
}, (message) -> {
notifications.create("同步发生错误", message).withThemeVariant(NotificationVariant.LUMO_ERROR).show();
}, (bytes, total, percent) -> {
taskLifeCycle.publish(percent);
});
return null;
}
public void done(Void result) {
CourseDetailView.this.closeWithSave();
}
}
报错信息:
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Authentication is not set. Use SystemAuthenticator in non-user requests like schedulers or asynchronous calls.
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:na]
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[na:na]
at com.vaadin.flow.server.FutureAccess.get(FutureAccess.java:62) ~[flow-server-24.3.8.jar:24.3.8]
at com.vaadin.flow.server.VaadinService.runPendingAccessTasks(VaadinService.java:2085) ~[flow-server-24.3.8.jar:24.3.8]
at com.vaadin.flow.server.VaadinSession.unlock(VaadinSession.java:708) ~[flow-server-24.3.8.jar:24.3.8]
at com.vaadin.flow.server.VaadinService.ensureAccessQueuePurged(VaadinService.java:2047) ~[flow-server-24.3.8.jar:24.3.8]
at com.vaadin.flow.server.VaadinService.accessSession(VaadinService.java:2014) ~[flow-server-24.3.8.jar:24.3.8]
at com.vaadin.flow.server.VaadinSession.access(VaadinSession.java:1012) ~[flow-server-24.3.8.jar:24.3.8]
at com.vaadin.flow.component.UI.access(UI.java:561) ~[flow-server-24.3.8.jar:24.3.8]
at com.vaadin.flow.component.UI.access(UI.java:544) ~[flow-server-24.3.8.jar:24.3.8]
at io.jmix.flowui.backgroundtask.impl.BackgroundWorkerImpl$TaskExecutorImpl.handleProgress(BackgroundWorkerImpl.java:248) ~[jmix-flowui-2.2.3.jar:na]
at io.jmix.flowui.backgroundtask.impl.BackgroundWorkerImpl$TaskExecutorImpl$2.publish(BackgroundWorkerImpl.java:222) ~[jmix-flowui-2.2.3.jar:na]
at com.gense.ips.view.edu.course.CourseDetailView$UploadTask.lambda$run$2(CourseDetailView.java:182) ~[main/:na]
at com.gense.ips.util.AliyunVodUtils$ProgressListener.progressChanged(AliyunVodUtils.java:99) ~[main/:na]
at com.aliyun.oss.event.ProgressPublisher.publishByteCountEvent(ProgressPublisher.java:65) ~[aliyun-sdk-oss-3.10.2.jar:na]
at com.aliyun.oss.event.ProgressPublisher.publishRequestBytesTransferred(ProgressPublisher.java:49) ~[aliyun-sdk-oss-3.10.2.jar:na]
at com.aliyun.vod.upload.oss.OSSUploadOperation$Task.call(OSSUploadOperation.java:416) ~[aliyun-java-vod-upload-1.4.15.jar:na]
at com.aliyun.vod.upload.oss.OSSUploadOperation$Task.call(OSSUploadOperation.java:374) ~[aliyun-java-vod-upload-1.4.15.jar:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
Caused by: java.lang.IllegalStateException: Authentication is not set. Use SystemAuthenticator in non-user requests like schedulers or asynchronous calls.
at io.jmix.core.security.impl.CurrentAuthenticationImpl.getAuthentication(CurrentAuthenticationImpl.java:50) ~[jmix-core-2.2.3.jar:na]
at io.jmix.core.security.impl.CurrentAuthenticationImpl.getLocale(CurrentAuthenticationImpl.java:76) ~[jmix-core-2.2.3.jar:na]
at io.jmix.core.impl.MessagesImpl.getMessage(MessagesImpl.java:100) ~[jmix-core-2.2.3.jar:na]
at io.jmix.core.impl.MessagesImpl.formatMessage(MessagesImpl.java:136) ~[jmix-core-2.2.3.jar:na]
at io.jmix.flowui.impl.DialogsImpl$BackgroundTaskDialogBuilderImpl.updateProgress(DialogsImpl.java:1034) ~[jmix-flowui-2.2.3.jar:na]
at io.jmix.flowui.impl.DialogsImpl$BackgroundTaskDialogBuilderImpl$1.onProgress(DialogsImpl.java:1013) ~[jmix-flowui-2.2.3.jar:na]
at io.jmix.flowui.backgroundtask.impl.BackgroundWorkerImpl$TaskExecutorImpl.process(BackgroundWorkerImpl.java:256) ~[jmix-flowui-2.2.3.jar:na]
at io.jmix.flowui.backgroundtask.impl.BackgroundWorkerImpl$TaskExecutorImpl.lambda$handleProgress$720cdb40$1(BackgroundWorkerImpl.java:248) ~[jmix-flowui-2.2.3.jar:na]
at com.vaadin.flow.component.UI.accessSynchronously(UI.java:489) ~[flow-server-24.3.8.jar:24.3.8]
at com.vaadin.flow.component.UI$2.execute(UI.java:564) ~[flow-server-24.3.8.jar:24.3.8]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at com.vaadin.flow.server.VaadinService.runPendingAccessTasks(VaadinService.java:2082) ~[flow-server-24.3.8.jar:24.3.8]
... 18 common frames omitted
在此处键入或粘贴代码