[Seasar-user:22132] Seasar+java8+Oracle12c環境における挙動について
草苅 快
[E-MAIL ADDRESS DELETED]
2016年 10月 28日 (金) 15:44:36 JST
Seasar-userメーリングリスト
御中
初めまして、MLに送付させていただきます。
草苅と申します
java1.6で動かしているSeasar2のWEBアプリを
java1.8で動かした場合、下記事象が発生しました。
大変手数かと存じますが、可能であれば
同様の事象が発生していて解決した、または、調査の観点など
みなさまの知見をいただけませんでしょうか。
■事象
テスト用のテーブルを作成して、jdbcManager.selectBySql().getSingleResult()経由で
SELECT文をDBに投げようとしたところ、下記スタックトレースに記載した実行時例外が発生しました。
(ojdbc7.jar経由でgetSingleResult()を利用した場合本事象が発生する、などありますでしょうか)
※1.いくつかテスト用のDB参照機能を作成していて、下記
「呼び出し元のソース」に記載したものだけ本事象が発生しています。
※2.SQLをデバッグログに出力すると、事象が発生した場合でもSQLは出力される
■環境
・RHEL7.2
・Oracle12c(※ojdbc7.jar経由でアクセス)
・java1.8
・tomcat8.5
・Seasar(2.4.38)
■呼び出し元のソース
StringBuilder sql = new StringBuilder();
sql.append(" SELECT * FROM TEST T WHERE ");
sql.append(" T.ID1 = ? AND T.ID2 = ? AND T.ID3 = ? ");
jdbcManager.selectBySql(TEST.class, sql.toString(), id1, id2, id3).getSingleResult();
■スタックトレース
java.lang.ArrayIndexOutOfBoundsException
at oracle.jdbc.driver.DynamicByteArray.put(DynamicByteArray.java:519)
at oracle.jdbc.driver.ByteArray.put(ByteArray.java:234)
at oracle.jdbc.driver.T2CPreparedStatement.updateData(T2CPreparedStatement.java:2332)
at oracle.jdbc.driver.T2CStatement.t2cDefineExecuteFetch(Native Method)
at oracle.jdbc.driver.T2CPreparedStatement.doDefineExecuteFetch(T2CPreparedStatement.java:1578)
at oracle.jdbc.driver.T2CPreparedStatement.executeForRows(T2CPreparedStatement.java:938)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:957)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4845)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1501)
at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82)
at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82)
at org.seasar.extension.jdbc.impl.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:81)
at org.seasar.framework.util.PreparedStatementUtil.executeQuery(PreparedStatementUtil.java:49)
at org.seasar.extension.jdbc.query.AbstractSelect$6.handle(AbstractSelect.java:427)
at org.seasar.extension.jdbc.query.AbstractSelect$6.handle(AbstractSelect.java:426)
at org.seasar.extension.jdbc.query.AbstractSelect$1.handle(AbstractSelect.java:299)
at org.seasar.extension.jdbc.query.AbstractSelect$1.handle(AbstractSelect.java:297)
at org.seasar.extension.jdbc.manager.JdbcContextImpl.usingPreparedStatement(JdbcContextImpl.java:144)
at org.seasar.extension.jdbc.query.AbstractSelect.processPreparedStatement(AbstractSelect.java:294)
at org.seasar.extension.jdbc.query.AbstractSelect.processResultSet(AbstractSelect.java:423)
at org.seasar.extension.jdbc.query.AbstractSelect.getSingleResultInternal(AbstractSelect.java:248)
at org.seasar.extension.jdbc.query.AbstractSelect.getSingleResult(AbstractSelect.java:182)
at jp.co.test.service.selectService.selecttable(selectService.java:XXX) ← 独自実装部分の末端
以上、よろしくお願いいたします
Seasar-user メーリングリストの案内