[JAVA] iBatis 2 SqlMap error

Pagina: 1
Acties:

  • bodiam
  • Registratie: December 2001
  • Laatst online: 31-12-2024
Beste mensen,

Ik kom er even niet uit. Ik gebruik Spring in combinatie met iBatis 2 onder Tomcat 5, en ik krijg steeds deze foutmelding:
code:
1
java.lang.IllegalArgumentException: No SqlMapClient specified

Google geeft precies 0 meldingen, en ik zie niet wat ik fout doen. Ik heb al files renamed, de tutorials van iBatis erbij gepakt, etc, maar geen resultaat.

Dit zijn mijn config files:

web.xml
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>XYZ Webapp</display-name>
  <servlet>
    <servlet-name>xyzwebapp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

    <servlet>
        <servlet-name>xmlrpc</servlet-name>
        <servlet-class>nl.uzorg.lspwebapp.rpc.XMLRPCService</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>xmlrpc</servlet-name>
        <url-pattern>/rpc/xmlrpc</url-pattern>
    </servlet-mapping>
</web-app>


xyzwebapp-servlet.xml
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd">
<beans>
    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location"><value>classpath:/jdbc.properties</value></property>
    </bean>
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName"><value>${jdbc.driverClassName}</value></property>
        <property name="url"><value>${jdbc.url}</value></property>
        <property name="username"><value>${jdbc.username}</value></property>
        <property name="password"><value>${jdbc.password}</value></property>
    </bean>
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource"><ref local="dataSource"/></property>
    </bean>
    <bean id="sqlMap" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation"><value>classpath:/sql-map-config.xml</value></property>
        <!--<property name="configLocation"><value>sql-map-config.xml</value></property>-->
    </bean>
</beans>


sql-map-config.xml
XML:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC
  "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
  "http://www.ibatis.com/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

    <sqlMap resource="Message.xml"/>

</sqlMapConfig>


En als laatste, de Message.xml
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap PUBLIC
  "-//iBATIS.com//DTD SQL Map 2.0//EN"
  "http://www.ibatis.com/dtd/sql-map-2.dtd">


<sqlMap namespace="Message">

    <resultMap id="result" class="nl.test.Message">
        <result property="content" column="message" columnIndex="1"/>

    </resultMap>

    <select id="getMessage" resultMap="result">
        select message from messages where messageid = #messageid#
    </select>
</sqlMap>


Oh, om die query uit te voeren doe ik dit:

Java:
1
Object result = getSqlMapClientTemplate().queryForObject("getPrimaryCareExtractQueryMessage", patientId);


Dit geeft een IllegalArgumentException, zie bovenstaand.

Alvast bedankt, ik weet even niet waar ik moet zoeken...

Erik

Verwijderd

heb je geen volledige stacktrace?

  • bodiam
  • Registratie: December 2001
  • Laatst online: 31-12-2024
Oh, jawel, excuses:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
java.lang.IllegalArgumentException: No SqlMapClient specified
        at org.springframework.util.Assert.notNull(Assert.java:90)
        at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:155)
        at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:222)
        at nl.test.webapp.rpc.handler.GetHandler.getMessage(GetBHandler.java:65)
        at nl.test.webapp.rpc.handler.GetHandler.execute(GetHandler.java:54)
        at org.apache.xmlrpc.XmlRpcWorker.invokeHandler(XmlRpcWorker.java:84)
        at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:146)
        at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:139)
        at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:114)
        at nl.test.webapp.rpc.XMLRPCService.handleRequest(XMLRPCService.java:79)
        at nl.test.webapp.rpc.XMLRPCService.doPost(XMLRPCService.java:66)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)


Ik weet niet of je er iets mee kunt, ik namelijk erg weinig, behalve zien in de Spring code dat deze melding optreed als de SqlMap null is. Maar waarom die null is, ik heb geen idee.

Verwijderd

Als ik naar SqlMapClientFactoryBean kijk kom ik de methode setSqlMapClientProperties tegen waarvan gezegd wordt dat het als aternatief kan worden gebruikt op <properties/> van iBatis. Die zie ik zo snel hierboven niet, misschien is dat het probleem.

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Heb je de malinglist van iBatis al gebrobeerd? Die schijnt ook vrij actief te zijn.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"