ben*_*y23 7 java sockets spring tcp
我正在通过TCP连接(而不是HTTP)阅读和编写XML作为我正在开发的Web服务的一部分,我想知道是否有一种更"弹性化"的方式(甚至是其他想法)来实现我的目标尝试下面:
InputStream is = null;
OutputStream os = null;
Socket s = null;
try {
s = new Socket(address, portNo);
os = s.getOutputStream();
os.write(msg.getBytes());
os.flush();
is = s.getInputStream();
String xml = IOUtils.toString(is);
return xml;
} finally {
IOUtils.closeQuietly(os);
IOUtils.closeQuietly(is);
if (s != null) s.close();
}
Run Code Online (Sandbox Code Playgroud)
注意,我无法控制服务器,因此我认为我不能使用Spring远程处理,但是想知道这是否可以改进,类似于spring的JdbcTemplates.
编辑:
注意,只是为了澄清IOUtils是Apache commons-io ...
我有一个类似的问题,想到使用Spring Integration,听起来非常适合我:
请注意,Spring Integration 2.0构建于Spring 3.0之上,而之前的1.0版本也支持Spring 2.x(但不包括TCP/UDP适配器).
看一下WebServiceTemplate。这是 Spring 为客户端 Web 服务访问提供的主要抽象。即使您的服务器不是典型的 Web 服务,只要它使用相同的请求-响应模式,您仍然可以将其用作解决方案的基础。该类为通信的几乎每个部分(编组、发送请求、接收响应、解组等)提供了钩子。JavaDoc 列出了执行 Web 服务调用所需的所有步骤,您可以覆盖其中的几乎所有内容。因此,例如,您可以使用内置的编组支持,但可以覆盖createConnection以构建自定义 TCP 连接。