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