我将 getGeneratedKeys() 与直接类调用一起使用,如下所示:
public static Connection getConnection() throws Exception {
try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
String sql = "jdbc:firebirdsql:localhost/3050:e:\\COMPLEXO140116.FDB?defaultResultSetHoldable=True&encoding=WIN1252";
return DriverManager.getConnection(sql, "SYSDBA", "masterkey");
} catch (ClassNotFoundException e) {
throw new SQLException("Driver nao localizado.");
} catch (Exception e) {
e.printStackTrace();
throw new Exception("Erro na base de dados." + e.getMessage() + " fim msg");
}
}
它工作正常,但在我改为
public class ConnectionFactory {
private static DataSource dataSource;
static {
try {
dataSource = (DataSource) new InitialContext().lookup("java:jboss/Firebird");
} catch (NamingException e) {
throw new ExceptionInInitializerError("'jndifordbconc' not found in JNDI");
}
}
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
它停止工作并给出错误:
org.firebirdsql.jdbc.FBDriverNotCapableException:生成的密钥功能不可用,最可能的原因:ANTLR-Runtime 在类路径上不可用
我正在使用 WildFly 10、Firebird 2.5.5、Jaybird 2.2.9。antlr-4.5.2-complete.jar 存在于 buildpath 中,也许这不是原因,因为它在更改为 JNDI 方式之前就已经工作了。而且wildfly自带antlr 2.7.7。