Java 尝试使用akka流封送jaxb对象时为空文件

Java 尝试使用akka流封送jaxb对象时为空文件,java,jaxb,akka-stream,Java,Jaxb,Akka Stream,我试图将jaxb对象封送到xml字符串,然后使用akka Streams将其写入文件,但在执行之后,创建的文件是空的 我已经检查了封送处理方法,但它在没有流的情况下运行良好。 请帮助我了解哪里有错误 这是我的测试方法: @Test public void singlePojoTest() { ActorSystem actor = ActorSystem.create(); Materializer materializer = ActorMateri

我试图将jaxb对象封送到xml字符串,然后使用akka Streams将其写入文件,但在执行之后,创建的文件是空的

我已经检查了封送处理方法,但它在没有流的情况下运行良好。 请帮助我了解哪里有错误

这是我的测试方法:

  @Test
    public void singlePojoTest() {
        ActorSystem actor = ActorSystem.create();
        Materializer materializer = ActorMaterializer.create(actor);
        //Creating and initializing of JAXB POJO
        AuditFile.Header header = new AuditFile.Header();
        initHeader(header,calendar);
        // useMarshaller - is converting object to xml String
        Flow<Object,String,NotUsed> flow = Flow.of(Object.class).map(o -> useMarshaller(o));
        Source<String,NotUsed> source = Source.single((Object)header).via(flow);
        CompletionStage<IOResult> result = source.map(string -> ByteString.fromString(string)).runWith(FileIO.toPath(Paths.get("test.txt")),materializer);
        actor.terminate();
    }
@测试
public void singlePojoTest(){
ActorSystem actor=ActorSystem.create();
Materializer Materializer=ActorMaterializer.create(actor);
//JAXB POJO的创建和初始化
AuditFile.Header Header=新的AuditFile.Header();
initHeader(头,日历);
//useMarshaller-正在将对象转换为xml字符串
Flow=Flow.of(Object.class).map(o->usemashaller(o));
Source Source=Source.single((对象)头)。via(流);
CompletionStage result=source.map(string->ByteString.fromString(string)).runWith(FileIO.toPath(path.get(“test.txt”)),物化器);
actor.terminate();
}

我希望在执行方法之后,将创建包含封送xml的文件。

您正在调用
actor.terminate()在启动流后立即执行,无需等待流完成

在终止actor系统之前,必须“阻塞”测试线程,并允许异步流处理完成

在关闭actor系统之前应用以下内容

result.toCompletableFuture().get();

您正在调用
actor.terminate()在启动流后立即执行,无需等待流完成

在终止actor系统之前,必须“阻塞”测试线程,并允许异步流处理完成

在关闭actor系统之前应用以下内容

result.toCompletableFuture().get();