我编写了一段 Java 代码,它获取一个字符串作为参数并调用一些 R 脚本来运行,脚本将生成一个 .PNG 文件(这是服务的结果)。我应该将其公开为 Web 服务,然后它将被网站(作为服务客户端)使用。
谁能给我一些指示如何做到这一点?有没有教程可以做到这一点?
我编写了一段 Java 代码,它获取一个字符串作为参数并调用一些 R 脚本来运行,脚本将生成一个 .PNG 文件(这是服务的结果)。我应该将其公开为 Web 服务,然后它将被网站(作为服务客户端)使用。
谁能给我一些指示如何做到这一点?有没有教程可以做到这一点?
这与设计一个接收任何输入并返回任何输出的 Web 服务没有太大区别。这里唯一的区别是您将返回二进制数据,而不是文本数据。
如果要返回二进制数据,则 Java 方法的返回值应该是字节数组 ( byte[]
)。从 R 脚本中获取png
文件后,将其完全读入字节数组并返回该数组。
当您在此 Java 代码之上生成 Web 服务层时,将为您生成将二进制数据转换为文本格式的“胶水”代码。
png
文件未立即完成的问题与 Web 服务无关。您的 Java 代码调用 R 脚本,等待它完成,然后将文件读入字节数组。只要 Web 服务客户端愿意等待整个周期结束,就没有问题。只需确保使用正确的超时设置配置Web 服务客户端即可。
我以前没有这样做过,但是您可以将 .png 文件输出到 byte[],然后使用Apache Commons 中的 Base64 类将其转换为 String 并在 XML 响应中返回。