I just made changes to the tutorial wiki. You can review them as you have time or feel total confidence and completely ignore them. I'll be making more additions as I have time (posting personal phone numbers, confidential information from the Pentagon, and the secret crabby patty formula) which you can also review at your leisure.
Cliff mraible wrote: > > It's probably not in the tutorial because we expect you to use 2.0-m5. > Since you've encountered this issue, it's likely others will too. We > should add a note to the tutorial and M5 release notes. Please add an > issue to JIRA or update the wiki yourself if you like. > > Thanks! > > Matt > > > On 5/9/07, Clifton <[EMAIL PROTECTED]> wrote: >> >> Thanx Matt, >> >> I put an excludes entry for sql-map-config.xml and that fixed it! Was >> that a >> step somewhere in the tutorial that I missed or is that something that I >> was >> supposed to do naturally? I only ask because I'm trying to get >> comfortable >> and proficient enough to use your framework full time. >> >> Cliff >> >> mraible wrote: >> > >> > It looks like it might not be picking up your sql-map-config.xml. >> > It's possibly loading the one from AppFuse instead. Make sure >> > sql-map-config.xml is excluded in the warpath plugin settings in >> > pom.xml. >> > >> > You could also look in the appfuse-ibatis.jar to see if there's a >> > sql-map-config.xml in it (in your local repo). If there is, delete it >> > and see if yours is picked up instead. >> > >> > Matt >> > >> > On 5/8/07, Clifton <[EMAIL PROTECTED]> wrote: >> >> >> >> Ok, I'm on the last step on this page and still having trouble! Yes, I >> >> made >> >> my own person object but my package name is different than the >> examples. >> >> That could be the source of my latest problem. I use com.craig as my >> root >> >> package. Now when I run mvn test I get: >> >> Running com.craig.dao.PersonDaoTest >> >> AbandonedObjectPool is used >> >> ([EMAIL PROTECTED]) >> >> LogAbandoned: false >> >> RemoveAbandoned: true >> >> RemoveAbandonedTimeout: 60 >> >> Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 2.56 >> sec >> >> <<< >> >> FAILURE! >> >> testFindPersonByLastName(com.craig.dao.PersonDaoTest) Time elapsed: >> >> 2.453 >> >> sec <<< ERROR! >> >> com.ibatis.sqlmap.client.SqlMapException: There is no statement named >> >> findByLastName in this SqlMap. >> >> at >> >> >> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getMappedStatement(SqlMapExecutorDelegate.java:293) >> >> at >> >> >> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:606) >> >> at >> >> >> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:589) >> >> at >> >> >> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118) >> >> at >> >> >> org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:268) >> >> at >> >> >> org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:193) >> >> at >> >> >> org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:219) >> >> at >> >> >> org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:266) >> >> at >> >> >> com.craig.dao.ibatis.PersonDaoiBatis.findByLastName(PersonDaoiBatis.java:21) >> >> at >> >> >> com.craig.dao.PersonDaoTest.testFindPersonByLastName(PersonDaoTest.java:20) >> >> at >> >> >> com.craig.dao.PersonDaoTest.testFindPersonByLastName(PersonDaoTest.java:20) >> >> 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:585) >> >> at junit.framework.TestCase.runTest(TestCase.java:164) >> >> at junit.framework.TestCase.runBare(TestCase.java:130) >> >> at >> >> >> org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69) >> >> 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:120) >> >> at junit.framework.TestSuite.runTest(TestSuite.java:230) >> >> at junit.framework.TestSuite.run(TestSuite.java:225) >> >> 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:585) >> >> at >> >> >> org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213) >> >> at >> >> >> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138) >> >> at >> >> >> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125) >> >> at org.apache.maven.surefire.Surefire.run(Surefire.java:132) >> >> 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:585) >> >> at >> >> >> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:290) >> >> at >> >> >> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:818) >> >> >> >> testAddAndRemovePerson(com.craig.dao.PersonDaoTest) Time elapsed: >> 0.015 >> >> sec >> >> <<< ERROR! >> >> com.ibatis.sqlmap.client.SqlMapException: There is no statement named >> >> addPerson in this SqlMap. >> >> at >> >> >> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getMappedStatement(SqlMapExecutorDelegate.java:293) >> >> at >> >> >> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:429) >> >> at >> >> >> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82) >> >> at >> >> >> org.springframework.orm.ibatis.SqlMapClientTemplate$9.doInSqlMapClient(SqlMapClientTemplate.java:369) >> >> at >> >> >> org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:193) >> >> at >> >> >> org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:367) >> >> at >> >> org.appfuse.dao.ibatis.GenericDaoiBatis.save(GenericDaoiBatis.java:75) >> >> at >> >> >> com.craig.dao.PersonDaoTest.testAddAndRemovePerson(PersonDaoTest.java:30) >> >> at >> >> >> com.craig.dao.PersonDaoTest.testAddAndRemovePerson(PersonDaoTest.java:30) >> >> 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:585) >> >> at junit.framework.TestCase.runTest(TestCase.java:164) >> >> at junit.framework.TestCase.runBare(TestCase.java:130) >> >> at >> >> >> org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69) >> >> 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:120) >> >> at junit.framework.TestSuite.runTest(TestSuite.java:230) >> >> at junit.framework.TestSuite.run(TestSuite.java:225) >> >> 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:585) >> >> at >> >> >> org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213) >> >> at >> >> >> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138) >> >> at >> >> >> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125) >> >> at org.apache.maven.surefire.Surefire.run(Surefire.java:132) >> >> 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:585) >> >> at >> >> >> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:290) >> >> at >> >> >> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:818) >> >> >> >> >> >> Results : >> >> >> >> Tests in error: >> >> testFindPersonByLastName(com.craig.dao.PersonDaoTest) >> >> testAddAndRemovePerson(com.craig.dao.PersonDaoTest) >> >> >> >> Tests run: 3, Failures: 0, Errors: 2, Skipped: 0 >> >> >> >> Here's my sqlMap: >> >> <sqlMap namespace="PersonSQL"> >> >> <typeAlias alias="person" type="com.craig.model.Person"/> >> >> >> >> <parameterMap id="addParam" class="person"> >> >> <parameter property="firstName" jdbcType="VARCHAR" >> >> javaType="java.lang.String"/> >> >> <parameter property="lastName" jdbcType="VARCHAR" >> >> javaType="java.lang.String"/> >> >> </parameterMap> >> >> >> >> <parameterMap id="updateParam" class="person"> >> >> <parameter property="id" jdbcType="INTEGER" >> >> javaType="java.lang.Long"/> >> >> <parameter property="firstName" jdbcType="VARCHAR" >> >> javaType="java.lang.String"/> >> >> <parameter property="lastName" jdbcType="VARCHAR" >> >> javaType="java.lang.String"/> >> >> </parameterMap> >> >> >> >> <resultMap id="personResult" class="person"> >> >> <result property="id" column="id"/> >> >> <result property="firstName" column="first_name"/> >> >> <result property="lastName" column="last_name"/> >> >> </resultMap> >> >> >> >> <select id="getPersons" resultMap="personResult"> >> >> <![CDATA[ >> >> select * from person >> >> ]]> >> >> </select> >> >> >> >> <select id="getPerson" resultMap="personResult"> >> >> <![CDATA[ >> >> select * from person where id = #value# >> >> ]]> >> >> </select> >> >> >> >> <select id="findByLastName" resultMap="personResult"> >> >> select * from person where last_name = #value# >> >> </select> >> >> >> >> <insert id="addPerson" parameterMap="addParam"> >> >> <![CDATA[ >> >> insert into person (first_name,last_name) values ( ?,? ) >> >> ]]> >> >> <selectKey resultClass="java.lang.Long" keyProperty="id" >> >> type="post"> >> >> SELECT LAST_INSERT_ID() AS id >> >> </selectKey> >> >> </insert> >> >> >> >> <update id="updatePerson" parameterMap="updateParam"> >> >> <![CDATA[ >> >> update person set first_name = ?, last_name = ? where id = ? >> >> ]]> >> >> </update> >> >> >> >> <delete id="deletePerson"> >> >> <![CDATA[ >> >> delete from person where id = #value# >> >> ]]> >> >> </delete> >> >> </sqlMap> >> >> >> >> And here's my Spring bean def: >> >> <bean id="personDao" class="com.craig.dao.ibatis.PersonDaoiBatis"> >> >> <property name="dataSource" ref="dataSource"/> >> >> <property name="sqlMapClient" ref="sqlMapClient"/> >> >> </bean> >> >> >> >> What am I missing now? >> >> >> >> Cliff wrote: >> >> > >> >> > I'm following the Spring/iBatis tutorial and I'm at the step where >> you >> >> run >> >> > the PersonDaoTest using the GenericDao. The error I get is different >> >> from >> >> > the error the tutorial expects. I get: >> >> > >> >> > AbandonedObjectPool is used >> >> > ([EMAIL PROTECTED]) >> >> > LogAbandoned: false >> >> > RemoveAbandoned: true >> >> > RemoveAbandonedTimeout: 60 >> >> > >> >> > org.springframework.beans.factory.BeanCreationException: Error >> creating >> >> > bean with name 'universalDao' defined in URL >> >> > >> >> >> [jar:file:/home/ccc/.m2/repository/org/appfuse/appfuse-ibatis/2.0-m5-SNAPSHOT/appfuse-ibatis-2.0-m5-SNAPSHOT.jar!/applicationContext-dao.xml]: >> >> > Cannot resolve reference to bean 'sqlMapClient' while setting bean >> >> > property 'sqlMapClient'; nested exception is >> >> > org.springframework.beans.factory.BeanCreationException: Error >> creating >> >> > bean with name 'sqlMapClient' defined in URL >> >> > >> >> >> [jar:file:/home/ccc/.m2/repository/org/appfuse/appfuse-ibatis/2.0-m5-SNAPSHOT/appfuse-ibatis-2.0-m5-SNAPSHOT.jar!/applicationContext-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: >> >> > java.lang.RuntimeException: Error parsing XPath '/sqlMap/resultMap'. >> >> > Cause: java.lang.RuntimeException: Error configuring Result. Could >> not >> >> > set ResultClass. Cause: java.lang.ClassNotFoundException: >> >> > org.appfuse.tutorial.model.Person >> >> > Caused by: org.springframework.beans.factory.BeanCreationException: >> >> Error >> >> > creating bean with name 'sqlMapClient' defined in URL >> >> > >> >> >> [jar:file:/home/ccc/.m2/repository/org/appfuse/appfuse-ibatis/2.0-m5-SNAPSHOT/appfuse-ibatis-2.0-m5-SNAPSHOT.jar!/applicationContext-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: >> >> > java.lang.RuntimeException: Error parsing XPath '/sqlMap/resultMap'. >> >> > Cause: java.lang.RuntimeException: Error configuring Result. Could >> not >> >> > set ResultClass. Cause: java.lang.ClassNotFoundException: >> >> > org.appfuse.tutorial.model.Person >> >> > 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: >> >> > java.lang.RuntimeException: Error parsing XPath '/sqlMap/resultMap'. >> >> > Cause: java.lang.RuntimeException: Error configuring Result. Could >> not >> >> > set ResultClass. Cause: java.lang.ClassNotFoundException: >> >> > org.appfuse.tutorial.model.Person >> >> > at >> >> > >> >> >> com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:109) >> >> > at >> >> > >> >> >> com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:90) >> >> > >> >> > I can see the error is from the missing sqlMapClient bean definition >> in >> >> > applicationContext.xml. I noticed the problem right when I created >> the >> >> > file and copied the contents from the tutorial as Idea was >> highlighting >> >> > it. (I also noted how the dataSource was defined in another spring >> bean >> >> > def file so I ignored that error.) I'm looking back over the >> tutorial >> >> and >> >> > I don't see where I was supposed to define this bean. So now I ask >> did >> >> I >> >> > miss something or is the tutorial leaving out a step? >> >> > >> >> >> >> -- >> >> View this message in context: >> >> http://www.nabble.com/Did-I-miss-a-step--tf3711975s2369.html#a10383761 >> >> Sent from the AppFuse - User mailing list archive at Nabble.com. >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> >> > >> > >> > -- >> > http://raibledesigns.com >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: [EMAIL PROTECTED] >> > For additional commands, e-mail: [EMAIL PROTECTED] >> > >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/Did-I-miss-a-step--tf3711975s2369.html#a10393226 >> Sent from the AppFuse - User mailing list archive at Nabble.com. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > > -- > http://raibledesigns.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/Did-I-miss-a-step--tf3711975s2369.html#a10396271 Sent from the AppFuse - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
