0

I want to use Mule JDBC Standard Reconnection strategy .... For that I have used the following code :-

 <jdbc-ee:connector name="Database_Global" dataSource-ref="DB_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database">
        <jdbc-ee:query key="InsertQuery" value="INSERT INTO getData(ID,NAME,AGE,DESIGNATION)VALUES(?,?,?,?)"/>
        <jdbc-ee:query key="RetriveQuery" value="Select * from getData where ID=?"/>

 <reconnect frequency="2000" blocking="false" count="5"/> 
 </jdbc-ee:connector>

Now when ever I try to start my Mule application I receive following exception :-

org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'reconnect'. One of '{"http://www.mulesoft.org/schema/mule/jdbc":abstract-query, "http://www.mulesoft.org/schema/mule/ee/jdbc":sqlCommandExecutorFactory, "http://www.mulesoft.org/schema/mule/ee/jdbc":ackSqlCommandExecutorFactory, "http://www.mulesoft.org/schema/mule/ee/jdbc":sqlCommandRetryPolicyFactory}' is expected.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source)
    at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)
    at org.apache.xerces.impl.xs.XMLSchemaValidator.emptyElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
    at org.mule.config.spring.MuleApplicationContext.loadBeanDefinitions(MuleApplicationContext.java:113)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
    at org.mule.config.spring.SpringRegistry.doInitialise(SpringRegistry.java:89)
    at org.mule.registry.AbstractRegistry.initialise(AbstractRegistry.java:109)

Now My question is how to use reconnection strategy for Mule JDBC so that I can handle whenever database sever is down .... Please Help

Java Man
  • 1,854
  • 3
  • 21
  • 43
Anirban Sen Chowdhary
  • 8,233
  • 6
  • 39
  • 81

1 Answers1

1

Try putting the recconect as the first element:

 <jdbc-ee:connector name="Database_Global" dataSource-ref="DB_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database">
        <reconnect frequency="2000" blocking="false" count="5"/> 
        <jdbc-ee:query key="InsertQuery" value="INSERT INTO getData(ID,NAME,AGE,DESIGNATION)VALUES(?,?,?,?)"/>
        <jdbc-ee:query key="RetriveQuery" value="Select * from getData where ID=?"/>
 </jdbc-ee:connector>
Ryan Carter
  • 11,441
  • 2
  • 20
  • 27
  • Wow ... wonderful Ryan... Thank you for solving this ... Could you please tell me how to handle the socket exception and provide custom message to the user and how to store the data in a queue in case of failure ?? – Anirban Sen Chowdhary May 01 '14 at 10:23
  • @AnirbanSenChowdhary have you raised a seperate question for this and did you get an answer ? Would appreciate if you can link you question here :) – Sudarshan Jun 10 '15 at 02:17