Проблема такая. Надо вызвать ХП (постгрес) вида
| Цитата | CREATE OR REPLACE FUNCTION getallprods(args integer[])
|
Долго мучался, в итоге получилось так:
| Цитата | String driverName = "org.postgresql.Driver"; Class.forName(driverName); Connection cn = DriverManager.getConnection( "jdbc:postgresql://localhost:5432/mydb","postgres","passw"); Object[] param = {1,2,3,4}; Array array = connection.createArrayOf("integer", param); CallableStatement proc = connection.prepareCall("{ call getallprods(?) }"); proc.setArray(1, array); proc.execute();
|
Все бы ничего но если использовать пул соединений типа
| Цитата | Context ctx = new InitialContext(); if(ctx == null ) throw new Exception("No Context"); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/postgres"); Connection cn = ds.getConnection(); Object[] param = {1,2,3,4}; Array array = connection.createArrayOf("integer", param);
|
то на последней строчке валится
| Цитата | org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 57
54: Object[] o = {1,2,3,4,5}; 55: String classname = "org.postgresql.Driver"; 56: Class.forName(classname); 57: Array array = conn.createArrayOf("smallint", o); 58: 59: conn.close(); 60: }
Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause javax.servlet.ServletException: java.lang.AbstractMethodError: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array; org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781) org.apache.jsp.index_jsp._jspService(index_jsp.java:156) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause java.lang.AbstractMethodError: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array; org.apache.jsp.index_jsp._jspService(index_jsp.java:121) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
|
Что с этим делать? |