【发布时间】:2013-12-21 06:42:46
【问题描述】:
我有一个使用 jt400 JDBC 驱动程序连接到运行在 iSeries V6R1 上的 DB2 的 Tomcat 7 Web 应用程序。多年来,我一直在使用相同的设置,几乎没有问题。使用我的 context.xml 中设置的 JNDI 连接和我的 WEB-INF/lib 文件夹中的驱动程序,一切都按预期工作,JPA 查询和其他一切。
我现在正在尝试使用调用 RPG 程序的存储过程。当我使用 JNDI 连接时,它出错说它找不到外部程序。如果我使用完全相同的(复制和粘贴的)连接字符串、驱动程序、用户名和密码创建一个新的 JDBC 连接,它就可以完美运行。从 SQuirreL 运行时,相同的存储过程也能完美运行。
使用 JNDI 连接出现以下错误:
[SQL0444] External program xxx in *LIBL not found
这是我的(已清理的)连接字符串:
jdbc:as400:server;naming=system;prompt=false;datetime=iso;libraries=SYSIBM OTHER LIBS AS NEEDED
这是我的代码:
CallableStatement cs=null;
// Fails every time
// Connection conn = getJNDIConnection();
// Works every time
Connection conn = getNewJDBCConnection();
cs = conn.prepareCall("CALL MY_PROC ( 0, 'TEST' )");
cs.execute();
我真的很想依赖 JNDI 连接而不是创建自己的连接,但除非有人知道导致此错误的原因,否则我将不得不使用该解决方法。
谢谢,
约翰
【问题讨论】:
标签: tomcat stored-procedures jdbc db2 ibm-midrange