首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Oracle 10g Java VM中设置并发调用

如何在Oracle 10g Java VM中设置并发调用
EN

Stack Overflow用户
提问于 2011-03-03 10:36:54
回答 1查看 724关注 0票数 5

如果有人能解释当不同的数据库用户调用相同的过程以确保正确的并发资源访问处理时,如何正确配置plsql java包装器。

DBMS和JAVA: Oracle10g,内部JavaVM 1.4.2

我有一个shema所有者和10个db用户的MyDatabse可以连接到它:

DBOWNER

DBUSER01

DBUSER02

..。

DBUSER10

我有PL/SQL包装程序:包装UserHandler.getUser()的UserHandler.getUser()

我使用loadjava将java类UserHandler上传到MyDatabase:

代码语言:javascript
复制
public class UserHandler {
    private static final int MAX_USER_COUNT = 10;
    private static final String USERNAME_TEMPLATE = "EIS_ORA_20";
    private static int currentUserSeed = 0;
    /**
    * Generates EIS user according to pattern agreed by EIS developers. It
    * circles user pool with round-robin method ensuring concurrent calls.
    * 
    * @return valid EIS USERNAME
    */
    synchronized public static String getUser() {
        String newUser = USERNAME_TEMPLATE + currentUserSeed;    
        currentUserSeed++;    
        currentUserSeed = currentUserSeed % MAX_USER_COUNT;    
        return newUser;    
    }    
}    

包装器的思想是确保将外部信息系统用户名正确地分发给通过连接到MyDatabase的DBUSERS。

我的问题是,当5个用户同时调用过程my_package.getUser()时,我得到了:

DBUSER01 -调用my_package.getUser()返回EIS_ORA_200

DBUSER02 -调用my_package.getUser()返回的EIS_ORA_200

DBUSER03 -调用my_package.getUser()返回的EIS_ORA_200

DBUSER04 -调用my_package.getUser()返回的EIS_ORA_200

DBUSER05 -调用my_package.getUser()返回EIS_ORA_200

我希望每个DBUSER都能得到不同的用户(正如我在JUnit测试中确认的那样,多个并发线程调用UserHandler.getUser())。稍后,我将在2 maner中设置plsql包装器调用:

  1. 在DBUSERS或
  2. 之间共享java内存空间,以便为每个DBUSER

分离内存空间。

我的结论是为每个DBUSER分别加载UserHandler类,这就是为什么我没有使用静态计数器和同步方法的原因。

如何配置MyDatabase以强制对my_package.getUser()的调用对每个DBUSER使用相同的java空间?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-03 14:00:52

我不认为有任何方法可以配置Oracle来在多个用户会话之间共享JVM。10g的Java开发人员指南指出:

Oracle模型

甚至当成千上万的用户连接到服务器并运行相同的Java代码时,每个用户都会体验到在自己的JVM上运行自己的Java代码.

通常,RDBMS中会话之间共享数据的适当方式是使用数据库对象。在这种情况下,最简单的方法是使用Oracle序列,并启用minvalue 1、maxvalue 10并启用循环。您可以直接在Java代码中从序列中进行选择。

另一种方法是简单地在1到10之间生成一个均匀分布的随机数,如果有足够的会话,那么随着时间的推移,这些会话的分布应该是均匀的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5179566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档