Search in sources :

Example 1 with TcpNetServerConnectionFactory

use of org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory in project spring-integration by spring-projects.

the class TcpConnectionFactoryFactoryBean method createInstance.

@Override
protected AbstractConnectionFactory createInstance() throws Exception {
    if (!this.mapperSet) {
        this.mapper.setBeanFactory(this.beanFactory);
    }
    if (this.usingNio) {
        if (isServer()) {
            TcpNioServerConnectionFactory connectionFactory = new TcpNioServerConnectionFactory(this.port);
            this.setCommonAttributes(connectionFactory);
            this.setServerAttributes(connectionFactory);
            connectionFactory.setUsingDirectBuffers(this.usingDirectBuffers);
            connectionFactory.setTcpNioConnectionSupport(this.obtainNioConnectionSupport());
            this.connectionFactory = connectionFactory;
        } else {
            TcpNioClientConnectionFactory connectionFactory = new TcpNioClientConnectionFactory(this.host, this.port);
            this.setCommonAttributes(connectionFactory);
            connectionFactory.setUsingDirectBuffers(this.usingDirectBuffers);
            connectionFactory.setTcpNioConnectionSupport(this.obtainNioConnectionSupport());
            this.connectionFactory = connectionFactory;
        }
        if (this.sslHandshakeTimeout != null) {
            this.connectionFactory.setSslHandshakeTimeout(this.sslHandshakeTimeout);
        }
    } else {
        if (isServer()) {
            TcpNetServerConnectionFactory connectionFactory = new TcpNetServerConnectionFactory(this.port);
            this.setCommonAttributes(connectionFactory);
            this.setServerAttributes(connectionFactory);
            connectionFactory.setTcpSocketFactorySupport(this.obtainSocketFactorySupport());
            connectionFactory.setTcpNetConnectionSupport(this.obtainNetConnectionSupport());
            this.connectionFactory = connectionFactory;
        } else {
            TcpNetClientConnectionFactory connectionFactory = new TcpNetClientConnectionFactory(this.host, this.port);
            this.setCommonAttributes(connectionFactory);
            connectionFactory.setTcpSocketFactorySupport(this.obtainSocketFactorySupport());
            connectionFactory.setTcpNetConnectionSupport(this.obtainNetConnectionSupport());
            this.connectionFactory = connectionFactory;
        }
    }
    return this.connectionFactory;
}
Also used : TcpNioServerConnectionFactory(org.springframework.integration.ip.tcp.connection.TcpNioServerConnectionFactory) TcpNetServerConnectionFactory(org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory) TcpNetClientConnectionFactory(org.springframework.integration.ip.tcp.connection.TcpNetClientConnectionFactory) TcpNioClientConnectionFactory(org.springframework.integration.ip.tcp.connection.TcpNioClientConnectionFactory)

Example 2 with TcpNetServerConnectionFactory

use of org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory in project spring-integration by spring-projects.

the class TcpInboundGatewayTests method testErrorFlow.

@Test
public void testErrorFlow() throws Exception {
    AbstractServerConnectionFactory scf = new TcpNetServerConnectionFactory(0);
    scf.setSingleUse(true);
    TcpInboundGateway gateway = new TcpInboundGateway();
    gateway.setConnectionFactory(scf);
    SubscribableChannel errorChannel = new DirectChannel();
    final String errorMessage = "An error occurred";
    errorChannel.subscribe(message -> {
        MessageChannel replyChannel = (MessageChannel) message.getHeaders().getReplyChannel();
        replyChannel.send(new GenericMessage<String>(errorMessage));
    });
    gateway.setErrorChannel(errorChannel);
    scf.start();
    TestingUtilities.waitListening(scf, 20000L);
    int port = scf.getPort();
    final SubscribableChannel channel = new DirectChannel();
    gateway.setRequestChannel(channel);
    gateway.setBeanFactory(mock(BeanFactory.class));
    ServiceActivatingHandler handler = new ServiceActivatingHandler(new FailingService());
    channel.subscribe(handler);
    Socket socket1 = SocketFactory.getDefault().createSocket("localhost", port);
    socket1.getOutputStream().write("Test1\r\n".getBytes());
    Socket socket2 = SocketFactory.getDefault().createSocket("localhost", port);
    socket2.getOutputStream().write("Test2\r\n".getBytes());
    byte[] bytes = new byte[errorMessage.length() + 2];
    readFully(socket1.getInputStream(), bytes);
    assertEquals(errorMessage + "\r\n", new String(bytes));
    readFully(socket2.getInputStream(), bytes);
    assertEquals(errorMessage + "\r\n", new String(bytes));
}
Also used : DirectChannel(org.springframework.integration.channel.DirectChannel) MessageChannel(org.springframework.messaging.MessageChannel) TcpNetServerConnectionFactory(org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory) AbstractServerConnectionFactory(org.springframework.integration.ip.tcp.connection.AbstractServerConnectionFactory) BeanFactory(org.springframework.beans.factory.BeanFactory) SubscribableChannel(org.springframework.messaging.SubscribableChannel) ServiceActivatingHandler(org.springframework.integration.handler.ServiceActivatingHandler) Socket(java.net.Socket) ServerSocket(java.net.ServerSocket) Test(org.junit.Test)

Example 3 with TcpNetServerConnectionFactory

use of org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory in project spring-integration by spring-projects.

the class TcpReceivingChannelAdapterTests method testNet.

@Test
public void testNet() throws Exception {
    AbstractServerConnectionFactory scf = new TcpNetServerConnectionFactory(0);
    noopPublisher(scf);
    ByteArrayCrLfSerializer serializer = new ByteArrayCrLfSerializer();
    scf.setSerializer(serializer);
    scf.setDeserializer(serializer);
    TcpReceivingChannelAdapter adapter = new TcpReceivingChannelAdapter();
    adapter.setConnectionFactory(scf);
    scf.start();
    TestingUtilities.waitListening(scf, null);
    int port = scf.getPort();
    QueueChannel channel = new QueueChannel();
    adapter.setOutputChannel(channel);
    adapter.setBeanFactory(mock(BeanFactory.class));
    adapter.afterPropertiesSet();
    Socket socket = SocketFactory.getDefault().createSocket("localhost", port);
    socket.getOutputStream().write("Test1\r\n".getBytes());
    socket.getOutputStream().write("Test2\r\n".getBytes());
    Message<?> message = channel.receive(10000);
    assertNotNull(message);
    assertEquals("Test1", new String((byte[]) message.getPayload()));
    message = channel.receive(10000);
    assertNotNull(message);
    assertEquals("Test2", new String((byte[]) message.getPayload()));
    scf.stop();
}
Also used : ByteArrayCrLfSerializer(org.springframework.integration.ip.tcp.serializer.ByteArrayCrLfSerializer) QueueChannel(org.springframework.integration.channel.QueueChannel) TcpNetServerConnectionFactory(org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory) AbstractServerConnectionFactory(org.springframework.integration.ip.tcp.connection.AbstractServerConnectionFactory) BeanFactory(org.springframework.beans.factory.BeanFactory) Socket(java.net.Socket) ServerSocket(java.net.ServerSocket) Test(org.junit.Test)

Example 4 with TcpNetServerConnectionFactory

use of org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory in project spring-integration by spring-projects.

the class TcpReceivingChannelAdapterTests method testNetSingleNoOutbound.

@Test
public void testNetSingleNoOutbound() throws Exception {
    AbstractServerConnectionFactory scf = new TcpNetServerConnectionFactory(0);
    noopPublisher(scf);
    ByteArrayCrLfSerializer serializer = new ByteArrayCrLfSerializer();
    scf.setSerializer(serializer);
    scf.setDeserializer(serializer);
    scf.setSingleUse(true);
    TcpReceivingChannelAdapter adapter = new TcpReceivingChannelAdapter();
    adapter.setConnectionFactory(scf);
    scf.start();
    TestingUtilities.waitListening(scf, null);
    int port = scf.getPort();
    QueueChannel channel = new QueueChannel();
    adapter.setOutputChannel(channel);
    Socket socket = SocketFactory.getDefault().createSocket("localhost", port);
    socket.getOutputStream().write("Test1\r\n".getBytes());
    socket = SocketFactory.getDefault().createSocket("localhost", port);
    socket.getOutputStream().write("Test2\r\n".getBytes());
    Message<?> message = channel.receive(10000);
    assertNotNull(message);
    // with single use, results may come back in a different order
    Set<String> results = new HashSet<String>();
    results.add(new String((byte[]) message.getPayload()));
    message = channel.receive(10000);
    assertNotNull(message);
    results.add(new String((byte[]) message.getPayload()));
    assertTrue(results.contains("Test1"));
    assertTrue(results.contains("Test2"));
    scf.stop();
}
Also used : ByteArrayCrLfSerializer(org.springframework.integration.ip.tcp.serializer.ByteArrayCrLfSerializer) QueueChannel(org.springframework.integration.channel.QueueChannel) TcpNetServerConnectionFactory(org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory) AbstractServerConnectionFactory(org.springframework.integration.ip.tcp.connection.AbstractServerConnectionFactory) Socket(java.net.Socket) ServerSocket(java.net.ServerSocket) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 5 with TcpNetServerConnectionFactory

use of org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory in project spring-integration by spring-projects.

the class TcpReceivingChannelAdapterTests method testNetSingleShared.

@Test
public void testNetSingleShared() throws Exception {
    AbstractServerConnectionFactory scf = new TcpNetServerConnectionFactory(0);
    noopPublisher(scf);
    ByteArrayCrLfSerializer serializer = new ByteArrayCrLfSerializer();
    scf.setSerializer(serializer);
    scf.setDeserializer(serializer);
    scf.setSingleUse(true);
    TcpSendingMessageHandler handler = new TcpSendingMessageHandler();
    handler.setConnectionFactory(scf);
    TcpReceivingChannelAdapter adapter = new TcpReceivingChannelAdapter();
    adapter.setConnectionFactory(scf);
    scf.start();
    QueueChannel channel = new QueueChannel();
    adapter.setOutputChannel(channel);
    TestingUtilities.waitListening(scf, null);
    int port = scf.getPort();
    Socket socket1 = SocketFactory.getDefault().createSocket("localhost", port);
    socket1.setSoTimeout(2000);
    socket1.getOutputStream().write("Test1\r\n".getBytes());
    Socket socket2 = SocketFactory.getDefault().createSocket("localhost", port);
    socket2.setSoTimeout(2000);
    socket2.getOutputStream().write("Test2\r\n".getBytes());
    Message<?> message = channel.receive(10000);
    assertNotNull(message);
    handler.handleMessage(message);
    message = channel.receive(10000);
    assertNotNull(message);
    handler.handleMessage(message);
    byte[] b = new byte[7];
    readFully(socket1.getInputStream(), b);
    assertEquals("Test1\r\n", new String(b));
    readFully(socket2.getInputStream(), b);
    assertEquals("Test2\r\n", new String(b));
    scf.stop();
}
Also used : ByteArrayCrLfSerializer(org.springframework.integration.ip.tcp.serializer.ByteArrayCrLfSerializer) QueueChannel(org.springframework.integration.channel.QueueChannel) TcpNetServerConnectionFactory(org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory) AbstractServerConnectionFactory(org.springframework.integration.ip.tcp.connection.AbstractServerConnectionFactory) Socket(java.net.Socket) ServerSocket(java.net.ServerSocket) Test(org.junit.Test)

Aggregations

TcpNetServerConnectionFactory (org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory)15 Test (org.junit.Test)14 AbstractServerConnectionFactory (org.springframework.integration.ip.tcp.connection.AbstractServerConnectionFactory)13 ServerSocket (java.net.ServerSocket)8 Socket (java.net.Socket)8 QueueChannel (org.springframework.integration.channel.QueueChannel)7 ByteArrayCrLfSerializer (org.springframework.integration.ip.tcp.serializer.ByteArrayCrLfSerializer)5 BeanFactory (org.springframework.beans.factory.BeanFactory)4 ServiceActivatingHandler (org.springframework.integration.handler.ServiceActivatingHandler)4 DirectChannel (org.springframework.integration.channel.DirectChannel)2 TcpNetClientConnectionFactory (org.springframework.integration.ip.tcp.connection.TcpNetClientConnectionFactory)2 SubscribableChannel (org.springframework.messaging.SubscribableChannel)2 IOException (java.io.IOException)1 HashSet (java.util.HashSet)1 DirectFieldAccessor (org.springframework.beans.DirectFieldAccessor)1 AbstractClientConnectionFactory (org.springframework.integration.ip.tcp.connection.AbstractClientConnectionFactory)1 TcpNioClientConnectionFactory (org.springframework.integration.ip.tcp.connection.TcpNioClientConnectionFactory)1 TcpNioServerConnectionFactory (org.springframework.integration.ip.tcp.connection.TcpNioServerConnectionFactory)1 MessageChannel (org.springframework.messaging.MessageChannel)1