glassfish4.0でStreamAPIを使うとサーバー起動時にエラーがでます
サーバー起動時にエラーが発生するソースと実行結果
ソース
Sample.java
package simple;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
@WebService
public class SimpleWeb {
@WebMethod
public String sayHello(String name) throws Exception{
return _sayHello(name);
}
private String _sayHello(String name)throws Exception{
try{
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/oraclecon");
.query(ds.getConnection(), //コネクションの取得
"select EMP_ID,EMP_NAME from EMP",
new ArrayListHandler())
.stream()
.filter(array->array[0].equals("001"))
.map(array -> String.format("従業員ID:%s:従業員名:%s",array[0],array[1]))
.collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
.toString());
}catch(Exception e){
e.printStackTrace();
return name;
}
}
}
実行結果
java.lang.ArrayIndexOutOfBoundsException: 26415
at org.objectweb.asm.ClassReader.readClass(ClassReader.java:2015)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:469)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:425)
at org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:362)
at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:165)
at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:127)
at org.glassfish.hk2.classmodel.reflect.Parser.doJob(Parser.java:347)
at org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:67)
at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:306)
at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
GlassFish 4.0ってJava8をサポートしているのではなかったのでしょうか?