2017-03-12 5 views
0

私はstompSubProtocolの使用にspring-integration-websocketを使用しています。WebSocket In/OutBoundChannel 'clientSession'が確立されていません。このコンテナを「開始」することを検討してください

私のサンプルコードは、「https://github.com/spring-projects/spring-integration/tree/master/spring-integration-websocket/src/main/java/org/springframework/integration/websocket

私のコードはほぼ同じサンプルコードです。 けど...エラー以下の私のコードの原因..

"clientOutboundChannel-1" org.springframework.messaging.MessageHandlingException: error occurred in message handler [org.springframework.integration.websocket.outbound.WebSocketOutboundMessageHandler#1]; nested exception is java.lang.IllegalStateException: 'clientSession' has not been established. Consider to 'start' this container. 
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:84) 

私は、XMLのイン/アウト結合チャンネルINT-のWebSocketを設定します。

<beans:bean id="webSocketClient" class="org.mockito.Mockito" factory-method="mock"> 
     <beans:constructor-arg value="org.springframework.web.socket.client.WebSocketClient"></beans:constructor-arg> 
    </beans:bean> 

    <int-websocket:client-container id="clientWebSocketContainer" 
           client="webSocketClient" 
           uri="*" 
           uri-variables="ws,user" 
           send-buffer-size-limit="1000000" 
           send-time-limit="100" 
           origin="FOO" 
           phase="100"> 
</int-websocket:client-container> 

<beans:bean id="stompSubProtocolHandler" class="org.springframework.web.socket.messaging.StompSubProtocolHandler"> 

    </beans:bean> 

    <beans:bean id="passThruSubProtocolHandler" 
     class="org.springframework.integration.websocket.support.PassThruSubProtocolHandler" > 
     </beans:bean> 


<beans:bean id="simpleMessageConverter" 
     class="org.springframework.integration.support.converter.SimpleMessageConverter" > </beans:bean> 

<beans:bean id="mapMessageConverter" class="org.springframework.integration.support.converter.MapMessageConverter"> </beans:bean> 


<int-websocket:inbound-channel-adapter id="customInboundAdapter" container="clientWebSocketContainer" 
             auto-startup="false" 
             payload-type="java.lang.Integer" 
             protocol-handlers="passThruSubProtocolHandler" 
             default-protocol-handler="stompSubProtocolHandler" 
             message-converters="simpleMessageConverter,mapMessageConverter" 
             merge-with-default-converters="true" 
             channel="clientInboundChannel" 
             error-channel="errorChannel" 
             send-timeout="2000" 
             phase="200" /> 

<int-websocket:outbound-channel-adapter id="defaultOutboundAdapter" container="serverWebSocketContainer" /> 

<int-websocket:outbound-channel-adapter id="customOutboundAdapter" container="clientWebSocketContainer" 
             default-protocol-handler="stompSubProtocolHandler" 
             protocol-handlers="passThruSubProtocolHandler" 
             message-converters="simpleMessageConverter,mapMessageConverter" 
             merge-with-default-converters="true" 
             channel="clientOutboundChannel" /> 

<int:channel id="clientOutboundChannel" /> 

何が問題になっています ?

答えて

0

あなたのモックwebSocketClientSessionオブジェクトを返さないという問題があると思います。したがって、コンテナはそれを致命的な問題とみなし、失敗します。

関連する問題