Problem with getMetaData() when Teiid deployed in JBoss AS
kenj May 6, 2009 2:20 PMWhen issuing a getMetaData() call against Teiid, an AbstractMethodError exception occurs. Teiid 6.0.0 (latest) is deployed in JBoss AS 4.2.3 using the FilePath mode using EmbeddedDataSource configuration. First is the stack trace. Below that is the relevant portion of the test JSP. Note that the query prior to the getMetaData() call works correctly and returns the expected results so the connection is valid.
The exception trace:
14:00:23,601 WARN [TxConnectionManager] Connection error occured: org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener@1ba0281[state=NORMAL mc=org.jboss.resource.adapter.jdbc.xa.XAManagedConnection@1646de5 handles=1 lastUse=1241632565620 permit=true trackByTx=false mcp=org.jboss.resource.connectionmanager.JBossManagedConnectionPool$OnePool@6b0a6a context=org.jboss.resource.connectionmanager.InternalManagedConnectionPool@178efd5 xaResource=org.jboss.resource.connectionmanager.xa.JcaXAResourceWrapper@c9b2bc txSync=null]
javax.resource.spi.ResourceAdapterInternalException: Unexpected error
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.broadcastConnectionError(BaseWrapperManagedConnection.java:393)
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.connectionError(BaseWrapperManagedConnection.java:370)
at org.jboss.resource.adapter.jdbc.WrappedConnection.checkException(WrappedConnection.java:865)
at org.jboss.resource.adapter.jdbc.WrappedConnection.getMetaData(WrappedConnection.java:534)
at org.apache.jsp.JBossTest_jsp._jspService(JBossTest_jsp.java:110)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.AbstractMethodError: com.metamatrix.jdbc.MMConnection.getBaseDriver()Lcom/metamatrix/jdbc/BaseDriver;
at com.metamatrix.jdbc.MMConnection.getMetaData(MMConnection.java:495)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.metamatrix.jdbc.MMXAConnection$CloseInterceptor.invoke(MMXAConnection.java:70)
at $Proxy70.getMetaData(Unknown Source)
at org.jboss.resource.adapter.jdbc.WrappedConnection.getMetaData(WrappedConnection.java:530)
... 25 more
14:00:23,605 ERROR [STDERR] May 6, 2009 2:00:23 PM com.metamatrix.jdbc.MMConnection close
INFO: Connection successfully closed.
JSP test snippet:
<%@ page import="javax.naming.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%! private String connectionInfo = null; %>
<%! private Connection con = null; %>
<%! private Statement stmt = null; %>
<%! private ResultSet rs = null; %>
<%
try {
InitialContext ctxt = new InitialContext();
DataSource ds = (DataSource) ctxt.lookup("java:/TEIID-XA-DS-Financials");
con = ds.getConnection();
// Get a statement from the connection
stmt = con.createStatement() ;
// Execute the query
rs = stmt.executeQuery( "select ProductID, ProductName, ProductType, Issuer, Exchange, DJIComponent, SP500Component, Nas100Component, AmexIntComponent, PrimaryBusiness, SymbolType, Symbol, CUSIP, value from Data_Federation_VML.All_Products_with_values" ) ;
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
// Loop through the result set
while( rs.next() ) {
for (int i=1; i<=numberOfColumns;i++) {
System.out.print( rs.getString(i) ) ;
System.out.print( "\t" ) ;
}
System.out.println( "\n" ) ;
}
// Close the result set, statement
rs.close() ;
stmt.close() ;
DatabaseMetaData metaData = con.getMetaData();
connectionInfo = "Database Name: " + metaData.getDatabaseProductName() + "" +
"Database Version: " + metaData.getDatabaseProductVersion() + "" +
"Driver Name: " + metaData.getDriverName() + "" +
"Driver Version: " + metaData.getDriverVersion() + "" +
"URL: " + metaData.getURL();
// Close connection
con.close() ;
%>