读书人

使用ibatis中遇到的有关问题请迷津

发布时间: 2012-02-21 16:26:23 作者: rapoo

使用ibatis中遇到的问题,请高手指点迷津
我最近做了一个基于web开发的java项目,其中用到了ibatis技术。

我需要用java的一个方法调用ibatis的配置文件,然后往oracle数据库中写入一条记录,其中有两个字段是Clob的(大文本),就为这两个字段的读写折腾了好久,始终能正确运行。

公司要求我做项目的可以使用oracle10g的jdbc driver(ojdbc14.jar),也可以换成oracle9i的jdbcdriver(classes12.jar),

我目前的状况是换成10g的驱动后,就可以正确对大文本字段进行读写;
但是换成9i的驱动后,读取的时候是个null,而且写入的时候抛出异常,会报的错误为:
java.sql.SQLException: Io 异常: Connection reset by peer: socket write error
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.rollback(OracleConnection.java:13
80)
at com.ibatis.common.jdbc.SimpleDataSource.pushConnection(SimpleDataSour
ce.java:527)
at com.ibatis.common.jdbc.SimpleDataSource.access$100(SimpleDataSource.j
ava: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(JdbcT
ransaction.java:81)
at com.ibatis.sqlmap.engine.transaction.TransactionManager.end(Transacti
onManager.java:110)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(S
qlMapExecutorDelegate.java:780)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(SqlMap
SessionImpl.java:170)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(SqlMapC
lientImpl.java:149)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransacti
on(SqlMapExecutorDelegate.java:880)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExe
cutorDelegate.java:457)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionI
mpl.java:82)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.insert(SqlMapClientImp
l.java:60)
at com.lhcc.logging.LogSystemOpe.writeLog(LogSystemOpe.java:153)
at com.cltt.datainput.InputOperator.writeLog(InputOperator.java:2703)
at com.cltt.datainput.InputOperator.updateData(InputOperator.java:866)
at com.cltt.datainput.InputAction.execute(InputAction.java:48)
at org.apache.struts.action.RequestProcessor.processActionPerform(Reques


tProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:148
2)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterC
hain.java:113)
at com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.ja
va:190)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain
.java:177)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocatio
n.java:221)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:262
)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:315)
at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:353)
at com.caucho.util.ThreadPool.run(ThreadPool.java:302)
at java.lang.Thread.run(Thread.java:534)

我在网上查了很多资料,都说是网络连接不好,请问如何解决这个问题啊?这又是什么原因引起的呢?

[解决办法]
你最好为两个不同的驱动写两个不同的取得连接的方法,不要简单替换
[解决办法]
不是这样的,我们是团队开发,几个人要读取同一个连接数据库的属性文件的,我这两个连接的方式都是jdbc的连接方式
[解决办法]
oracle的大文本好像是有些问题,
上次一个项目,在oracle上,数据库导入,大文本丢失,后来只有先改成VARCHAR,后来再改成大文本,
页不知道什么原因,
和java无关,就是在命令行执行
环境:linux as4 + oracle 9204
[解决办法]
我用ojdbc14.jar替换classes12.jar直接访问9i数据库很长时间了,目前没有发现什么兼容性问题,而且解决了原来一些内存溢出的错误,为什么还要用classes12.jar呢?
[解决办法]
这是公司的那帮白痴规定的,必须要用classes12.jar
我跟他们说ojdbc14.jar是向下兼容的,他们也不听
气死我了
[解决办法]
不用oracle,路过
[解决办法]
帮up

读书人网 >Java Web开发

热点推荐