You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by gu...@servexternos.repsolypf.com on 2008/02/28 10:27:32 UTC
problem parsing sqlMaps
Hi,
As noted in 3.2.1 Element Content and Appendix E of the XML Specification, it is required that content models in element type declarations be deterministic.
In http://ibatis.apache.org/dtd/sql-map-2.dtd , there is:
<!ELEMENT sqlMap (typeAlias* | cacheModel* | resultMap* | parameterMap* | sql* | statement* | insert* | update* | delete* | select* | procedure*)+>
I think it causes my xml parser cant parse my sqlMaps returning this error:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'calendarDAOTarget' defined in class path resource [isifconfig/sigc/calendar/calendar-dao.xml]: Cannot resolve reference to bean 'calendarSqlMapConfig' while setting bean property 'sqlMapClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'calendarSqlMapConfig' defined in class path resource [isifconfig/sigc/calendar/calendar-dao.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)(:main:, row=9, col=113) -> com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'calendarSqlMapConfig' defined in class path resource [isifconfig/sigc/calendar/calendar-dao.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)(:main:, row=9, col=113) -> com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)
Caused by: java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)(:main:, row=9, col=113) -> com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:89)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)
at org.springframework.orm.ibatis.SqlMapClientFactoryBean.afterPropertiesSet(SqlMapClientFactoryBean.java:255)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1057)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1024)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:421)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:140)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:248)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:950)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:740)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:417)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:140)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:68)
at com.repsolypf.isif.config.SpringContext.getApplicationContext(SpringContext.java:121)
at com.repsolypf.isif.config.SpringContext.getBean(SpringContext.java:68)
at com.repsolypf.isif.client.ClientFachadaNegocio.invoke(ClientFachadaNegocio.java:80)
at com.repsolypf.sigefi.local.test.SigefiTestCase.testEco(SigefiTestCase.java:362)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at junit.textui.TestRunner.doRun(TestRunner.java:109)
at junit.textui.TestRunner.run(TestRunner.java:72)
at com.repsolypf.sigefi.local.test.SigefiTestCase.main(SigefiTestCase.java:386)
Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)(:main:, row=9, col=113) -> com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:86)
... 43 more
¿Is there another dtd I can use? I'm using ibatis 2.0b4
Un saludo
Angel Guillén
Ext: 87545
RE: problem parsing sqlMaps
Posted by Sundar Sankaranarayanan <Su...@phoenix.edu>.
Hi,
Did you add the sqlMapClient as a reference in you Spring application context? I guess that is what is missing.
If you are using Older version of Spring then you should use something like this
<beans>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="WEB-INF/sqlmap-config.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
and use the "sqlMapClient" as a reference property.
If you are using version 2.5, you could effectively use it as a setter in your dao
@Resource
public void setSqlMapClient(SqlMapClient sqlMapClient) {
super.setSqlMapClient(sqlMapClient);
}
Your Dao should extend SqlMapClientDaoSupport
Hope this helps. You could check the Spring-reference.pdf for a detailed explainationf of the same too.
Regards
Sundar
________________________________
From: guillen.olmos.angel@servexternos.repsolypf.com [mailto:guillen.olmos.angel@servexternos.repsolypf.com]
Sent: Thursday, February 28, 2008 2:28 AM
To: user-java@ibatis.apache.org
Subject: problem parsing sqlMaps
Hi,
As noted in 3.2.1 Element Content and Appendix E of the XML Specification, it is required that content models in element type declarations be deterministic.
In http://ibatis.apache.org/dtd/sql-map-2.dtd <http://ibatis.apache.org/dtd/sql-map-2.dtd> , there is:
<!ELEMENT sqlMap (typeAlias* | cacheModel* | resultMap* | parameterMap* | sql* | statement* | insert* | update* | delete* | select* | procedure*)+>
I think it causes my xml parser cant parse my sqlMaps returning this error:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'calendarDAOTarget' defined in class path resource [isifconfig/sigc/calendar/calendar-dao.xml]: Cannot resolve reference to bean 'calendarSqlMapConfig' while setting bean property 'sqlMapClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'calendarSqlMapConfig' defined in class path resource [isifconfig/sigc/calendar/calendar-dao.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)(:main:, row=9, col=113) -> com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'calendarSqlMapConfig' defined in class path resource [isifconfig/sigc/calendar/calendar-dao.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)(:main:, row=9, col=113) -> com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)
Caused by: java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)(:main:, row=9, col=113) -> com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:89)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)
at org.springframework.orm.ibatis.SqlMapClientFactoryBean.afterPropertiesSet(SqlMapClientFactoryBean.java:255)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1057)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1024)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:421)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:140)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:248)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:950)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:740)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:417)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:140)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:68)
at com.repsolypf.isif.config.SpringContext.getApplicationContext(SpringContext.java:121)
at com.repsolypf.isif.config.SpringContext.getBean(SpringContext.java:68)
at com.repsolypf.isif.client.ClientFachadaNegocio.invoke(ClientFachadaNegocio.java:80)
at com.repsolypf.sigefi.local.test.SigefiTestCase.testEco(SigefiTestCase.java:362)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at junit.textui.TestRunner.doRun(TestRunner.java:109)
at junit.textui.TestRunner.run(TestRunner.java:72)
at com.repsolypf.sigefi.local.test.SigefiTestCase.main(SigefiTestCase.java:386)
Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)(:main:, row=9, col=113) -> com.sap.engine.lib.xml.parser.NestedSAXParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)* (Unknown Source, row:0, col:-1) -> com.sap.engine.lib.xml.parser.ParserException: You are probably using a nondeterministic model like (a*|b*)*, try to replace it with an equivalent deterministic one, e.g. (a|b)*(Unknown Source)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:86)
... 43 more
¿Is there another dtd I can use? I'm using ibatis 2.0b4
Un saludo
Angel Guillén
Ext: 87545