java - 尝试使用 akka 流编码(marshal) jaxb 对象时出现空文件

标签 java jaxb akka-stream

我试图将 jaxb 对象编码为 xml 字符串,然后使用 akka Streams 将其写入文件,但执行后创建的文件为空。

我已经检查了编码(marshal)方法,但它在没有流的情况下工作正常。 请帮助我了解哪里有错误。

这是我的测试方法:

  @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();
    }

我期望在执行方法后 - 将创建带有编码 xml 的文件。

最佳答案

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

您必须“阻止”测试线程并允许异步流处理完成,然后才能终止 Actor 系统。

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

result.toCompletableFuture().get();

关于java - 尝试使用 akka 流编码(marshal) jaxb 对象时出现空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58137700/

相关文章:

java - Android - LayoutInflater - 无法使 TextView 保持在另一个 TextView 下方

java - Access 数据库中的 "Bookmark not valid"错误

java - 解析 XML 以获取深层嵌套数据

java - 使用 JAXB 将 XML 解码为 Iterable<Long>

scala - Akka Streams Unzip/Zip 是否保留顺序?

java - 执行器 - 如果安全性被禁用,则仅提供状态信息

java - Android 前台服务通知不持久

java - 使用 JAXB 编码(marshal)时出现内存不足错误

scala - Akka/斯卡拉 : Can You Explain What's Going On in this Akka Streams Flow?

mysql - 如何在 Slick 中使用 react 流来插入数据