什么是Spring使用TCP连接的方式?

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 ...

Gre*_*gor 5

我有一个类似的问题,想到使用Spring Integration,听起来非常适合我:

请注意,Spring Integration 2.0构建于Spring 3.0之上,而之前的1.0版本也支持Spring 2.x(但不包括TCP/UDP适配器).


Rob*_*b H 1

看一下WebServiceTemplate。这是 Spring 为客户端 Web 服务访问提供的主要抽象。即使您的服务器不是典型的 Web 服务,只要它使用相同的请求-响应模式,您仍然可以将其用作解决方案的基础。该类为通信的几乎每个部分(编组、发送请求、接收响应、解组等)提供了钩子。JavaDoc 列出了执行 Web 服务调用所需的所有步骤,您可以覆盖其中的几乎所有内容。因此,例如,您可以使用内置的编组支持,但可以覆盖createConnection以构建自定义 TCP 连接。