2010-05-20 59 views
5

我有一个需要审计的Java应用程序(显然,我需要一种可以使用应用程序名称识别应用程序的方式)。我用Google搜索,发现ojdbc14有方法.setClientInfo允许注册一个自定义名称的应用程序,所以我试图得到它的工作,但我得到了以下错误:在JDBC中为Oracle设置客户端信息

Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.setClientInfo(Ljava/lang/String;Ljava/lang/String;)V

我使用ojdbc14与Oracle 10g快捷。如果我不设置行:

connection.setClientInfo("ApplicationName","Customers"); 

它工作得很好....并通过检查审计信息,我可以看到Oracle获取应用程序名称:OS_program_name = JDBC瘦客户端,但我需要一种方法将其更改为自定义名称。

通过取消注释应该设置应用程序名称的那一行,它将返回上面的错误。

根据oracle文档,该方法可用于Connection对象。你有什么想法如何解决这个问题?通过对程序列编组为您连接

Properties jdbcProperties = new Properties(); 

this.jdbcProperties.put("user", userName); 
this.jdbcProperties.put("password", password); 
this.jdbcProperties.put("v$session.program", "YourApplicationName"); 
DriverManager.getConnection(url, jdbcProperties); 

然后检查V $ SESSION:

回答

9

对于AbstractMethodError,请Why do I get java.lang.AbstractMethodError when trying to load a blob in the db?

为了区别在Oracle中你的连接,你可以使用下面这个示例代码..

+0

我真的很感谢你的帮助,这对我来说真的很有帮助...我用了你给我的线条,它的工作正常....非常感谢,真诚。 – 2010-05-20 20:44:59

+0

很高兴听到它的工作。 还有一件事,当你使用oci的URL连接到你的Oracle数据库时,这段代码将不起作用。它适用于简单的URL,我不了解Oracle。 此时,您可以使用DBMS_APPLICATION_INFO包来设置模块名称和操作来跟踪您的应用程序。 – gokhant 2010-05-21 03:17:58