【发布时间】:2014-11-13 22:21:42
【问题描述】:
我正在编写一个网络应用程序,我想用它来执行 FTP 任务(下载)
我在 Tomcat 中安装了 Apache FTPS 服务器和一个准备启动传输的 Java 客户端。
客户端将被 Servlet 调用。
例如:
http://laptop:8080/MyServlet?action=download&from=desktop&file=C:/home/fred/file.xml
会告诉我的 laptop 上的实例从我的 desktop 下载 file.xml。
编辑: 抱歉,我从来没有说得很清楚。
这个过程的两端都会有一个 FTP 服务器。 1 在我的远程笔记本电脑上,1 在我的本地桌面上。所以简而言之,我正在向远程端的 Servlet 提交一个 FTP 'get' 请求。然后 Servlet 启动一个 FTP 进程来拉取文件。
我的 Servlet 已全部设置为接收 GET 参数并完成工作。
如果文件很大,那么每个请求都需要很长时间才能完成。我希望尽快释放 Servlet 资源。
理想情况下,我希望发生以下事情:
- 用户向 Servlet 发送 URL
- Servlet 消化 URL 并计算出什么文件和来自哪里等等......
- Servlet 将信息传递给线程
- Servlet 返回“进行中”消息
- 请求完成
- 线程仍在后台下载文件
此时我不太关心 Servlet 是否知道线程是否成功,我只需要它启动一个并忘记它。 FTP 进程将在其他地方单独记录任何问题。
我对在 WebApp 中创建 Threadpool 并从那里获取线程的概念很感兴趣,但是我发现的所有示例都是旧的,并不能真正满足我的理解水平。
StackOverflow 上有一些类似的问题,这与我所要求的最相似,但它只是暗示了一些我事先不知道的 ExecutorService。我将如何在 WebApp 中进行设置? What is recommended way for spawning threads from a servlet in Tomcat
有关信息, 我对此进行了研究,并发现了许多不完整的示例,这些示例需要比我目前更好的理解,或者提示需要什么。 我读过的很多例子都是几年前的,不是最近的。我希望可能有一个神奇的单线来做我需要的一切(怀疑),这在过去一年左右出现了:) 我是 Java 中的线程概念的新手,我总体上了解线程,因此感谢您为我提供的任何帮助。
特雷弗
【问题讨论】:
-
你想使用标题中所说的HTTP协议(你所描述的)还是FTP协议(不同的协议和不同的端口)?
-
你好 Serge,我想使用 HTTP 来请求 8080 端口上的 Servlet,然后触发一个 FTP 进程,下载端口 21 上的文件。
标签: java multithreading tomcat servlets threadpool