Hi,
in my environmet ( WindowsXP, Tomcat5, DB2) dbforms cannot estblish a
dbconnection via JNDI resource to the database.
If the dbconnection is defined directly in dbform-config.xml then it works
fine.
How do I properly define a JNDI Connection ?
Following error occurs :
******* connection error: ************
ERROR-[23.07.2004
17:10:08]-[http-8080-Processor25]-[org.dbforms.config.DbConnection.getConnectionFromJNDI(DbConnection.java:427)]-::getConnectionFromJNDI
- cannot retrieve a connection from JNDI:
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
at org.apache.naming.NamingContext.lookup(NamingContext.java:768)
at org.apache.naming.NamingContext.lookup(NamingContext.java:151)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:136)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at org.dbforms.config.DbConnection.getConnectionFromJNDI(DbConnection.java:414)
at org.dbforms.config.DbConnection.getConnection(DbConnection.java:548)
at org.dbforms.config.DbFormsConfig.getConnection(DbFormsConfig.java:230)
at org.dbforms.taglib.DbGetConnection.doStartTag(DbGetConnection.java:57)
at org.apache.jsp.scmrpt.ctrlReportGen_jsp._jspService(ctrlReportGen_jsp.java:262)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
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.StandardHostValve.invoke(StandardHostValve.java:137)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
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:793)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:534)
*************** END **********************
The Tomcat Context definition with Database Resource:
***** scmwebui.xml *******
<Context displayName="SCM WebUI" docBase="scmwebui" path="/scmwebui"
workDir="work\Catalina\localhost\scmwebui">
<Resource name="jdbc/SCMAN" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/SCMAN">
<parameter>
<name>url</name>
<value>jdbc:db2://localhost/SCMAN</value>
</parameter>
<parameter>
<name>validationQuery</name>
<value>values(current timestamp)</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>COM.ibm.db2.jdbc.net.DB2Driver</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>username</name>
<value>scmdbusr</value>
</parameter>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<parameter>
<name>password</name>
<value>pw23</value>
</parameter>
</ResourceParams>
</Context>
******** END **********
Reference in the deployment web.xml:
************** web.xml *************
<resource-ref>
<description>DB2 Datasource</description>
<res-ref-name>jdbc/SCMAN</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
********** END *****************
The JNDI connection definition
******** dbform-config.xml **********
....
<dbconnection
name = "jdbc/SCMAN"
isJndi = "true"
isPow2 = "false"
default = "true"
/>
....
******** END **********
What's wrong ?
This connection definition works:
******** dbform-config.xml **********
....
<dbconnection
id = "jakarta-commons-dbcp"
isJndi = "false"
isPow2 = "false"
default = "true"
connectionProviderClass = "org.dbforms.conprovider.JakartaConnectionProvider"
connectionPoolURL = ""
name = "jdbc:db2://localhost/SCMAN"
conClass = "COM.ibm.db2.jdbc.net.DB2Driver"
username = "scmdbusr"
password = "pw23">
<!-- jdbc properties -->
<property name="charSet" value="ISO-8859-1" />
<!-- connection pool dataSource properties -->
<pool-property name="validationQuery" value="values(current timestamp)"
/>
<pool-property name="maxActive" value="10" />
<pool-property name="maxIdle" value="5" />
<pool-property name="maxWait" value="-1" />
<pool-property name="useLog" value="false" />
<pool-property name="removeAbandoned" value="true" />
<pool-property name="logAbandoned" value="true" />
<pool-property name="removeAbandonedTimeout" value="60" />
</dbconnection>
....
******** END **********
Thanks for Help
Regards
Peter
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
DbForms Mailing List
http://www.wap-force.net/dbforms