如何从托管在 Pivotal Cloud Foundry 中的 Java 应用访问 Windows NAS 文件共享

How To Access Windows NAS File Share From Java App Hosted In Pivotal Cloud Foundry

我们有一个 Windows 与 JPEG 的文件共享,我正尝试通过 Java Spring Boot REST API 从 Pivotal Cloud Foundry 访问它。 PCF 和 Java 本身需要哪些步骤才能实现这一目标?

是否必须先在 PCF 中安装驱动器,然后才能使用标准 java.io 库以某种方式访问​​此文件?截至目前,我们只是想将 JPEG 文件读入 BufferedImage 并 return 在进行一些图形处理后将它们作为 Base64(我知道该怎么做),但我一直在思考要做什么为此,在 PCF 领域内。显然,它在我的 Windows 开发机器上工作得很好,我的登录用户也有文件共享的凭据,不需要挂载它或做任何特殊的事情。

我一直在网上阅读有关 SMB 和 JCIFS 库的信息,但仍然不确定这是否是我所需要的,或者如何通过手头的技术充分应用它。

从 Pivotal Cloud Foundry 2.4 开始,您可以启用 SMB 批量服务。这允许您 cf create-service 指向您的 SMB 服务器的卷服务。然后您可以将其绑定到您的应用程序,当您的应用程序启动时,平台会将 SMB 卷安装到您指定的安装点。那时,您的应用程序只需要知道挂载点,例如 /smb/files,因此它可以使用标准 Java I/O 来读取文件。

如果您是平台运营商,启用 SMB 批量服务的说明在此处。

https://docs.pivotal.io/pivotalcf/2-4/opsguide/enable-vol-services.html#smb-enable

如果您是开发人员,请在此处查看使用说明。

https://docs.pivotal.io/pivotalcf/2-4/devguide/services/using-vol-services.html#smb


如果您使用的是旧版本的 PCF,或者您的运营商未启用此功能,那么您需要在您的应用中编写一些代码才能直接访问您的 SMB 卷。有多个库能够执行此操作(并且可能比此列表中的更多)。

  1. https://www.jcifs.org/
  2. https://github.com/hierynomus/smbj
  3. https://github.com/AgNO3/jcifs-ng

我不能推荐一个特定的,所以你需要评估并弄清楚哪一个适合你。

请记住,无论您选择什么,您都需要从 PCF 上的应用程序 运行 获得对 SMB 服务器的网络访问权限。这意味着 IP 需要可路由且不被防火墙阻止。如果您无法连接,您可能还想与您的平台运营商一起检查网络访问,并确保没有任何东西阻止连接(防火墙、应用程序安全组等)。

希望对您有所帮助!