[ https://issues.apache.org/jira/browse/IBATIS-424?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Larry Meadors closed IBATIS-424. -------------------------------- Resolution: Invalid Please do not post support requests to JIRA. Use the mailing lists instead: * http://ibatis.apache.org/mailinglists.html Also, be sure to read the developers guide (available in several languages) before posting: For Java - http://ibatis.apache.org/javadownloads.html For C# - http://ibatis.apache.org/dotnetdownloads.cgi If you do not want to subscribe, you can use the following forums instead: For Java: http://www.nabble.com/iBATIS---User---Java-f370.html For C#: http://www.nabble.com/iBATIS---User---Cs-f369.html > java.sql.SQLException : Protocol violation > ------------------------------------------ > > Key: IBATIS-424 > URL: https://issues.apache.org/jira/browse/IBATIS-424 > Project: iBatis for Java > Issue Type: Task > Components: DAO, SQL Maps > Affects Versions: 2.3.0 > Environment: Windows XP, WSAD 5.1.2, Oracle 10.1.0.4.0 database and > 10.1.0.2.0 Oracle-JDBC driver. > Reporter: Sumeet Gupta > > I am using a simple iBatis call to a stored procedure, which takes two > integers as IN parameters and a REF CURSOR as an OUT parameter. > The REF CURSOR contains a single column, which is of type TIMESTAMP. > The SQL map configuration file is like:- > <?xml version="1.0" encoding="UTF-8" ?> > <!DOCTYPE sqlMapConfig > PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" > "C:/iBATIS/lib/sql-map-config-2.dtd"> > <sqlMapConfig> > <transactionManager type="JDBC" commitRequired="false"> > <dataSource type="SIMPLE"> > <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/> > <property name="JDBC.ConnectionURL" value="MY_URL"/> > <property name="JDBC.Username" value="MY_USER_ID"/> > <property name="JDBC.Password" value="MY_PASSWORD"/> > </dataSource> > </transactionManager> > <sqlMap resource="com/fmr/fims/ibatis/data/MyMap.xml"/> > </sqlMapConfig> > The SQL Map file is something like- > <?xml version="1.0" encoding="UTF-8" ?> > <!DOCTYPE sqlMap > PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" > "C:/iBATIS/lib/sql-map-2.dtd"> > <sqlMap namespace="MyMap"> > > <resultMap id="ResultData" class="com.fmr.fims.ibatis.domain.TestResult"> > <result property="time" column="TIMESTAMP" /> > </resultMap> > <parameterMap id="TEST_PARAM_MAP" class="map"> > <parameter property="MAX" jdbcType="NUMBER" mode="IN" /> > <parameter property="MIN" jdbcType="NUMBER" mode="IN" /> > <parameter property="RESULT" jdbcType="ORACLECURSOR" mode="OUT" /> > </parameterMap> > <procedure id="SP_TEST" parameterMap="TEST_PARAM_MAP" resultMap="ResultData"> > { call FUTURES_ACTIONS_PKG.SP_TEST(?,?,?) } > </procedure> > </sqlMap> > The following is my Java code's snippet:- > String resource = > "com/fmr/fims/ibatis/data/SqlMapConfig.xml"; > Reader reader = Resources.getResourceAsReader(resource); > System.out.println("Successfully read the resource > file"); > SqlMapClient sqlMap = > SqlMapClientBuilder.buildSqlMapClient(reader); > System.out.println("Before calling the query"); > Map paramMap = new HashMap(3); > paramMap.put("MAX", new Integer(26)); > paramMap.put("MIN", new Integer(24)); > paramMap.put("RESULT",""); > sqlMap.queryForObject("SP_TEST", paramMap); > Map resultMap = (Map) paramMap.get("RESULT"); > The Oracle stored proc simply returns a cursor, which contains a specific > column values (using SELECT statement), given a range (MAX and MIN as > parameters). > This is the error that I am getting:- > Successfully read the resource file > Before calling the query > java.sql.SQLException: Protocol violation > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125) > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162) > at oracle.jdbc.driver.DatabaseError.check_error(DatabaseError.java:885) > at oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:133) > at oracle.jdbc.driver.T4CConnection.do_rollback(T4CConnection.java:465) > at > oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:997) > at > com.ibatis.common.jdbc.SimpleDataSource.pushConnection(SimpleDataSource.java:527) > at > com.ibatis.common.jdbc.SimpleDataSource.access$100(SimpleDataSource.java:52) > at > com.ibatis.common.jdbc.SimpleDataSource$SimplePooledConnection.invoke(SimpleDataSource.java:954) > at $Proxy0.close(Unknown Source) > at > com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.close(JdbcTransaction.java:81) > at > com.ibatis.sqlmap.engine.transaction.TransactionManager.end(TransactionManager.java:111) > at > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(SqlMapExecutorDelegate.java:782) > at > com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(SqlMapSessionImpl.java:176) > at > com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(SqlMapClientImpl.java:154) > at > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransaction(SqlMapExecutorDelegate.java:883) > at > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:573) > 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) > Is this an environment issue? > Please help. I read that this may be caused due to a stale connection. > However, ibatis is handling the connection related stuff for me. What do i > need to do next? -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.