问题现象:
客户网站上调用service的信息简要突然变成(net.sourceforge.jtds.jdbc.ClobImpl@57b2dc3),程序没有改动过,现在却失效了。
跑去jtds官网(http://jtds.sourceforge.net/faq.html)查了一下:程序通过jtds去访问sqlserver数据库时,默认将text/ntext,image等大数据封装成CLOB对象(字符大对象——用来存储单字节的字符数据),而CLOB对象默认没有实现toString()方法,所以直接调用只会打印对象的ID。官方解释是,采用CLOB封装这些对象,对应列的数据无需加载到内存中,如果直接打印出来很容易造成预料外的情况导致内存溢出。
解决方法:
在配置Recource时,指定数据的链接方式不适用CLOB:
<Resource name="resource_name" auth="Container" type="javax.sql.DataSource" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://yourserver:1433;DatabaseName=dbname;useLOBs=false" username="xx" password="xxxx" maxActive="100" maxIdle="10" maxWait="-1" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。