我编写了一个非常简单的服务器,它接受特定端口上的套接字连接 并通过该套接字与客户端通信。 现在我有一个客户端库,它在J2SE应用程序中运行得非常好。
但是,如果我尝试在Servlet(作为客户端的Servlet)中使用该lib与服务器通信,则它不起作用。 不幸的是,没有例外或可以帮助我的东西。 相反,当使用lib时,没有任何反应。 这是对打开套接字的方法的调用,只是无限期地阻塞 虽然没有与服务器建立连接。
我认为这可能是一个普遍问题。 也许Servlet中不允许这样的事情? 但即使不是,我至少也会期待抛出一些异常。
顺便说一下,Servlet容器是Tomcat。
有没有人知道为什么这不起作用?
答案 0 :(得分:0)
好的,这里有实际问题:
这似乎是Windows和Linux之间的行为差异。 我在Linux下开发了server + lib,而Tomcat在Windows机器上运行。
我告诉你的服务器执行命令等等 通过ProcessBuilder。 实际上无限期阻止的是Process#waitFor。
这是在Windows下。在Linux下,它工作正常,并在过程完成后立即返回。 但在Windows下,当我因某种原因读取Process的InputStream时,Process#waitFor仅返回。
抱歉!