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