Well, that looks good.
At this point, I might code up something outside of iBATIS to verify that
the JDNI object is really there and working. Something like this:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)
envCtx.lookup("jdbc/medical");
Connection conn = ds.getConnection();
System.out.println("DB Version : "
+ conn.getMetaData().getDatabaseMajorVersion());
conn.close();
That way you'll know if it's a Tomcat or iBATIS issue.
On 3/27/08 10:18 AM, "Tom Henricksen" <[EMAIL PROTECTED]> wrote:
> This is the sqlmaps config file.
>
> <?xml version="1.0" ?>
> <!DOCTYPE sqlMapConfig
> PUBLIC '-//iBATIS.com//DTD SQL Map Config 2.0//EN'
> 'http://www.ibatis.com/dtd/sql-map-config-2.dtd'>
> <sqlMapConfig>
>
> <properties
> resource="com/advtechgrp/configuration/deployment.properties"/>
>
> <settings cacheModelsEnabled="false" enhancementEnabled="false"
> lazyLoadingEnabled="false" maxRequests="32" maxSessions="10"
> maxTransactions="5" useStatementNamespaces="true"/>
>
>
> <typeAlias alias="DomainReference"
> type="com.advtechgrp.bop.medical.common.DomainReference"/>
>
> <typeHandler
> callback="com.advtechgrp.bop.medical.common.CharTypeHandler"
> javaType="java.lang.String"/>
>
> <typeHandler
> callback="com.advtechgrp.bop.medical.common.OffenderCodeTypeHandler"
> javaType="com.advtechgrp.bop.medical.offender.business.OffenderCode"/>
>
> <typeHandler
> callback="com.advtechgrp.bop.medical.common.SmallIntTypeHandler"
> javaType="java.lang.Short"/>
>
> <transactionManager type="JDBC">
> <dataSource type="JNDI">
> <property name="DataSource"
> value="java:comp/env/jdbc/medical"/>
> </dataSource>
> </transactionManager>
>
> <sqlMap
> resource="com/advtechgrp/bop/medical/data/CommonVsp.xml"/>
> <sqlMap
> resource="com/advtechgrp/bop/medical/offender/data/OffenderDef.xml"/>
> <sqlMap
> resource="com/advtechgrp/bop/medical/common/data/admcounter.xml"/>
> <sqlMap
> resource="com/advtechgrp/bop/medical/activity/data/ActivityFrequencyVsp.
> xml"/>
> <sqlMap
> resource="com/advtechgrp/bop/medical/activity/data/ActivityVsp.xml"/>
> </sqlMapConfig>
>
> -----Original Message-----
> From: Christopher Lamey [mailto:[EMAIL PROTECTED]
> Sent: Thursday, March 27, 2008 10:54 AM
> To: [email protected]
> Subject: Re: iBatis - tomcat JNDI setup
>
> That looks to me like iBATIS is trying to create a connection pool
> rather
> than using the one in JNDI.
>
> Can you send your whole SqlMapConfig.xml?
>
> On 3/27/08 6:47 AM, "Tom Henricksen" <[EMAIL PROTECTED]> wrote:
>
>> I tried what you suggested (removing the entry from web.xml and the
>> resource link from the context.xml) and I now get this error message
>> from my application.
>>
>> org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver
> of
>> class '' for connect URL 'null'
>> at
>>
> org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource
>> .java:780)
>> at
>>
> org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.ja
>> va:540)
>> at
>>
> com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.init(JdbcTrans
>> action.java:48)
>> at
>>
> com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.getConnection(
>> JdbcTransaction.java:89)
>> at
>>
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQuery
>> ForList(GeneralStatement.java:123)
>> at
>>
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMap
>> ExecutorDelegate.java:615)
>>
>> Thanks,
>> Tom
>>
>>
>> -----Original Message-----
>> From: Tom Henricksen [mailto:[EMAIL PROTECTED]
>> Sent: Wednesday, March 26, 2008 9:09 PM
>> To: [email protected]
>> Subject: RE: iBatis - tomcat JNDI setup
>>
>> I tried following:
>> http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html
>> And it has both the context.xml and the entry in the web.xml.
>> I will try without the web.xml and see.
>>
>> Thanks,
>> Tom
>>
>> -----Original Message-----
>> From: Christopher Lamey [mailto:[EMAIL PROTECTED]
>> Sent: Wed 3/26/2008 4:23 PM
>> To: [email protected]
>> Subject: Re: iBatis - tomcat JNDI setup
>>
>> Having the ResourceLink and the Resource in the context xml might be
>> screwing it up. You're telling it to link to a global JNDI object,
> but
>> it
>> doesn't exist at that level.
>>
>> Also using a resource-ref in the web.xml and a Resource element in the
>> context.xml is redundant.
>>
>> Read the Resource Definitions section of this page:
>>
>> http://tomcat.apache.org/tomcat-5.5-doc/config/context.html
>>
>> Declaring a Resource in the context xml allows you to drop in JNDI
>> objects
>> for you webapp without having to muck with web.xml.
>>
>> On 3/26/08 3:17 PM, "Tom Henricksen" <[EMAIL PROTECTED]> wrote:
>>
>>> I am trying to setup Tomcat JNDI to work on our application with
>> iBatis.
>>>
>>> I get the following error:
>>>
>>>
>>>
>>> java.lang.RuntimeException: Error occurred. Cause:
>>> com.ibatis.common.xml.NodeletException: Error parsing XML. Cause:
>>> java.lang.RuntimeException: Error parsing XPath
>>> '/sqlMapConfig/transactionManager/dataSource/end()'. Cause:
>>> com.ibatis.sqlmap.client.SqlMapException: There was an error
>> configuring
>>> JndiDataSourceTransactionPool. Cause:
>>> javax.naming.NameNotFoundException: Name jdbc is not bound in this
>>> Context
>>>
>>> at
>>>
>>
> com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConf
>>> igParser.java:89)
>>>
>>> at
>>>
>>
> com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapCli
>>> entBuilder.java:63)
>>>
>>> at
>>>
>>
> com.advtechgrp.bop.medical.data.SqlMapsService.initSqlMaps(SqlMapsServic
>>> e.java:58)
>>>
>>> at
>>>
>>
> com.advtechgrp.bop.medical.web.MedicalApplication.initialize(MedicalAppl
>>> ication.java:106)
>>>
>>> at
>>>
>>
> com.advtechgrp.bop.medical.web.listener.FacesListener.contextInitialized
>>> (FacesListener.java:63)
>>>
>>> at
>>>
>>
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.j
>>> ava:3831)
>>>
>>> at
>>>
>>
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4323
>>> )
>>>
>>> at
>>>
>>
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.ja
>>> va:823)
>>>
>>>
>>>
>>>
>>>
>>> SqlMapConfig.xml ibatis 2.30
>>>
>>> <transactionManager type="JDBC">
>>>
>>> <dataSource type="JNDI">
>>>
>>> <property name="DataSource"
>>> value="java:comp/env/jdbc/medical"/>
>>>
>>> </dataSource>
>>>
>>> </transactionManager>
>>>
>>>
>>>
>>> context.xml - tomcat 5.0.30
>>>
>>> <?xml version='1.0' encoding='utf-8'?>
>>>
>>> <Context debug="4"
>>>
>>> docBase="C:/Java/eclipse-europa/europa-workspace/bop-med/web"
>>>
>>> path="/bop-med" reloadable="true"
>>>
>>> workDir="work\Catalina\localhost\bop-med">
>>>
>>>
>>>
>>> <ResourceLink global="jdbc/medical" name="jdbc/medical"
>>>
>>> type="javax.sql.DataSource"/>
>>>
>>>
>>>
>>> <Resource name="jdbc/medical" auth="Container"
>>>
>>> type="javax.sql.DataSource" username="user"
>>>
>>> password="pass"
>>>
>>> driverClassName="com.ibm.db2.jcc.DB2Driver"
>>>
>>> url="jdbc:db2://srv:50000/medical"
>>>
>>> maxActive="8" maxIdle="4"/>
>>>
>>> </Context>
>>>
>>>
>>>
>>> In application web.xml
>>>
>>>
>>>
>>> <resource-ref>
>>>
>>> <description>
>>>
>>> jdbc/medical
>>>
>>> </description>
>>>
>>> <res-ref-name>jdbc/medical</res-ref-name>
>>>
>>> <res-type>javax.sql.DataSource</res-type>
>>>
>>> <res-auth>Container</res-auth>
>>>
>>> </resource-ref>
>>>
>>>
>>>
>>> Any suggestions?
>>>
>>>
>>>
>>> Thanks in advance,
>>>
>>>
>>>
>>> Tom Henricksen
>>> Consultant
>>> Advanced Technologies Group, Inc.
>>>
>>> 1601 48th Street, Suite 220
>>>
>>> West Des Moines, IA 50265
>>>
>>> * Office: (515) 221-9344 Ext 138
>>>
>>> * Fax: (515) 221-1266
>>> * Email: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>>
>