0
votes

I have created Batch File for running my Spring Batch file. When i am trying to run my main class using bat file getting an error to locate Spring Schema Namespace.

Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\AT006>d:

D:\>cd test

D:\test>StartBulkProcessor.bat

D:\test>java  -Xms128m -Xmx512m -cp Alaxas.jar;lib\hibernate-commons-annotations
-3.2.0.Final.jar;lib\spring-context-3.2.0.RELEASE.jar;lib\spring-core-3.2.0.RELE
ASE.jar;lib\spring-batch-infrastructure-2.2.0.RELEASE.jar;lib\spring-beans-3.2.0
.RELEASE.jar;lib\spring-context-support-3.2.0.RELEASE.jar;lib\spring-expression-
3.2.0.RELEASE.jar;lib\spring-instrument-tomcat-3.2.0.RELEASE.jar;lib\spring-oxm-
3.0.6.RELEASE-sources.jar;lib\spring-retry-1.0.1.RELEASE.jar;lib\spring-security
-core-3.1.4.RELEASE.jar;lib\spring-tx.jar;lib\spring-web-3.2.0.RELEASE.jar;lib\x
stream-1.4.5.jar;lib\xstream-benchmark-1.4.5.jar;lib\xstream-hibernate-1.4.5.jar
;lib\antlr-2.7.6.jar;lib\aopalliance-1.0.jar;lib\aspectj-weaver.jar;lib\commons-
collections-3.1.jar;lib\commons-logging-1.1.1.jar;lib\dom4j-1.6.1.jar;lib\hibern
ate-commons-annotations-3.2.0.Final.jar;lib\hibernate-core-3.6.7.Final.jar;lib\h
ibernate-jpa-2.0-api-1.0.1.Final.jar;lib\java-mail-1.4.4.jar;lib\javassist.jar;l
ib\javax.mail_1.4.jar;lib\jettison-1.2.jar;lib\jms-1.1.jar;lib\jsr250-api-1.0.ja
r;lib\jta-1.1.jar;lib\lo-1.2.16.jar;lib\mysql-connector-java-5.1.12-bin.jar;lib\
org.springframework.jdbc.jar;lib\org.springframework.oxm-3.0.0.M3.jalib\org.spri
ngframework.transaction_3.0.5.RELEASE.jar;lib\quartz-1.8.6.jar;lib\servlet-api.j
ar;lib\slf4j-simple-1.7.2.jar;lib\slf4j-api-1.7.2.jar com.alaxas.adf.batch.Batch
MainProc
Mar 26, 2014 9:29:55 AM org.springframework.context.support.AbstractApplicationC
ontext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationCont
ext@2f267610: startup date [Wed Mar 26 09:29:55 IST 2014]; root of context hiera
rchy
Mar 26, 2014 9:29:55 AM org.springframework.beans.factory.xml.XmlBeanDefinitionR
eader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [com/alaxas/adf/batc
h/appconfig/BatchProcessorAppConfig.xml]
Mar 26, 2014 9:29:57 AM org.springframework.beans.factory.xml.XmlBeanDefinitionR
eader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [com/alaxas/adf/batc
h/appconfig/ErrorLogServiceConfig.xml]
Mar 26, 2014 9:29:57 AM org.springframework.beans.factory.xml.XmlBeanDefinitionR
eader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [com/alaxas/adf/batc
h/appconfig/PropertyLoaderConfig.xml]
Mar 26, 2014 9:29:57 AM org.springframework.beans.factory.xml.XmlBeanDefinitionR
eader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [com/alaxas/adf/batc
h/appconfig/DataSourceConfig.xml]
Mar 26, 2014 9:29:57 AM org.springframework.beans.factory.xml.XmlBeanDefinitionR
eader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [com/alaxas/adf/batc
h/appconfig/EmailServiceConfig.xml]
Mar 26, 2014 9:29:57 AM org.springframework.beans.factory.support.DefaultListabl
eBeanFactory registerBeanDefinition
INFO: Overriding bean definition for bean 'transactionManager': replacing [Gener
ic bean: class [org.springframework.batch.support.transaction.ResourcelessTransa
ctionManager]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependenc
yCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMe
thodName=null; initMethodName=null; destroyMethodName=null; defined in class pat
h resource [com/alaxas/adf/batch/appconfig/DataSourceConfig.xml]] with [Generic
bean: class [org.springframework.batch.support.transaction.ResourcelessTransacti
onManager]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCh
eck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMetho
dName=null; initMethodName=null; destroyMethodName=null; defined in class path r
esource [com/alaxas/adf/batch/appconfig/BatchProcessorAppConfig.xml]]
Exception in thread "main" java.lang.ExceptionInInitializerError
        at com.alaxas.adf.batch.BatchMainProc.logError(BatchMainProc.java:91)
        at com.alaxas.adf.batch.BatchMainProc.main(BatchMainProc.java:24)
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingExcept
ion: Configuration problem: Unable to locate Spring NamespaceHandler for XML sch
ema namespace [http://www.springframework.org/schema/batch]
Offending resource: class path resource [com/alaxas/adf/batch/appconfig/BatchPro
cessorAppConfig.xml]

        at org.springframework.beans.factory.parsing.FailFastProblemReporter.err
or(FailFastProblemReporter.java:68)
        at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderC
ontext.java:85)
        at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderC
ontext.java:80)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.er
ror(BeanDefinitionParserDelegate.java:317)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa
rseCustomElement(BeanDefinitionParserDelegate.java:1432)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa
rseCustomElement(BeanDefinitionParserDelegate.java:1425)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentRe
ader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentRe
ader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentRe
ader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registe
rBeanDefinitions(XmlBeanDefinitionReader.java:493)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadB
eanDefinitions(XmlBeanDefinitionReader.java:390)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea
nDefinitions(XmlBeanDefinitionReader.java:334)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea
nDefinitions(XmlBeanDefinitionReader.java:302)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReade
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReade
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReade
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReade
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
        at org.springframework.context.support.AbstractXmlApplicationContext.loa
dBeanDefinitions(AbstractXmlApplicationContext.java:127)
        at org.springframework.context.support.AbstractXmlApplicationContext.loa
dBeanDefinitions(AbstractXmlApplicationContext.java:93)
        at org.springframework.context.support.AbstractRefreshableApplicationCon
text.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
        at org.springframework.context.support.AbstractApplicationContext.obtain
FreshBeanFactory(AbstractApplicationContext.java:537)
        at org.springframework.context.support.AbstractApplicationContext.refres
h(AbstractApplicationContext.java:451)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<i
nit>(ClassPathXmlApplicationContext.java:139)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<i
nit>(ClassPathXmlApplicationContext.java:83)
        at com.alaxas.adf.batch.BatchJobContext.<init>(BatchJobContext.java:19)
        at com.alaxas.adf.batch.BatchJobContext.<clinit>(BatchJobContext.java:15
)
        ... 2 more

This is my Config XML file for the main class.

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:batch="http://www.springframework.org/schema/batch"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:task="http://www.springframework.org/schema/task" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/batch
        http://www.springframework.org/schema/batch/spring-batch.xsd
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task.xsd
    ">

    <import resource="../appconfig/ErrorLogServiceConfig.xml"/>
    <import resource="../appconfig/PropertyLoaderConfig.xml" />
    <import resource="../appconfig/DataSourceConfig.xml" />
    <import resource="../appconfig/EmailServiceConfig.xml" />

    <!-- stored job-meta in memory -->
    <bean id="jobRepository"
        class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
        <property name="transactionManager" ref="transactionManager" />
    </bean>

    <bean id="transactionManager"
        class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />

    <bean id="SBJobLauncher"
        class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
        <property name="jobRepository" ref="jobRepository" />
    </bean>

    <!-- For Job Registry (Newly added) -->
    <bean
        class="org.springframework.batch.core.configuration.support.JobRegistryBeanPostProcessor">
        <property name="jobRegistry" ref="jobRegistry" />
    </bean>

    <bean id="jobRegistry"
        class="org.springframework.batch.core.configuration.support.MapJobRegistry" />

    <!-- EmailExtractorJob -->
    <bean id="emailItemReader"
        class="org.springframework.batch.item.database.JdbcCursorItemReader"
        scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql"
            value="select Id, EmailFrom, EmailTo, Subject, Message, Status from EMAILQUEUE WHERE status='EN'" />
        <property name="rowMapper">
            <bean class="com.alaxas.adf.batch.reader.EmailReader" />
        </property>
    </bean>

    <bean id="emailItemProcessor" class="com.alaxas.adf.batch.processor.EmailProcessor">
        <property name="emailProcessorUtil" ref="emailProcessorUtil" />
    </bean>

    <job id="EmailExtractorJob" xmlns="http://www.springframework.org/schema/batch">
        <step id="step1">
            <tasklet>
                <chunk reader="emailItemReader" processor="emailItemProcessor"
                    writer="emailItemWriter" commit-interval="100" />
            </tasklet>
        </step>
    </job>

    <bean id="emailItemWriter"
        class="org.springframework.batch.item.adapter.ItemWriterAdapter">
        <property name="targetObject" ref="emailOutWriter" />
        <property name="targetMethod" value="write" />
    </bean>

    <bean id="emailOutWriter" class="com.alaxas.adf.batch.writer.EmailWriter" />

    <!-- PurgeJob -->
    <bean id="purgeItemReader"
        class="org.springframework.batch.item.database.JdbcCursorItemReader"
        scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql"
            value="select TableName, SQLWhereCondition from PurgeJobDetails" />
        <property name="rowMapper">
            <bean class="com.alaxas.adf.batch.reader.PurgeReader" />
        </property>
    </bean>

    <bean id="purgeItemProcessor" class="com.alaxas.adf.batch.processor.PurgeProcessor" />

    <job id="PurgeJob" xmlns="http://www.springframework.org/schema/batch">
        <step id="step2">
            <tasklet>
                <chunk reader="purgeItemReader" processor="purgeItemProcessor"
                    writer="purgeItemWriter" commit-interval="100" />
            </tasklet>
        </step>
    </job>

    <bean id="purgeItemWriter"
        class="org.springframework.batch.item.adapter.ItemWriterAdapter">
        <property name="targetObject" ref="purgeOutWriter" />
        <property name="targetMethod" value="write" />
    </bean>

    <bean id="purgeOutWriter" class="com.alaxas.adf.batch.writer.PurgeWriter" />

    <!-- ArchivalJob -->
    <bean id="archivalItemReader"
        class="org.springframework.batch.item.database.JdbcCursorItemReader"
        scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql"
            value="select Id, InfoCode, Tablename, ArchiveDateFieldName, ArchiveDateFieldValue from ArchivalTableDetails" />
        <property name="rowMapper">
            <bean class="com.alaxas.adf.batch.reader.ArchivalReader" />
        </property>
    </bean>

    <bean id="archivalItemProcessor" class="com.alaxas.adf.batch.processor.ArchivalProcessor" />

    <job id="ArchivalJob" xmlns="http://www.springframework.org/schema/batch">
        <step id="step3">
            <tasklet>
                <chunk reader="archivalItemReader" processor="archivalItemProcessor"
                    writer="archivalItemWriter" commit-interval="100" />
            </tasklet>
        </step>
    </job>

    <bean id="archivalItemWriter"
        class="org.springframework.batch.item.adapter.ItemWriterAdapter">
        <property name="targetObject" ref="archivalOutWriter" />
        <property name="targetMethod" value="write" />
    </bean>

    <bean id="archivalOutWriter" class="com.alaxas.adf.batch.writer.ArchivalWriter" />

    <!--PaymentProcessingJob-->
    <bean id="paymentProcessItemReader"
        class="org.springframework.batch.item.database.JdbcCursorItemReader"
        scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql"
            value="select Id, UserId, ProductId, IsMonthlySubscription, IsYearlySubscription, Date from PaymentUserAndProduct" />
        <property name="rowMapper">
            <bean class="com.alaxas.adf.batch.reader.PaymentProcessReader" />
        </property>
    </bean>

    <bean id="paymentProcessItemProcessor" class="com.alaxas.adf.batch.processor.PaymentProcessProcessor" />

    <job id="PaymentProcessingJob" xmlns="http://www.springframework.org/schema/batch">
        <step id="step4">
            <tasklet>
                <chunk reader="paymentProcessItemReader" processor="paymentProcessItemProcessor"
                    writer="paymentProcessItemWriter" commit-interval="100" />
            </tasklet>
        </step>
    </job>

    <bean id="paymentProcessItemWriter"
        class="org.springframework.batch.item.adapter.ItemWriterAdapter">
        <property name="targetObject" ref="paymentProcessOutWriter" />
        <property name="targetMethod" value="write" />
    </bean>

    <bean id="paymentProcessOutWriter" class="com.alaxas.adf.batch.writer.PaymentProcessWriter" />


    <!--PaymentInvoiceJob-->
    <bean id="paymentInvoiceItemReader"
        class="org.springframework.batch.item.database.JdbcCursorItemReader"
        scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql"
            value="select Id, Date, Amount, TransactionId from Invoice" />
        <property name="rowMapper">
            <bean class="com.alaxas.adf.batch.reader.PaymentInvoiceReader" />
        </property>
    </bean>

    <bean id="paymentInvoiceItemProcessor" class="com.alaxas.adf.batch.processor.PaymentInvoiceProcessor">
    <property name="emailProcessorUtil" ref="emailProcessorUtil" />
    </bean>

    <job id="PaymentInvoiceJob" xmlns="http://www.springframework.org/schema/batch">
        <step id="step5">
            <tasklet>
                <chunk reader="paymentInvoiceItemReader" processor="paymentInvoiceItemProcessor"
                    writer="paymentInvoiceItemWriter" commit-interval="100" />
            </tasklet>
        </step>
    </job>

    <bean id="paymentInvoiceItemWriter"
        class="org.springframework.batch.item.adapter.ItemWriterAdapter">
        <property name="targetObject" ref="paymentInvoiceOutWriter" />
        <property name="targetMethod" value="write" />
    </bean>

    <bean id="paymentInvoiceOutWriter" class="com.alaxas.adf.batch.writer.PaymentInvoiceWriter" />

    <!--PaymentFailedJob-->
    <bean id="paymentFailedItemReader"
        class="org.springframework.batch.item.database.JdbcCursorItemReader"
        scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql" value="select Id, UserId from PaymentFailed" />
        <property name="rowMapper">
            <bean class="com.alaxas.adf.batch.reader.PaymentFailedReader" />
        </property>
    </bean>

    <bean id="paymentFailedItemProcessor" class="com.alaxas.adf.batch.processor.PaymentFailedProcessor">
    <property name="emailProcessorUtil" ref="emailProcessorUtil" />
    </bean>

    <job id="PaymentFailedJob" xmlns="http://www.springframework.org/schema/batch">
        <step id="step6">
            <tasklet>
                <chunk reader="paymentFailedItemReader" processor="paymentFailedItemProcessor"
                    writer="paymentFailedItemWriter" commit-interval="100" />
            </tasklet>
        </step>
    </job>

    <bean id="paymentFailedItemWriter"
        class="org.springframework.batch.item.adapter.ItemWriterAdapter">
        <property name="targetObject" ref="paymentFailedOutWriter" />
        <property name="targetMethod" value="write" />
    </bean>

    <bean id="paymentFailedOutWriter" class="com.alaxas.adf.batch.writer.PaymentFailedWriter" />

</beans>
1
Maybe you missed some sprint-batch .jar files. For reference:Unable to locate NamespaceHandler. - songyuanyao

1 Answers

0
votes

Your specified classpath does not contain the spring-batch-core jar (it has the infrastructure jar only). The namespace parsers, etc are all in the core jar. Add that and you should be fine.