我有一个处理文件上传的Java servlet,但它驻留在JBoss的“intranet”实例中。它需要将文件写入JBoss的“internet”实例中的目录(在同一台机器上)。 Java servlet无法移动到其他实例。这是在Solaris盒子上的JBoss 4.2。
有没有办法让这种情况发生?可以存在两个实例都可以看到的共享文件夹吗?谢谢。
答案 0 :(得分:5)
如果目的是上传文件,您可以将文件放在任何可以看到的公共共享目录中(由相对文件名引用,或者到指定位置引用)。
如果您对文件存在潜在争用,通常处理的方式是将文件写入临时文件名,并在完成后重命名该文件。与编写文件不同,重命名是一种原子操作。
我在你的问题中没有看到实际沟通的必要性。为此,EJB或JMS在JBoss中是显而易见的选择,但如果你所做的只是共享文件,这似乎有点过分了。
编辑:我在这里假设您正在使用FileOutputStream / FileWriter等编写文件。在这种情况下,创建目录或文件共享的简单情况是运行相应JBoss实例的两个进程都具有权限。如果您不熟悉Unix文件管理和权限,那么serverfault.com是询问这些详细信息的正确位置。
答案 1 :(得分:1)
因此,您希望在通过网络连接的两台计算机之间传输文件。这里的关键字是FTP或网络驱动器。
你可以使用FTP(文件传输协议),它的名字就是这么说的。您可以使用Java,如果您愿意,我建议您Apache Commons Net FTPClient。然而,目标机器必须运行FTP服务器。您可以在每个FileZilla下使用。
或者,您可以在操作系统级别从源计算机中的目标计算机映射网络驱动器,然后将文件写入其中,就好像它是本地的一样。
希望这有帮助。