我有一个使用oracle数据库的简单Web服务。当我在内部测试服务时它工作正常,但是,通过我的客户端(在同一台机器上但在不同的WAR中)调用Web服务会抛出一个invocationtargetexception。我终于发现了实例化OracleDriver的问题。它根本不会抛出任何异常,所以我无法找出错误是什么。
Googling只提供了使用oracle.jdbc.driver.OracleDriver而不是oracle.jdbc.OracleDriver的解决方案,但似乎没有解决任何问题。我正在使用的jar是ojdbc14.jar,据我所知,它正确地包含在Web服务的类路径中...因为它在我使用简单的main方法测试服务时有效。
编辑: InvocationTargetException由Axis服务器的AxisFault生成。 invocationtargetexception是一个包装类,我尝试使用.getCause()尝试提取异常的尝试始终返回null。
我正在使用jboss部署该服务,并且在源库中包含驱动程序JAR文件,但不包括服务器。在/ jboss / server / default / lib中包含驱动程序解决了它。
答案 0 :(得分:0)
如果没有更多信息,很难提供具体的建议;但是我有一个尝试通过本机OCI库连接的Oracle驱动程序的经验,无法找到系统上安装的那些库,并抛出InvocationTargetException。这一切都来自非常模糊的记忆,所以你的里程几乎肯定会有所不同。
已经有一段时间了,但是如果内存为我服务,我有一个连接URL配置不正确的情况,而OracleDriver(或其中一个包装器)通过一组可能的连接方法迭代,试图找到一个有效的连接方法。在正确配置URL的情况下,它从未进行OCI尝试(首先是瘦连接方法尝试),但如果连接URL配置错误,则瘦尝试将失败,导致OCI尝试,然后也失败因为主机上没有安装OCI客户端(导致InvocationTargetException。)
所以,有些事要检查:
答案 1 :(得分:0)
2个WAR?我想你的ojdbc.jar位于Web服务WAR的WEB-INF / lib中。
也许你的WAR在EAR中,所以你应该在MANIFEST.MF中引用驱动程序。