I'm having problems connecting Torque(3.0.2rc2 and 3.1) to an OS390 IBM DB2 using JDBC driver.
I have gotten Tomcat to start without complaint, but get exception when trying to access the
connection pool.
org.apache.jasper.JasperException: Connection object was null. This could be due to a misconfiguration
of the DataSourceFactory. Check the logs and Torque.properties to better determine the cause.
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
*
*
*
----- Root Cause -----
java.lang.NullPointerException: Connection object was null. This could be due to a misconfiguration
of the DataSourceFactory. Check the logs and Torque.properties to better determine the cause.
at org.apache.torque.util.Transaction.rollback(Transaction.java:179)
at org.apache.torque.util.Transaction.safeRollback(Transaction.java:221)
at com.sprint.nsd.ceas.datapack.BaseTblScty.save(BaseTblScty.java:819)
at com.sprint.nsd.ceas.datapack.BaseTblScty.save(BaseTblScty.java:794)
*
*
*
I am able to connect from within a servlet with the standard hardcoding of my parameters without
Torque(url/username/etc).. meaning driver is ok for Torque(??)
I have seen in the docs and newslist that many people have used an implementation of Adapter
class. Can someone share how this is implemented? Also, I'm concerned about the format of
Torque generated SQL; I need: Select * from Schema.TableName where...
One potential problem in getting my pool/datasource to work may be in the validation query
(or) format of the SQL as mentioned above. I have a working implementation of MySQL which
omitted the "validation query" parameter from the Torque.properties file. Is this required
for DB2?
Our team is in limbo until we get this obstacle overcome. Meanwhile, we're attempting to hack
the Torque source to use a working connection pool generated by weblogic. Torque.init() throwing
exception in this case.
We have attempted this with Tomcat 4, and Weblogic704. Our wish is to have the servlet container
generate the pool and Torque retrieve connections. Following is sample config.
**************Web.xml******************
<servlet>
<servlet-name>initServlet</servlet-name>
<servlet-class>com.sprint.nsd.ceas.control.InitServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/conf/Torque.properties</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
*
*
*
<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>
jdbc/db2d
</res-ref-name>
<res-type>
org.apache.torque.dsfactory.TorqueDataSourceFactory
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
*****************Server.xml****************
<Context path="/db2d" docBase="ceas" debug="0" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_ceas_log."
suffix=".txt" timestamp="true"/>
<Resource name="jdbc/db2d" auth="SERVLET" type="org.apache.torque.dsfactory.TorqueDataSourceFactory"/>
<ResourceParams name="jdbc/db2d">
<parameter><name>dataSourceName</name><value>java:comp/env/jdbc/db2d</value></parameter>
</ResourceParams>
</Context>
************Torque.properties****************
## Using torque's old pool
torque.dsfactory.db2d.factory=org.apache.torque.dsfactory.TorqueDataSourceFactory
torque.dsfactory.db2d.pool.defaultMaxConnections=30
torque.dsfactory.db2d.pool.maxExpiryTime=3600
torque.dsfactory.db2d.pool.connectionWaitTimeout=10
torque.dsfactory.db2d.connection.driver = COM.ibm.db2.jdbc.app.DB2Driver
torque.dsfactory.db2d.connection.url = jdbc:db2://sa05.corp.sprint.com:port/db2d
#torque.dsfactory.db2d.connection.url = jdbc:db2://ipAddress:port/db2d
# next one assumes the PC running tomcat knows what alias db2d means; not sure if this is
doable
#torque.dsfactory.db2d.connection.url = jdbc:db2:db2d
torque.dsfactory.db2d.connection.user = username
torque.dsfactory.db2d.connection.password = password