环境:RESIN3,struts1.3.8,spring2,ibatis2.3,
调用存储过程时,显示:(网上查了,得不到解决)
只要是调用存储过程,就这样显示。soentry.xml: <parameterMap id="swapParameters" class="map" >
<parameter property="cuhuid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>
<parameter property="sopoid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>
</parameterMap>
<procedure id="cuhuoToShopo" parameterMap="swapParameters" >
{call copy_to(?,?)}
</procedure> java source(DAO): public void confirm(HashMap paramMap) throws SQLException {
sqlMapClient.queryForObject("soentry.cuhuoToShopo", paramMap);
}错误信息:500 Servlet Exception[show] java.sql.SQLException: Callable statments not supported.javax.servlet.ServletException: com.ibatis.common.jdbc.exception.NestedSQLException:--- The error occurred in model/soentry_SqlMap.xml.
--- The error occurred while executing query procedure.
--- Check the {call copy_to(?,?)}.
--- Check the SQL Statement (preparation failed).
--- Cause: java.sql.SQLException: Callable statments not supported.
at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:47)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
at java.lang.Thread.run(Thread.java:595)
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in model/soentry_SqlMap.xml.
--- The error occurred while executing query procedure.
--- Check the {call copy_to(?,?)}.
--- Check the SQL Statement (preparation failed).
--- Cause: java.sql.SQLException: Callable statments not supported.
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:566)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:83)
at model.SoentryDAOImpl.confirm(SoentryDAOImpl.java:178)
at com.ssi.model.biz.impl.ShopoBiz.confirm(ShopoBiz.java:169)
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:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy22.confirm(Unknown Source)
at action.CuhuoSubmitAction.confirm(CuhuoSubmitAction.java:201)
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:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:47)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: Callable statments not supported.
at com.mysql.jdbc.Connection.prepareCall(Connection.java:1216)
......
调用存储过程时,显示:(网上查了,得不到解决)
只要是调用存储过程,就这样显示。soentry.xml: <parameterMap id="swapParameters" class="map" >
<parameter property="cuhuid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>
<parameter property="sopoid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>
</parameterMap>
<procedure id="cuhuoToShopo" parameterMap="swapParameters" >
{call copy_to(?,?)}
</procedure> java source(DAO): public void confirm(HashMap paramMap) throws SQLException {
sqlMapClient.queryForObject("soentry.cuhuoToShopo", paramMap);
}错误信息:500 Servlet Exception[show] java.sql.SQLException: Callable statments not supported.javax.servlet.ServletException: com.ibatis.common.jdbc.exception.NestedSQLException:--- The error occurred in model/soentry_SqlMap.xml.
--- The error occurred while executing query procedure.
--- Check the {call copy_to(?,?)}.
--- Check the SQL Statement (preparation failed).
--- Cause: java.sql.SQLException: Callable statments not supported.
at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:47)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
at java.lang.Thread.run(Thread.java:595)
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in model/soentry_SqlMap.xml.
--- The error occurred while executing query procedure.
--- Check the {call copy_to(?,?)}.
--- Check the SQL Statement (preparation failed).
--- Cause: java.sql.SQLException: Callable statments not supported.
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:566)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:83)
at model.SoentryDAOImpl.confirm(SoentryDAOImpl.java:178)
at com.ssi.model.biz.impl.ShopoBiz.confirm(ShopoBiz.java:169)
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:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy22.confirm(Unknown Source)
at action.CuhuoSubmitAction.confirm(CuhuoSubmitAction.java:201)
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:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:47)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: Callable statments not supported.
at com.mysql.jdbc.Connection.prepareCall(Connection.java:1216)
......
解决方案 »
- 求助jsp问题,这段代码哪出错了
- struts2+spring+hibernate 登录
- hibernate DetachedCriteria
- C调用c#的web service,谁要好方案说说?如何调用!
- 请问下大家,J2EE是不是其实就是用来做java web 开发的啊!!!!
- spring 问题
- 怎么把hibernate的hql语言中的“?”变成实际值
- 新人求助jboss的安装问题
- 谁能给我个org.apache.commons.net.ftp包
- 能够打乱 java 的class, 防止被反编译的软件有什么?在线
- 找工作ing(西安)
- JFreeChart热点用struts2如何生成?求案例
{call copy_to(?,?)}
</procedure> 这个?好像在xml里面需要转义,也就是要变成&
在<procedure>里面加上个"<![CDATA[ ]]>"试一下也就是变成
<procedure id="cuhuoToShopo" parameterMap="swapParameters" >
<![CDATA[
{call copy_to(?,?)}
]]>
</procedure> good luck
{call copy_to(?,?)}
</procedure>
这个?好像在xml里面需要转义?:没必要
mysql-5.0.22,lib用mysql-connector-java-5.0.6-bin.jar
用mysql-connector-java-5.1.12-bin.jar也报一样的错误存储过程直接CALL是OK的
DELIMITER $$;
DROP PROCEDURE IF EXISTS `soft2`.`copy_to`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `copy_to`(IN cuhuid int,IN sopoid int)
BEGIN
DECLARE done INT default 0;
DECLARE ocuhuoID INT;
DECLARE ohuoID INT;
DECLARE ohuoNum VARCHAR(30);
DECLARE oamount INT;
DECLARE otranRate INT;
DECLARE rs CURSOR FOR SELECT cuhuoID,huoID,huoNum,amount,tranRate FROM cuentry WHERE cuhuoID=cuhuid;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN rs;
WHILE done=0 DO
FETCH rs INTO ocuhuoID,ohuoID,ohuoNum,oamount,otranRate;
#IF NOT done THEN
INSERT INTO soentry(cuhuoID,huoID,huoNum,amount,tranRate)
VALUES(sopoid,ohuoID,ohuoNum,oamount,otranRate);
#END IF;
END WHILE;
CLOSE rs;
END$$
DELIMITER ;$$就是想把cuentry的一些记录改一下cuhuoID再插到soentry表。。
{call copy_to(?,?)}
</procedure> 是不是少了resultMap ?
你那个MAP把参数传进来的时候,比如 name=111 ago=222,你说name对应到第1个?还是第二个?
这个考普。换成这个试试:
<procedure id="cuhuoToShopo" parameterMap="swapParameters" >
{call copy_to(#cuhuid#,#sopoid#)}
</procedure> good luck
--- The error occurred while executing query procedure.
--- Check the {call copy_to(#cuhuid#,#sopoid#)}.
--- Check the SQL Statement (preparation failed).
--- Cause: java.sql.SQLException: Callable statments not supported.
at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
........
mysql-5.0.22
调用一简单的存储过程,也是报同样的错
如下面这个简单的:DELIMITER $$;
DROP PROCEDURE IF EXISTS `soft2`.`lisCity`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `lisCity`()
BEGIN
SELECT * FROM city;
END$$
DELIMITER ;$$
parameterMap
属性parameterMap的值等于一个预先定义的<parameterMap>元素的名称。parameterMap属性很少使用,更多的是使用上面的parameterClass和inline parameter(接下来会讨论)。
注意!动态mapped statement只支持inline parameter,不支持parameter map。
parameterMap的基本思想是定义一系列有次序的参数系列,用于匹配JDBC PreparedStatement的值符号。例如:
<parameterMap id=”insert-product-param” class=”com.domain.Product”>
<parameter property=”id”/>
<parameter property=”description”/>
</parameterMap>
<statement id=”insertProduct” parameterMap=”insert-product-param”>
insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (?,?);
</statement>
上面的例子中,parameter map的两个参数按次序匹配SQL语句中的值符号(?)。因此,第一个“?”号将被“id”属性的值替换,而第二个“?”号将被“description”属性的值替换。Parameter Map及其选项将在以后详细讨论。
public void confirm(HashMap paramMap) throws SQLException {
sqlMapClient.queryForObject("soentry.cuhuoToShopo", paramMap);
} 你的paramMap是否正确的put了cuhuid和sopoid,请检查下。
Map paramMap = new HashMap();
System.out.println("cuuuuid:"+cu.getId());
paramMap.put("cuhuid", cu.getId());
System.out.println("sopoid:"+cuhuoid);
paramMap.put("sopoid", new Integer(cuhuoid));
shopoBiz.confirm(paramMap);应该是正确地put了.
System.out.println("cuuuuid:"+cu.getId());
System.out.println("sopoid:"+cuhuoid);
这两句在CONSOLE看到了正常值...
问题出在soentry.xml<parameterMap id="swapParameters" class="java.util.Map" >
<parameter property="cuhuid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN" />
<parameter property="sopoid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN" />
</parameterMap>
<procedure id="cuhuoToShopo" parameterMap="swapParameters" >
{call cuSho(?,?)}
</procedure>
但估计不是..我会继续搞清这个贴....
looklook
<parameter property="cuhuid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>
<parameter property="sopoid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>
</parameterMap>
你用map的话,上面这个不用配置,简单一点直接照这样
<procedure id="cuhuoToShopo" parameterClass="java.util.Map" >
exec cuhuoToShopo #cuhuid#,#sopoid#
</procedure>
参数是你的DAO在调用方法时候map的key就可以了
javax.servlet.ServletException: java.sql.SQLException: Callable statments
not supported.
at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:47)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: Callable statments not supported.
at com.mysql.jdbc.Connection.prepareCall(Connection.java:1216)
at action.CuhuoSubmitAction.confirm(CuhuoSubmitAction.java:213)
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:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:47)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
at java.lang.Thread.run(Thread.java:595){
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.CallableStatement;
import com.mysql.jdbc.Connection;
{
...
Connection conn = getConn();
CallableStatement cs = (CallableStatement) conn.prepareCall("{call cuSho(?,?)}");
cs.setInt(1, cu.getId());
cs.setInt(2, cuhuoid);
cs.executeUpdate();} private Connection getConn(){
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
try {
conn = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/soft2?useUnicode=true&characterEncoding=utf-8","root","xxxx");
} catch (SQLException e1) {
e1.printStackTrace();
}
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
}问题如在:RESIN?spring?...不清楚
是有的
import com.mysql.jdbc.Driver;
public class Test{private Connection getConn(){
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
try {
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/soft2?useUnicode=true&characterEncoding=utf-8","zym","whywhyl1211");
} catch (SQLException e1) {
e1.printStackTrace();
}
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
} public void testC() {
Connection conn = getConn();
CallableStatement cs = null;
try {
CallableStatement cStmt = conn.prepareCall("{call cuSho(1,858)}");
cStmt.executeUpdate();
} catch (Exception e) {
System.out.println("hahad" + e.getMessage());
} finally {
try {
conn.close();
} catch (Exception ex) {
System.out.println("ex : " + ex.getMessage());
}
}
} public static void main(String[] args) {
new Test().testC();
}
}
但植入程序,在CuhuoSubmitAction中: Cusho cuso=new Cusho();//调用和Test相同的程序。。
cuso.confirm(cu.getId(), new Integer(cuhuoid));又报:Callable statments not supported(如下),怀疑是RESIN的问题了
500 Servlet Exception[show] java.sql.SQLException: Callable statments not supported.javax.servlet.ServletException: java.sql.SQLException: Callable statments
not supported.
at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:47)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: Callable statments not supported.
at com.mysql.jdbc.Connection.prepareCall(Connection.java:1216)
at action.Cusho.confirm(Cusho.java:29)
at action.CuhuoSubmitAction.confirm(CuhuoSubmitAction.java:210)
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:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:47)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
at java.lang.Thread.run(Thread.java:595)
ibatis-2.3.4.726
mysql-connector-java-5.1.6-bin.jar
Mysql Server version: 5.1.37-1ubuntu5.1 (Ubuntu);<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
errorTracingEnabled="true"
enhancementEnabled="true"
classInfoCacheEnabled="true"
lazyLoadingEnabled="true"
maxRequests="32"
maxSessions="15"
maxTransactions="5"
useStatementNamespaces="false"
/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/ibatis"/>
<property name="JDBC.Username" value="ibts_root"/>
<property name="JDBC.Password" value="coffee&tea"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/axman/Person.xml"/>
</sqlMapConfig><?xml version="1.0" encoding="GBK"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<parameterMap class="map" id="swapParameters">
<parameter property="name" javaType="java.lang.String" jdbcType="varchar" mode="IN"/>
<parameter property="ago" javaType="java.lang.Integer" jdbcType="int" mode="IN"/>
</parameterMap>
<procedure id="insertNameByProcedure" parameterMap="swapParameters">
{call proc_test(?,?)}
</procedure>
</sqlMap>
Map p = new HashMap();
p.put("name", "test001");
p.put("ago", 1);
String resource = "com/axman/SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient(reader);
client.update("insertNameByProcedure",p);
就这些东西,成功插入,不要用queryForObject,会死等在那儿。
ibatis-2.3.4.726
mysql-connector-java-5.1.6-bin.jar
Mysql Server version: 5.1.37-1ubuntu5.1 (Ubuntu)
这三个版本在resin下成功调用存储过程
也是两个参数,插入操作
只是之前怎么就不行呢,现在RESIN也行呢
CuhuoSubmitAction中:
shopoBiz.confirm(paramMap);现在,点击页面上的“审核”按钮,能正确调用存储过程,,但页面就停了,不跳转了,,虽然看到进度条在前进TOMCAT和RESIN都一样,,,
不过如果在CuhuoSubmitAction中,不通过DAO,ibatis,而用jdbc: Cusho cuso=new Cusho();
cuso.confirm(cu.getId(), new Integer(cuhuoid));
//shopoBiz.confirm(paramMap);页面就能正常跳转,,,
CuhuoSubmitAction中:
shopoBiz.confirm(paramMap); 现在,点击页面上的“审核”按钮,能正确调用存储过程,,但页面就停了,不跳转了,,虽然看到进度条在前进TOMCAT和RESIN都一样,,, ”页面不跳转的同时,电脑CPU平均占50%,陷在里头了???
如果无返回那queryForObject可能就等了,你改成update方法执行就行了