Uncategorized SQLException pour SQL

Je suis à l'aide de Spring Integration dans mon projet.
Comme par ma condition, j'ai appeler deux procédures stockées simultanément. Voici mon code:

    <int:service-activator ref="msgHandler" method="buildRequestBasedDataSource" />
<int-jdbc:stored-proc-outbound-gateway
id="PQIssueHistory-StoredProcedure-PQCOMMENTLOOKUP"
auto-startup="true"
data-source="routingDataSource"
stored-procedure-name="${PQIssueHistory-StoredProcedure-PQCOMMENTLOOKUP}"
skip-undeclared-results="true"
ignore-column-meta-data="true"  
use-payload-as-parameter-source = "false"
expect-single-result="true" >
<int-jdbc:sql-parameter-definition name="P_CRDATTIM" direction="IN" type="VARCHAR" />
<int-jdbc:sql-parameter-definition name="P_RECORDCD" direction="IN" type="VARCHAR" />
<int-jdbc:sql-parameter-definition name="P_CRNODE" direction="IN" type="VARCHAR" />
<int-jdbc:parameter name="P_CRDATTIM" expression="#xpath(payload, '//CRDATTIM')" />
<int-jdbc:parameter name="P_RECORDCD" expression="#xpath(payload, '//RECORDCD')" />
<int-jdbc:parameter name="P_CRNODE" expression="#xpath(payload, '//CRNODE')" />
<int-jdbc:returning-resultset name="rowMapper" row-mapper="com.dsths.cs.awd.utils.ResultSetRowMapper"/>
</int-jdbc:stored-proc-outbound-gateway>
<int:service-activator ref="msgHandler"  method="buildMessageFromExtSysResponseTestOne" />
<int:header-enricher default-overwrite="true"  should-skip-nulls="true"  >
<int:header name="${headerNames.originalPayload}" expression="payload" />  
</int:header-enricher>    
</int:chain>    
<int:channel id="test" />
<int:chain input-channel="test"  output-channel="PQIssueHistory-XsltTransformInputChannel" >
<int-jdbc:stored-proc-outbound-gateway
id="PQIssueHistory-StoredProcedure-PQHISTORYLOOKUP"
auto-startup="true"
data-source="routingDataSource"
stored-procedure-name="${PQIssueHistory-StoredProcedure-PQHISTORYLOOKUP}"
skip-undeclared-results="true"
ignore-column-meta-data="true"  
use-payload-as-parameter-source = "false"
expect-single-result="true" >
<int-jdbc:sql-parameter-definition name="P_CRDATTIM" direction="IN" type="VARCHAR" />
<int-jdbc:sql-parameter-definition name="P_RECORDCD" direction="IN" type="VARCHAR" />
<int-jdbc:sql-parameter-definition name="P_CRNODE" direction="IN" type="VARCHAR" />
<int-jdbc:parameter name="P_CRDATTIM" expression="#xpath(payload, '//CRDATTIM')" />
<int-jdbc:parameter name="P_RECORDCD" expression="#xpath(payload, '//RECORDCD')" />
<int-jdbc:parameter name="P_CRNODE" expression="#xpath(payload, '//CRNODE')" />
<int-jdbc:returning-resultset name="rowMapper" row-mapper="com.dsths.cs.awd.utils.ResultSetRowMapper"/>
</int-jdbc:stored-proc-outbound-gateway>
<int:service-activator ref="msgHandler"  method="buildMessageFromExtSysResponseTestTwo" />
</int:chain>

Je pourrais en mesure de frapper les procédures stockées sans aucun problème quand j'execute l'aide du cas de test junit.Mais, cependant, Lorsque je tente de l'exécuter à partir de l'interface graphique(c'est à dire après l'intégration avec l'INTERFACE utilisateur), j'obtiens l'erreur suivante:

org.springframework.integration.MessageHandlingException: error occurred in message handler [org.springframework.integration.handler.MessageHandlerChain#201$child.PQIssueHistory-StoredProcedure-PQHISTORYLOOKUP.handler]
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:79)
at org.springframework.integration.handler.MessageHandlerChain.handleMessageInternal(MessageHandlerChain.java:131)
................................
............................
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback; uncategorized SQLException for SQL [{call ZSPPQHISTORYLOOKUP(?, ?, ?)}]; SQL state [000RZ]; error code [930027]; No record found in the VOC file for "BP". ; nested exception is java.sql.SQLException: No record found in the VOC file for "BP".
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1036)
at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:1070)
at org.springframework.jdbc.core.simple.AbstractJdbcCall.executeCallInternal(AbstractJdbcCall.java:387)
at org.springframework.jdbc.core.simple.AbstractJdbcCall.doExecute(AbstractJdbcCall.java:350)
at org.springframework.jdbc.core.simple.SimpleJdbcCall.execute(SimpleJdbcCall.java:181)
at org.springframework.integration.jdbc.StoredProcExecutor.executeStoredProcedure(StoredProcExecutor.java:335)
at org.springframework.integration.jdbc.StoredProcExecutor.executeStoredProcedureInternal(StoredProcExecutor.java:325)
at org.springframework.integration.jdbc.StoredProcExecutor.executeStoredProcedure(StoredProcExecutor.java:294)
at org.springframework.integration.jdbc.StoredProcOutboundGateway.handleRequestMessage(StoredProcOutboundGateway.java:56)
at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:142)
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)
... 146 more
Caused by: java.sql.SQLException: No record found in the VOC file for "BP".
at com.ibm.u2.jdbc.UniJDBCMsgFactory.createException(UniJDBCMsgFactory.java:101)
at com.ibm.u2.jdbc.UniJDBCExceptionSupport.addException(UniJDBCExceptionSupport.java:87)
at com.ibm.u2.jdbc.UniJDBCProtocolU2Impl.addServerError(UniJDBCProtocolU2Impl.java:2799)
at com.ibm.u2.jdbc.UniJDBCProtocolU2Impl.serverExecuteSql(UniJDBCProtocolU2Impl.java:2130)
at com.ibm.u2.jdbc.UniJDBCProtocolU2Impl.executeSql(UniJDBCProtocolU2Impl.java:2169)
at com.ibm.u2.jdbc.UniJDBCProtocolU2Impl.doExecute(UniJDBCProtocolU2Impl.java:2208)
at com.ibm.u2.jdbc.UniJDBCProtocolU2Impl.executeStatementQuery(UniJDBCProtocolU2Impl.java:606)
at com.ibm.u2.jdbc.UniJDBCPreparedStatementImpl.execute(UniJDBCPreparedStatementImpl.java:407)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.execute(WrappedPreparedStatement.java:299)
at org.springframework.jdbc.core.JdbcTemplate$6.doInCallableStatement(JdbcTemplate.java:1072)
at org.springframework.jdbc.core.JdbcTemplate$6.doInCallableStatement(JdbcTemplate.java:1070)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1020)
... 156 more
12:26:25,972 INFO  [STDOUT] 12:26:25,971 DEBUG [org.springframework.integration.channel.DirectChannel.preSend] preSend on channel 'cs-exceptionHandlingChannel', message: [Payload=org.springframework.integration.MessageHandlingException: error occurred in message handler [org.springframework.integration.handler.MessageHandlerChain#201$child.PQIssueHistory-StoredProcedure-PQHISTORYLOOKUP.handler]][Headers={timestamp=1401778585971, id=60a1966f-e5ed-8bc0-d9d0-76ee7f6856d8, errorChannel=org.springframework.integration.core.MessagingTemplate$TemporaryReplyChannel@1c8968f, replyChannel=org.springframework.integration.core.MessagingTemplate$TemporaryReplyChannel@1c8968f}]

L'exception ci-dessus, il est clair que le contrôle se passe à l'erreur de canal. Ici, je voulais juste savoir la requête sql qui est à l'origine du problème. J'ai tourné sur "DEBUG". Ce serait génial si quelqu'un peut partager leurs idées sur la façon d'aller plus loin pour trouver de/à réparer le problème.

  • Je ne suis pas un Printemps de la personne, mais il semble que votre procédure stockée a jeté l'exception. Aucun enregistrement trouvé dans le fichier COV pour "BP" je voudrais essayer de l'exécuter à la main avec les mêmes données.
  • Suite à cela, vous pouvez lancer des messages d'information via raiseerror qui serait normalement ignoré avec un certain nombre de messages de la gamme. Je pense que vous devez changer le proc ou de comprendre comment obtenir du Printemps à l'ignorer ces messages (ou de traiter avec eux d'une certaine façon).
  • Lorsque j'exécute la procédure stockée manuellement, il fonctionne très bien.
  • Je pense que vous devez utiliser les paramètres exacts au moment où l'erreur a été levée. Quelques informations sur le contexte et les Codes d'Erreur SQLSTate - msdn.microsoft.com/en-us/library/ms714687.aspx Si vous avez le code de la procédure stockée, je regarde dans et trouver ce message, qui va vous montrer ce qui est jeté et vous donner un meilleur point de départ pour travailler. Il n'y a pas suffisamment d'informations pour résoudre le problème.
  • SQL état [000RZ]; code d'erreur [930027]. Il est disponible dans la stacktrace.
  • Que SQL État est dénué de sens, comme c'est le code d'erreur. Vous allez avoir à regarder dans le code de procédure stockée pour la "Aucun enregistrement trouvé dans le fichier COV pour "BP" message " et de savoir ce que la procédure stockée est en train de faire.

InformationsquelleAutor Ashok.N | 2014-06-03