java - Too many Connections Exception in Spring Batch -


in web application using spring batch framework , mysql database. in dao class closing connection still getting "too many connections" exception.plz how resolve this.

this spring batch configuration files:

erambatchjob.xml:  <?xml version="1.0" encoding="utf-8"?>  <beans:beans xmlns="http://www.springframework.org/schema/batch" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd">  <beans:bean class="org.springframework.beans.factory.config.propertyplaceholderconfigurer">         <beans:property name="location">             <beans:value>erambatchapp.properties</beans:value>         </beans:property>     </beans:bean>   <beans:import resource="eramgbt-jobrepository.xml"/>        <!-- headers -->    <beans:bean id="accountheader" class="com.order.batch.accountheader" scope="step">    <beans:property name="seperator" value="#{jobparameters['delimiter']}">    </beans:property>    </beans:bean>    <beans:bean id="customerheader" class="com.order.batch.customerheader" scope="step">   <beans:property name="seperator" value="#{jobparameters['delimiter']}"></beans:property>    </beans:bean>    <beans:bean id="finstatheader" class="com.order.batch.finstatheader" scope="step">    <beans:property name="seperator" value="#{jobparameters['delimiter']}"></beans:property>    </beans:bean>    <!-- headers -->       <!-- asynchronous executor -->    <beans:bean id="taskexecutor"    class="org.springframework.core.task.simpleasynctaskexecutor" scope="step"> <!-- <beans:property name="concurrencylimit" value="5"/> --> <beans:property name="concurrencylimit" value="#{jobparameters['concurrencylimit']}"/>  </beans:bean>   <!-- reader -->  <beans:bean id="accountinfofilereader" class="org.springframework.batch.item.file.flatfileitemreader" scope="step"> <beans:property name="resource" value="file:#{jobparameters['resource']}" />                             <beans:property name="linemapper"> <beans:bean class="org.springframework.batch.item.file.mapping.defaultlinemapper">   <beans:property name="linetokenizer">                <beans:bean class="org.springframework.batch.item.file.transform.fixedlengthtokenizer"> <!-- <beans:property name="delimiter" value=" "/> --> <!-- <beans:property name="columns" value="1-30,31-120,121-190,191-260,261-310,311-360,361-370,371-380,381-382,420-423,400-419,385-393,424-451" /> correct --> <!-- <beans:property name="columns" value="1-30,31-120,121-190,191-260,261-310,311-360,361-370,371-380,381-382,371-380,400-419,385-393,420-451" />  -->  <beans:property name="columns" value="#{jobparameters['inputdelimiter']}" /> <beans:property name="names" value="accountnumber,businessname,addr1,addr2,city,state,zip,phone,countrycode,phonecode,bizid,duns,dummy" />  </beans:bean> </beans:property> <beans:property name="fieldsetmapper"> <beans:bean class="com.order.batch.accountinfofiledsetmap" /> </beans:property> </beans:bean> </beans:property> </beans:bean>  <!-- processor -->   <beans:bean id="productorderproccesor" class="com.order.batch.productorderproccesor" scope="step">  <beans:property name="toolkitid" value="#{jobparameters['toolkitid']}"/>  <beans:property name="toolkitpwd" value="#{jobparameters['toolkitpwd']}"/>  </beans:bean>  <!-- wrtiter -->  <!-- account file writer --> <beans:bean id="accountfilewriter" class="org.springframework.batch.item.file.flatfileitemwriter" scope="step"> <beans:property name="resource" value="file:#{jobparameters['accountfilepath']}" />  <!--  <beans:property name="appendallowed" value="true" />--> <!--<beans:property name="shoulddeleteifexists" value="true"/>  --> <beans:property name="lineaggregator"> <beans:bean class="org.springframework.batch.item.file.transform.delimitedlineaggregator"> <beans:property name="delimiter" value="#{jobparameters['delimiter']}"/> <!-- <beans:property name="columns" value="1-30,31-120,121-190,191-260,261-310,311-360,361-370,371-380,381-382,371-380,400-419,385-393,420-452" />  --> <beans:property name="fieldextractor"> <beans:bean class="org.springframework.batch.item.file.transform.beanwrapperfieldextractor"> <beans:property name="names" value="sacct_nbr_cust,scountrycode_cust,scrcy_cd,sduns_nbr,senq_duns,sprim_name,saddr_line,spost_town,sprim_geo_area,spost_cd,scntry_cd,stlcm_nbr,scurr_cntl_yr,stotl_emp,sprim_sic,sloc_stat,slgl_form,saddr_tenr_type_cd,sceo_nme,spayd_scr,spays_3_mo_ago,spayd_norm,savg_high_cr,shigh_cr,stot_pmt,sfinl_embt_ind,sout_bus_in,scrim_ind,shist_ind,simpt_ind,sexpt_ind,sdnb_ratg,srat_cd,saaa_rat,sbus_stru,shq_duns,shq_nme,shq_cntry_cd,spnt_nme,spnt_duns,spnt_ctry_cd,sdom_ult_pnt_nme,sdom_ult_pnt_duns,sdom_ult_ctry_cd,sgbl_ult_pnt_nme,sgbl_ult_pnt_duns,sgbl_ult_ctry_cd,sdelq_scr_entr_natl_pctl,sdelq_scr_entr_inds_pctl,sdelq_scr_entr_inds_defu_indn,sfail_scr_entr_natl_pctl,sfail_scr_entr_defu_indn,sfail_scr_entr_inds_pctl,sfail_scr_entr_inds_defu_indn,scurr_rato,sqk_rato,sclm_ind,ssuit_jdgt_ind,strdg_styl,strdg_styl1,strdg_styl2,strdg_styl3,strdg_styl4,sprim_sic,sprim_sic_type_cd,slcl_atv_cd,slcl_actv_cd_type,sstrt_yr,sbus_regn_nbr,smax_cr,sincn_yr,seu_admin_app,seu_burgalary_ind,seu_bus_cease_ind,seu_bus_windup_ind,sfire_ind,seu_insol_stmt,seu_liqd_it,seu_meet_crdtr,seu_min_dat_ind,seu_misc_ovrd,seu_neg_inf_ind,sfail_scr_entr_scr_cmty_cd,sfail_scr_entr_scr_cmty_cd1,sfail_scr_entr_scr_cmty_cd2,sfail_scr_entr_scr_cmty_cd3,sfail_scr_entr_scr_cmty_cd4,sfail_scr_entr_scr_cmty_cd5,sfail_scr_entr_scr_cmty_cd6,sfail_scr_entr_scr_cmty_cd7,sfail_scr_entr_scr_cmty_cd8,sfail_scr_entr_scr_cmty_cd9,sfail_scr_entr_scr_cmty_cd10,sfail_scr_entr_scr_cmty_cd11,sfail_scr_entr_scr_cmty_cd12,sfail_scr_entr_scr_cmty_cd13,sfail_scr_entr_scr_cmty_cd14,sfail_scr_entr_scr_cmty_cd15,sfail_scr_entr_scr_cmty_cd16,sfail_scr_entr_scr_cmty_cd17,sfail_scr_entr_scr_cmty_cd18,sfail_scr_entr_scr_cmty_cd19,sfail_scr_entr_scr_cmty_cd20,sfail_scr_entr_scr_cmty_cd21,sfail_scr_entr_scr_cmty_cd22,sfail_scr_entr_scr_cmty_cd23,sfail_scr_entr_scr_cmty_cd24,sfail_scr_entr_scr_cmty_cd25,sfail_scr_entr_scr_cmty_cd26,sfail_scr_entr_scr_cmty_cd27,sfail_scr_entr_scr_cmty_cd28,sfail_scr_entr_scr_cmty_cd29,sfail_scr_entr_scr_ovrd_cd,sfail_scr_entr_scr_ovrd_cd1,sfail_scr_entr_scr_ovrd_cd2,sfail_scr_entr_scr_ovrd_cd3,sfail_scr_entr_scr_ovrd_cd4,sdelq_scr_entr_scr_cmty_cd,sdelq_scr_entr_scr_cmty_cd1,sdelq_scr_entr_scr_cmty_cd2,sdelq_scr_entr_scr_cmty_cd3,sdelq_scr_entr_scr_cmty_cd4,sdelq_scr_entr_scr_cmty_cd5,sdelq_scr_entr_scr_cmty_cd6,sdelq_scr_entr_scr_cmty_cd7,sdelq_scr_entr_scr_cmty_cd8,sdelq_scr_entr_scr_cmty_cd9,sdelq_scr_entr_scr_cmty_cd10,sdelq_scr_entr_scr_cmty_cd11,sdelq_scr_entr_scr_cmty_cd12,sdelq_scr_entr_scr_cmty_cd13,sdelq_scr_entr_scr_cmty_cd14,sdelq_scr_scr_ovrd_cd,sdelq_scr_scr_ovrd_cd1,sdelq_scr_scr_ovrd_cd2,sdelq_scr_scr_ovrd_cd3,sdelq_scr_scr_ovrd_cd4,sdast_ref_dt,srate_id,srpt_net_wrth,srpt_net_sls,srpt_net_income,scustomer_bs_name,dummydelimiter"/> </beans:bean> </beans:property> </beans:bean> </beans:property> <beans:property name="headercallback" ref="accountheader"></beans:property> </beans:bean>   <!-- customer file writer --> <beans:bean id="customerfilewriter" class="org.springframework.batch.item.file.flatfileitemwriter" scope="step"> <beans:property name="resource" value="file:#{jobparameters['customerfilepath']}" />  <!-- <beans:property name="appendallowed" value="true" /> --> <!--<beans:property name="shoulddeleteifexists" value="true"/> --> <beans:property name="lineaggregator"> <beans:bean class="org.springframework.batch.item.file.transform.delimitedlineaggregator"> <beans:property name="delimiter" value="#{jobparameters['delimiter']}"/> <beans:property name="fieldextractor"> <beans:bean class="org.springframework.batch.item.file.transform.beanwrapperfieldextractor"> <beans:property name="names" value="sacct_nbr_cust,sbusiness_nme_cust,saddr1_cust,saddr2_cust,scity_cust,sstate_cust,szip_cust,sphonecode_cust,sphone_cust,scountrycode_cust,sduns_cust"/> </beans:bean> </beans:property> </beans:bean> </beans:property> <beans:property name="headercallback" ref="customerheader"></beans:property> </beans:bean>  <!-- finance statement writer --> <beans:bean id="financestatfilewriter" class="org.springframework.batch.item.file.flatfileitemwriter" scope="step"> <beans:property name="resource" value="file:#{jobparameters['finstatfilepath']}" /> <!-- <beans:property name="appendallowed" value="true" />  --> <!-- <beans:property name="shoulddeleteifexists" value="true"/> --> <beans:property name="lineaggregator"> <beans:bean class="org.springframework.batch.item.file.transform.delimitedlineaggregator"> <beans:property name="delimiter" value="#{jobparameters['delimiter']}"/> <beans:property name="fieldextractor"> <beans:bean class="org.springframework.batch.item.file.transform.beanwrapperfieldextractor"> <beans:property name="names" value="sacct_nbr_cust,sdnb_ind,scash_liq_aset,sact_rec,sact_pay,sstk,stot_curr_aset,stot_curr_liab,stot_aset,stot_liab,snet_wrth,sitng_aset,ssls,snet_incm,sstmt_dt,sstmt_type,srate_id,sstmt_crcy_cd,dummydelimiter"/> </beans:bean> </beans:property> </beans:bean> </beans:property> <beans:property name="headercallback" ref="finstatheader"></beans:property> </beans:bean>  <!-- composite writer --> <beans:bean id="compositewriter" class="org.springframework.batch.item.support.compositeitemwriter"> <beans:property name="delegates"> <beans:list> <beans:ref bean="accountfilewriter" /> <beans:ref bean="customerfilewriter" /> <beans:ref bean="financestatfilewriter" /> </beans:list> </beans:property> </beans:bean>  <!-- writers fro skip plocies --> <beans:bean id="excludewriter" class="org.springframework.batch.item.file.flatfileitemwriter">      <beans:property name="shoulddeleteifexists" value="true"/>      <beans:property name="lineaggregator">       <beans:bean class="org.springframework.batch.item.file.transform.delimitedlineaggregator">       <beans:property name="delimiter" value=","/>       <beans:property name="fieldextractor">       <beans:bean class="org.springframework.batch.item.file.transform.beanwrapperfieldextractor">     <beans:property name="names" value="errormessage,accountnumber,businessname,addr1,addr2,city,state,zip,phone,countrycode,phonecode,bizid,duns"/>     </beans:bean>     </beans:property>     </beans:bean>     </beans:property>   </beans:bean>    <beans:bean id="writewriter" class="org.springframework.batch.item.file.flatfileitemwriter">      <beans:property name="shoulddeleteifexists" value="true"/>      <beans:property name="lineaggregator">       <beans:bean class="org.springframework.batch.item.file.transform.delimitedlineaggregator">       <beans:property name="delimiter" value=","/>       <beans:property name="fieldextractor">       <beans:bean class="org.springframework.batch.item.file.transform.beanwrapperfieldextractor">     <beans:property name="names" value="sacct_nbr,sduns_nbr,scustomer_bs_name"/>     </beans:bean>     </beans:property>     </beans:bean>     </beans:property>   </beans:bean>  <!-- listeners --> <beans:bean id="erambatchlistener" class="com.order.batch.eramjoblistener">   <beans:property name="excludewriter" ref="excludewriter" ></beans:property>    <beans:property name="writewriter" ref="writewriter" ></beans:property>   </beans:bean>    <!-- job  -->  <job id="erambatchjob" job-repository="jobrepository" >  <step id="step2">  <tasklet transaction-manager="jobrepository-transactionmanager" task-executor="taskexecutor"> <chunk reader="accountinfofilereader" processor="productorderproccesor" writer="compositewriter"   commit-interval="#{jobparameters['commitinterval']}" skip-limit="10000" retry-limit="1">  <streams> <stream ref="compositewriter"/>   <stream ref="accountinfofilereader"/>    <stream ref="excludewriter"/>    <stream ref="writewriter"/>   </streams>  <retryable-exception-classes> <include class="java.lang.exception"/> </retryable-exception-classes> <skippable-exception-classes>                         <include class="org.springframework.batch.item.file.flatfileparseexception"/>                        <include class="org.springframework.batch.item.file.transform.incorrectlinelengthexception"/>                  <include class="org.springframework.batch.core.step.skip.nonskippablereadexception"/>                 <include class="java.io.ioexception"/>                 <include class="org.springframework.beans.notreadablepropertyexception"/>                 <include class="org.springframework.batch.item.itemstreamexception"/>                 <include class="com.order.exception.invaliddunsorcountrycodeexception"/>          </skippable-exception-classes>         <listeners> <listener ref="erambatchlistener" /> </listeners>   </chunk>   </tasklet> <listeners> <listener ref="erambatchlistener"/> </listeners> </step>   <listeners> <listener ref="erambatchlistener"/> </listeners>     </job> </beans:beans> 

eramgbt-jobrepository.xml:

    <?xml version="1.0" encoding="utf-8"?>  <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"   xsi:schemalocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">   <bean id="jobrepository-datasource"  class="org.apache.commons.dbcp.basicdatasource" destroy-method="close">                       <property name="driverclassname" value="${erambatch.app.database.driverclass}" />                   <property name="url" value="${erambatch.app.database.databaseurl}" />                     <property name="username" value="${erambatch.app.database.username}" />  <!-- user id. e.g. root-->              <property name="password" value="${erambatch.app.database.password}" /> <!-- password-->     <property name="maxidle" value="10"/>         <property name="maxactive" value="100"/>         <property name="maxwait" value="10000"/>         <property name="validationquery" value="select 1"/>         <property name="testonborrow" value="false"/>         <property name="testwhileidle" value="true"/>         <property name="timebetweenevictionrunsmillis" value="1200000"/>         <property name="minevictableidletimemillis" value="1800000"/>         <property name="numtestsperevictionrun" value="5"/>         <property name="defaultautocommit" value="false"/>      </bean>   <bean id="jobrepository-transactionmanager"   class="org.springframework.jdbc.datasource.datasourcetransactionmanager" lazy-init="true"> <property name="datasource"  ref="jobrepository-datasource" />    </bean>  <bean id="jobrepository"  class="org.springframework.batch.core.repository.support.jobrepositoryfactorybean">   <property name="datasource" ref="jobrepository-datasource" />   <property name="transactionmanager" ref="jobrepository-transactionmanager"/>   <property name="isolationlevelforcreate" value="isolation_read_uncommitted" />   <property name="databasetype" value="mysql" />   <property name="tableprefix" value="batch_"/> </bean>  <bean id="asynctaskexecutor"  class="org.springframework.core.task.simpleasynctaskexecutor"/>   <bean id="joblauncher"  class="org.springframework.batch.core.launch.support.simplejoblauncher">       <property name="jobrepository" ref="jobrepository"/>         <property name="taskexecutor"> <bean class="org.springframework.core.task.simpleasynctaskexecutor" /> </property>      </bean>  <bean id="jobexplorer"  class="org.springframework.batch.core.explore.support.jobexplorerfactorybean"  p:datasource-ref="jobrepository-datasource" p:tableprefix="batch_" />  <bean id="jobregistry"  class="org.springframework.batch.core.configuration.support.mapjobregistry"/>  <bean id="joboperator"   class="org.springframework.batch.core.launch.support.simplejoboperator">         <property name="jobexplorer" ref="jobexplorer"/>         <property name="jobrepository" ref="jobrepository"/>         <property name="jobregistry" ref="jobregistry" />         <property name="joblauncher" ref="joblauncher" /> </bean>  </beans> 

this looks mysql error. try increasing max_connections in /etc/my.cnf.

also may app's multiprocessing , threading model. exhaustion of mysql connections indicate problem application spawning new threads/processes time.


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -