2014-02-06 2 views
4

Здравствуйте, это моя конфигурация:Spring Integration: Ошибка канал - Проблемы, связанные с обработкой исключений

  1. JVM 1.6.0_30
  2. Весна версия 3.0.5
  3. Spring Integration ядро ​​2.0.5
  4. ТАК Окна 7

Это моя конфигурация контекста:

<beans:bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
    lazy-init="false"> 
    <beans:property name="ignoreUnresolvablePlaceholders" 
     value="true" /> 
    <beans:property name="location" value="classpath:etc/pds/pds.properties" /> 
</beans:bean> 



<channel id="pdsrequest" /> 
<channel id="pdsresponse" /> 
<channel id="channelMBD"/> 

<channel id="pdsRisposta"> 
    <queue capacity="1" /> 
    <interceptors> 
     <wire-tap channel="simple" /> 
    </interceptors> 
</channel> 

<service-activator input-channel="pdsrequest" 
    output-channel="pdsresponse" ref="pdsCalculateService" /> 

<logging-channel-adapter id="simple" level="DEBUG" /> 

<!-- GATEWAY --> 
<gateway id="gatewayService" 
    service-interface="com.cervedgroup.rating.pds.orchestratore.spring.GatewayService" 
    error-channel="errorChannel" default-reply-timeout="${PDS.GATEWAY_TIMEOUT}" 
    default-request-channel="pdsrequest" default-reply-channel="pdsresponse" /> 


<exception-type-router input-channel="errorChannel"> 
    <mapping 
     exception-type="com.cervedgroup.rating.pds.exceptions.NotDefinedPDSException" 
     channel="eccezioneProgrammata" /> 
    <mapping exception-type="com.cervedgroup.rating.pds.exceptions.ComputingPDSException" 
     channel="eccezioneRuntime" /> 
    <mapping 
     exception-type="com.cervedgroup.rating.pds.exceptions.DataSourcePDSException" 
     channel="eccezioneRuntime" /> 
    <mapping exception-type="com.cervedgroup.rating.pds.exceptions.PDSException" 
     channel="eccezioneRuntime" /> 
    <mapping 
     exception-type="com.cervedgroup.rating.pds.exceptions.ConfigurationException" 
     channel="eccezioneRuntime" /> 
    <mapping exception-type="java.lang.RuntimeException" channel="eccezioneRuntime" /> 
</exception-type-router> 

<service-activator input-channel="eccezioneProgrammata" 
    ref="invokerHandlerEccezioneProgrammata" /> 

<beans:bean id="invokerHandlerEccezioneProgrammata" 
    class="com.cervedgroup.rating.pds.orchestratore.error.GestoreEccezioneProgrammata" /> 

<service-activator input-channel="eccezioneRuntime" 
    ref="invokerHandlerEccezioneRuntime" /> 

<beans:bean id="invokerHandlerEccezioneRuntime" 
    class="com.cervedgroup.rating.pds.orchestratore.error.GestoreEccezioneRuntime" /> 


/> 

</beans:beans> 

Это мой log4j.properties:

log4j.rootLogger=INFO, ROOT 
log4j.appender.ROOT=org.apache.log4j.ConsoleAppender 
log4j.appender.ROOT.layout=it.pitagora.util.log.CervedLayout 
log4j.appender.ME=it.pitagora.util.log.CurrentLoggerAppender 
log4j.logger.org.springframework.batch.core.launch.support.CommandLineJobRunner=DEBUG, ME 
log4j.logger.org.springframework.integration=OFF, ME 
log4j.logger.httpclient.wire.header=INFO,ME 
log4j.logger.httpclient.wire.content=INFO,ME 
log4j.logger.org.apache.commons.httpclient=INFO,ME 
log4j.appender.C=it.pitagora.util.log.CurrentLoggerAppender 
log4j.appender.R=it.pitagora.util.log.CurrentLoggerAppender 
log4j.appender.D=it.pitagora.util.log.CurrentLoggerAppender 
log4j.appender.P=it.pitagora.util.log.CurrentLoggerAppender 
log4j.appender.AP=it.pitagora.util.log.CurrentLoggerAppender 
log4j.appender.N=it.pitagora.util.log.CurrentLoggerAppender 
log4j.logger.org.apache.ibatis=INFO, ME 
log4j.logger.org.mybatis.spring=INFO, ME 
log4j.logger.org.springframework=INFO, ME 

У меня есть проблемы в управлении каналом ошибок шлюза. Канал работает, но на поЬир печатается трассировку стека, за исключением:

ERROR 06-02 10:24:07,141 - org.springframework.integration.MessageHandlingException: com.cervedgroup.rating.pds.exceptions.NotDefinedPDSException: Dati non recuperabili 
     at org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:76) 
     at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:64) 
     at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:98) 
     at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78) 
     at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:110) 
     at org.springframework.integration.dispatcher.UnicastingDispatcher.access$000(UnicastingDispatcher.java:51) 
     at org.springframework.integration.dispatcher.UnicastingDispatcher$1.run(UnicastingDispatcher.java:92) 
     at org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:52) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
Caused by: com.cervedgroup.rating.pds.exceptions.NotDefinedPDSException: Dati non recuperabili 
     at com.cervedgroup.rating.pds.dao.cgr.RecuperaDatiCGR.recuperaClasseCGRValida(RecuperaDatiCGR.java:218) 
     at com.cervedgroup.rating.pds.evaluation.PDSDataRetriever.recuperaClasseCGR(PDSDataRetriever.java:93) 
     at com.cervedgroup.rating.pds.evaluation.PDSDataRetriever.recuperaDatiPreliminariGriglie(PDSDataRetriever.java:52) 
     at com.cervedgroup.rating.pds.evaluation.PDSDataRetriever.evaluate(PDSDataRetriever.java:38) 
     at com.cervedgroup.rating.pds.orchestratore.invoker.PDSDataRetrieverInvoker.avviaDataRetrieving(PDSDataRetrieverInvoker.java:58) 
     at com.cervedgroup.rating.pds.orchestratore.invoker.PDSDataRetrieverInvoker.invoke(PDSDataRetrieverInvoker.java:32) 
     at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:69) 
     at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:83) 
     at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:57) 
     at org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:102) 
     at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:102) 
     at org.springframework.integration.util.AbstractExpressionEvaluator.evaluateExpression(AbstractExpressionEvaluator.java:126) 
     at org.springframework.integration.util.MessagingMethodInvokerHelper.processInternal(MessagingMethodInvokerHelper.java:225) 
     at org.springframework.integration.util.MessagingMethodInvokerHelper.process(MessagingMethodInvokerHelper.java:125) 
     at org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:73) 
     ... 10 more 

Есть ли способ избежать этого печать на поЬир?

Большое спасибо

ответ

4

Как вы знаете, errorChannel создан Framework на фоне, но не существует никаких ограничений, чтобы определить его самостоятельно.

По умолчанию это PublishSubscribeChannel, и Framework подписка на него один обработчик - LoggingHandler с ERROR уровнем ведения журнала.

Итак, если вы не заинтересованы в этом дебаффе по умолчанию, вы можете объявить errorChannel, поскольку он подходит для вас.

С другой стороны, поскольку вы используете его от <gateway>, как насчет использования вашего собственного канала, а не по умолчанию errorChannel?

+0

Большое спасибо, пересмотр ошибки канала теперь не печатает ничего на nohup. – user3278977

Смежные вопросы