2016-05-29 6 views
4

I eine Feder Integrationsanwendung aufweisen, die HttpRequestHandlingMessagingGateway verwendet json Anforderung akzeptiert sendet sie Dienst Aktivator Transformator und dann wird die Nachricht dann von einem PollableChannel empfangen und zurückgeschicktpostReceive auf Kanal ‚Ausgangskanal‘ Nachricht null ist

ich aber nehme die Antwort auf alternative Anfrage des, ich bin mit Anwendung Logger auf Trace-Modus, wie durch @GaryRussell auf anderen Fragen vorgeschlagen und erhalte den folgenden Stack-Trace

ich erhalte die folgende Ausnahme, wenn output-channel von header-enricher entfernt:

service activator . . .HolidaysAvailableResponse [holidayCodes=[HolidayCode [code=NEW-YEARS-DAY-ACTUAL, description=New Year's Day], HolidayCode [code=NEW-YEARS-DAY-OBSERVED, description=New Year's Day], HolidayCode [code=DAY-AFTER-NEW-YEARS-DAY, description=Day After New Year's Day (QC)], HolidayCode [code=EPIPHANY, description=Epiphany], HolidayCode [code=QUEBEC-FLAG-DAY, description=Quebec Flag Day], HolidayCode [code=GROUNDHOG-DAY, description=Groundhog Day], HolidayCode [code=VALENTINES-DAY, description=Valentine's Day], HolidayCode [code=FLAG-DAY, description=Flag Day], HolidayCode [code=ISLANDER-DAY, description=Islander Day (PE)], HolidayCode [code=HERITAGE-DAY-YT, description=Heritage Day (YT)], HolidayCode [code=LOUIS-RIEL-DAY, description=Louis Riel Day (MB)], HolidayCode [code=FAMILY-DAY, description=Family Day (AB, ON, SK)], HolidayCode [code=ST-PATRICKS-DAY-ACTUAL, description=St. Patrick's Day], HolidayCode [code=ST-PATRICKS-DAY-OBSERVED, description=St. Patrick's Day (NL)], HolidayCode [code=COMMONWEALTH-DAY, description=Commonwealth Day], HolidayCode [code=EASTER-ACTUAL, description=Easter Sunday], HolidayCode [code=EASTER-OBSERVED, description=Easter Monday], HolidayCode [code=GOOD-FRIDAY, description=Good Friday], HolidayCode [code=SHROVE-TUESDAY, description=Shrove Tuesday (Pancake Day)], HolidayCode [code=ASH-WEDNESDAY, description=Ash Wednesday], HolidayCode [code=PALM-SUNDAY, description=Palm Sunday], HolidayCode [code=MAUNDY-THURSDAY, description=Maundy Thursday], HolidayCode [code=VIMY-RIDGE-DAY, description=Vimy Ridge Day], HolidayCode [code=VICTORIA-DAY, description=Victoria Day], HolidayCode [code=NATIONAL-PATRIOTES-DAY, description=National Patriotes Day (QC)], HolidayCode [code=NATIONAL-ABORIGINAL-DAY-ACTUAL, description=National Aboriginal Day (NT)], HolidayCode [code=NATIONAL-ABORIGINAL-DAY-OBSERVED, description=National Aboriginal Day (NT)], HolidayCode [code=NATIONAL-DAY-ACTUAL, description=National Day (QC)], HolidayCode [code=NATIONAL-DAY-OBSERVED, description=National Day (QC)], HolidayCode [code=CANADA-DAY-ACTUAL, description=Canada Day], HolidayCode [code=CANADA-DAY-OBSERVED, description=Canada Day], HolidayCode [code=NUNAVUT-DAY-ACTUAL, description=Nunavut Day], HolidayCode [code=NUNAVUT-DAY-OBSERVED, description=Nunavut Day], HolidayCode [code=BRITISH-COLUMBIA-DAY, description=British Columbia Day (BC)], HolidayCode [code=HERITAGE-DAY-AB, description=Heritage Day (AB)], HolidayCode [code=CIVIC-HOLIDAY, description=Civic Holiday (MB, NT, ON, SK)], HolidayCode [code=NEW-BRUNSWICK-DAY, description=New Brunswick Day (NB)], HolidayCode [code=GOLD-CUP-PARADE-DAY, description=Gold Cup Parade (PE)], HolidayCode [code=LABOUR-DAY, description=Labour Day], HolidayCode [code=THANKSGIVING-DAY, description=Thanksgiving Day], HolidayCode [code=HALLOWEEN, description=Halloween], HolidayCode [code=REMEMBERANCE-DAY-ACTUAL, description=Rememberance Day], HolidayCode [code=REMEMBERANCE-DAY-OBSERVED, description=Rememberance Day], HolidayCode [code=CHRISTMAS-ACTUAL, description=Christmas], HolidayCode [code=CHRISTMAS-OBSERVED, description=Christmas], HolidayCode [code=BOXING-DAY-ACTUAL, description=Boxing Day], HolidayCode [code=BOXING-DAY-OBSERVED, description=Boxing Day], HolidayCode [code=NEW-YEARS-EVE, description=New Year's Eve]]] 
DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (AbstractMessageHandler.java:72) (handleMessage) - org.springframework.integration.transformer.MessageTransformingHandler#0 received message: GenericMessage [payload=HolidaysAvailableResponse [holidayCodes=[HolidayCode [code=NEW-YEARS-DAY-ACTUAL, description=New Year's Day], HolidayCode [code=NEW-YEARS-DAY-OBSERVED, description=New Year's Day], HolidayCode [code=DAY-AFTER-NEW-YEARS-DAY, description=Day After New Year's Day (QC)], HolidayCode [code=EPIPHANY, description=Epiphany], HolidayCode [code=QUEBEC-FLAG-DAY, description=Quebec Flag Day], HolidayCode [code=GROUNDHOG-DAY, description=Groundhog Day], HolidayCode [code=VALENTINES-DAY, description=Valentine's Day], HolidayCode [code=FLAG-DAY, description=Flag Day], HolidayCode [code=ISLANDER-DAY, description=Islander Day (PE)], HolidayCode [code=HERITAGE-DAY-YT, description=Heritage Day (YT)], HolidayCode [code=LOUIS-RIEL-DAY, description=Louis Riel Day (MB)], HolidayCode [code=FAMILY-DAY, description=Family Day (AB, ON, SK)], HolidayCode [code=ST-PATRICKS-DAY-ACTUAL, description=St. Patrick's Day], HolidayCode [code=ST-PATRICKS-DAY-OBSERVED, description=St. Patrick's Day (NL)], HolidayCode [code=COMMONWEALTH-DAY, description=Commonwealth Day], HolidayCode [code=EASTER-ACTUAL, description=Easter Sunday], HolidayCode [code=EASTER-OBSERVED, description=Easter Monday], HolidayCode [code=GOOD-FRIDAY, description=Good Friday], HolidayCode [code=SHROVE-TUESDAY, description=Shrove Tuesday (Pancake Day)], HolidayCode [code=ASH-WEDNESDAY, description=Ash Wednesday], HolidayCode [code=PALM-SUNDAY, description=Palm Sunday], HolidayCode [code=MAUNDY-THURSDAY, description=Maundy Thursday], HolidayCode [code=VIMY-RIDGE-DAY, description=Vimy Ridge Day], HolidayCode [code=VICTORIA-DAY, description=Victoria Day], HolidayCode [code=NATIONAL-PATRIOTES-DAY, description=National Patriotes Day (QC)], HolidayCode [code=NATIONAL-ABORIGINAL-DAY-ACTUAL, description=National Aboriginal Day (NT)], HolidayCode [code=NATIONAL-ABORIGINAL-DAY-OBSERVED, description=National Aboriginal Day (NT)], HolidayCode [code=NATIONAL-DAY-ACTUAL, description=National Day (QC)], HolidayCode [code=NATIONAL-DAY-OBSERVED, description=National Day (QC)], HolidayCode [code=CANADA-DAY-ACTUAL, description=Canada Day], HolidayCode [code=CANADA-DAY-OBSERVED, description=Canada Day], HolidayCode [code=NUNAVUT-DAY-ACTUAL, description=Nunavut Day], HolidayCode [code=NUNAVUT-DAY-OBSERVED, description=Nunavut Day], HolidayCode [code=BRITISH-COLUMBIA-DAY, description=British Columbia Day (BC)], HolidayCode [code=HERITAGE-DAY-AB, description=Heritage Day (AB)], HolidayCode [code=CIVIC-HOLIDAY, description=Civic Holiday (MB, NT, ON, SK)], HolidayCode [code=NEW-BRUNSWICK-DAY, description=New Brunswick Day (NB)], HolidayCode [code=GOLD-CUP-PARADE-DAY, description=Gold Cup Parade (PE)], HolidayCode [code=LABOUR-DAY, description=Labour Day], HolidayCode [code=THANKSGIVING-DAY, description=Thanksgiving Day], HolidayCode [code=HALLOWEEN, description=Halloween], HolidayCode [code=REMEMBERANCE-DAY-ACTUAL, description=Rememberance Day], HolidayCode [code=REMEMBERANCE-DAY-OBSERVED, description=Rememberance Day], HolidayCode [code=CHRISTMAS-ACTUAL, description=Christmas], HolidayCode [code=CHRISTMAS-OBSERVED, description=Christmas], HolidayCode [code=BOXING-DAY-ACTUAL, description=Boxing Day], HolidayCode [code=BOXING-DAY-OBSERVED, description=Boxing Day], HolidayCode [code=NEW-YEARS-EVE, description=New Year's Eve]]], headers={timestamp=1464704262960, id=b8e76d8a-97f7-c7a6-0c7a-a58d3c2ce440}] 
DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (MessagingGatewaySupport.java:365) (doSendAndReceive) - failure occurred in gateway sendAndReceive: ; nested exception is org.springframework.integration.dispatcher.AggregateMessageDeliveryException: All attempts to deliver Message to MessageHandlers failed.; nested exception is org.springframework.messaging.MessagingException: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available. Multiple causes: 
    ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available 
    ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available 
See below for the stacktrace of the first cause. 
DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (AbstractHandlerExceptionResolver.java:134) (resolveException) - Resolving exception from handler [httpGatewayPost]: org.springframework.messaging.MessageHandlingException: ; nested exception is org.springframework.integration.dispatcher.AggregateMessageDeliveryException: All attempts to deliver Message to MessageHandlers failed.; nested exception is org.springframework.messaging.MessagingException: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available. Multiple causes: 
    ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available 
    ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available 
See below for the stacktrace of the first cause. 
DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (AbstractHandlerExceptionResolver.java:134) (resolveException) - Resolving exception from handler [httpGatewayPost]: org.springframework.messaging.MessageHandlingException: ; nested exception is org.springframework.integration.dispatcher.AggregateMessageDeliveryException: All attempts to deliver Message to MessageHandlers failed.; nested exception is org.springframework.messaging.MessagingException: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available. Multiple causes: 
    ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available 
    ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available 
See below for the stacktrace of the first cause. 
TRACE 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (FrameworkServlet.java:1058) (resetContextHolders) - Cleared thread-bound request context: org.a[email protected] 
DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (FrameworkServlet.java:989) (processRequest) - Could not complete request 
org.springframework.messaging.MessageHandlingException: ; nested exception is org.springframework.integration.dispatcher.AggregateMessageDeliveryException: All attempts to deliver Message to MessageHandlers failed.; nested exception is org.springframework.messaging.MessagingException: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available. Multiple causes: 
    ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available 
    ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available 
See below for the stacktrace of the first cause. 
    at org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:78) 
    at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:71) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:99) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78) 
    at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:101) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:97) 
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:277) 
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115) 
    at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:150) 
    at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:45) 
    at org.springframework.messaging.core.AbstractMessagingTemplate.sendAndReceive(AbstractMessagingTemplate.java:42) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.doSendAndReceive(MessagingGatewaySupport.java:357) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceiveMessage(MessagingGatewaySupport.java:328) 
    at org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport.actualDoHandleRequest(HttpRequestHandlingEndpointSupport.java:492) 
    at org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport.doHandleRequest(HttpRequestHandlingEndpointSupport.java:389) 
    at org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway.handleRequest(HttpRequestHandlingMessagingGateway.java:103) 
    at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
+0

Ich kann keinen Sinn für Ihre Protokolle machen, ohne die gesamte Konfiguration zu sehen. –

+0

Hallo Gary, aufgrund der Beschränkung der Charaktere, ich habe das Projekt auf Git hochgeladen, ist die URL, bitte schauen Sie sich an: https://github.com/Mckenzie1989/spring-integration –

Antwort

0

Ich sehe nicht, wie das möglich ist:

DEBUG 2016-05-29 23:31:35,681 [http-bio-8080-exec-3] (AbstractMessageChannel.java:383) (postSend) - postSend (sent=true) on channel 'outputChannel', message: GenericMessage [payload=HolidaysAvailableResponse [holidayCodes=[HolidayCode [code=NEW-YEARS-DAY-ACTUAL. . .(POJO), headers={content-type=application/json, id=da43d6d2-2618-8581-4fcc-6aff7e79b6e1, timestamp=1464544895681}] 
... 
TRACE 2016-05-29 23:31:35,807 [http-bio-8080-exec-3] (AbstractMessageChannel.java:426) (postReceive) - postReceive on channel 'outputChannel', message is null 

Es sei denn, ein anderer Thread gibt es (das ist die Anmeldung nicht), die von outputChannel raubend ist oder irgendwie gibt es zwei „Output“ Bohnen - was unmöglich sein sollte.

Das heißt, dieser Code ziemlich seltsam ist ...

@ServiceActivator(inputChannel = "requestChannel") 
public Message<?> echo(Message<String> message) 
{ 
    // log.info("request :: " + message.getPayload()); 

    jsonToObjectTransformerChannel.send(message); 
    // inputChannel.send(message); 

    Message<?> responseMessage = outputChannel.receive(100); 

    System.out.println("final response recieved :: "); 
    System.out.println(responseMessage); 

    return responseMessage; 
} 

Es ist nicht wirklich so mit einem Service-Aktivator zum Senden und Empfangen von Nachrichten gedacht (obwohl es keine Probleme verursachen sollte).

Ich würde gerne wissen, was passiert, wenn Sie die output-channel von diesem

<header-enricher input-channel="headerEnricherChannel"> 
    <header name="content-type" value="application/json" /> 
</header-enricher> 

Und einfach die Verdrahtung der requestChannel direkt an die Json loszuwerden outputChannel entfernen geschieht Transformator zu widersprechen.

+0

Beim Entfernen des Ausgangskanals bekomme ich ein Ausnahme, dass ich in der Frage aktualisiert habe, bitte schauen Sie, Ihre Hilfe wird sehr geschätzt –

+1

Hmmm - Sie verlieren die Header irgendwo - wenn Sie 'Message ' Objekte in einem Transformator manipulieren, sind Sie verantwortlich für das Kopieren der eingehenden Header zum Outbound. Um ehrlich zu sein, Ihre Anwendung ist schwer zu entwirren, mit der Konfiguration in vielen Dateien. Ich schlage vor, dass Sie zu Ihrem anderen Ansatz zurückkehren und einen Debugger verwenden, um zu sehen, was in "outputChannel" passiert. Wie gesagt, ich kann nicht sehen, wie ein erfolgreicher Sendevorgang zu einem Null-Empfang führen kann. –

Verwandte Themen