[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 メーリングリストの案内