Data service: Fails to invoke a data service if the query has a mysql5 stored
procedure call
--------------------------------------------------------------------------------------------
Key: WSAS-668
URL: http://wso2.org/jira/browse/WSAS-668
Project: WSO2 WSAS
Issue Type: Bug
Components: data-services
Environment: wsas2.2-qabuild2, jdk15, winxp
Reporter: Charitha Kankanamge
Assigned To: sumedha rubasinghe
Priority: Critical
I'm getting the following error when trying to invoke a data service operation,
if the query has a SP call.
org.apache.axis2.AxisFault: Exception occurred while trying to execute the SQL
statement : call getEmployee(?)
at org.wso2.ws.dataservice.DBUtils.getSelectResult(DBUtils.java:362)
at org.wso2.ws.dataservice.DBUtils.getRDBMSResult(DBUtils.java:153)
at org.wso2.ws.dataservice.DBUtils.processSQLQuery(DBUtils.java:101)
at org.wso2.ws.dataservice.DBUtils.invoke(DBUtils.java:394)
at
org.wso2.ws.dataservice.DBMessageReceiver.invokeBusinessLogic(DBMessageReceiver.java:41)
at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42)
at
org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:148)
at
org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:135)
at
org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:129)
at
org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:803)
at
org.wso2.wsas.transport.WSASServlet.handleRestRequest(WSASServlet.java:149)
at org.wso2.wsas.transport.WSASServlet.doGet(WSASServlet.java:138)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.wso2.adminui.AdminUIServletFilter.doFilter(AdminUIServletFilter.java:142)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: PROCEDURE employeedb.getEmployee can't return
a result set in the given context
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1997)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2251)
at
com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1586)
at org.wso2.ws.dataservice.DBUtils.getSelectResult(DBUtils.java:251)
... 31
Given below is the relevant data service query.
<query id="StoredprocQuery">
<sql>call getEmployee(?)</sql>
<result element="employees" rowName="employee">
<element name="id" column="id" />
<element name="name" column="name" />
<element name="address" column="address" />
</result>
<param name="empid" sqlType="INTEGER" />
</query>
<operation name="getEmpusingSP">
<call-query href="StoredprocQuery">
<with-param name="id" query-param="empid" />
</call-query>
</operation>
And, here is my SP.
mysql> CREATE PROCEDURE getEmployee(empid INTEGER) select id, name, address
from employee where id=empid;
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://wso2.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
Wsas-java-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/wsas-java-dev