【发布时间】:2011-09-03 12:23:58
【问题描述】:
我正在尝试在 Oracle 11g 中创建一个 Java 存储过程来检索 Google Analytics 信息。
现在为此工作了三天,但没有成功。这是我所做的一步一步:
使用以下命令将 5 个所需的 JAR 文件 here link 上传到数据库:
loadjava -user scott/tiger@WH01 gdata-analytics-2.1.jar
然后我创建了 java 源文件(在 pl/sql 开发人员 IDE 中)并使用了上面链接中的示例代码。编译它(f8),它出现在 Java 类树中(对于使用 jar 文件创建的类也是如此)。
在我编写了调用java类的过程之后:
create or replace procedure KEVIN_PROCEDURE_ANALYTICS
AS LANGUAGE JAVA
NAME 'Kevin_Analytics.main(java.lang.String[])';
最后我调用了这个过程:
exec KEVIN_PROCEDURE_ANALYTICS();
我得到了错误:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.IllegalStateException: Cannot call dirty() without holding the lock on the registry.
使用 google 我找到了this link(一个类的 java 代码,其中有一个方法可以准确地打印此错误消息),我认为我必须使用同步方法,请检查链接,我想你会的也可以了解一下。
现在的问题是,我真的不知道我必须如何以及在哪里放置这个同步代码。如果你们中的某个人可以告诉我这个,我会是真的。
感谢您阅读这篇文章,如果有人可以帮助我,将不胜感激。
凯文·维尔马特
【问题讨论】:
-
您需要完整的堆栈跟踪来进行取证分析。这听起来是学习如何检索它的好时机。
-
如果您下次登录时有时间,请阅读我对您的回答的评论:)
-
我不熟悉 Oracle 数据库中 JVM 的精细工作,无法帮助您了解这一点。您可能想打开一个新问题,明确询问如何做到这一点。
标签: java oracle stored-procedures gdata