`
ldd600
  • 浏览: 102171 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
47bb354f-8b5f-3ea6-a206-c7ead38c741c
Hyperic插件开发不完...
浏览量:11109
社区版块
存档分类
最新评论

opmn和jms实现toplink session缓存同步的解决方案

阅读更多

在分布式应用中,单个业务应用的toplink运行在多个jvm上,同时开启了会话缓存,而这些在多个jvm上会话缓存中的domain对象就需要同步,这样可以及时拿到最新的信息而不需要每次都查询database,这大大减少了乐观锁冲突。在Oracle Application Server上Ormi端口是动态分配的,如果一个应用跑在多个jvm上,这些jvm的ormi服务端口也是不同的,所以在开发阶段无法确定这些信息,也不好采用多套toplink session的配置。庆幸的是opmn的request端口是固定的,我们可以使用opmn request端口来进行jndi的look up,然后用oc4j jms实现多jvm或者多OC4J instance之间toplink session缓存的同步, 因为经过测试OC4J in memory jms作为同步消息的传输和发现方式效率是最高的。
具体方法如下:

  1. 配置一个拥有 3 jvm oc4j instance

 


 

   2  toplink session cache 策略的配置

 


 

        <toplink:caching>
            <toplink:cache-invalidation-policy xsi:type="toplink:time-to-live-cache-invalidation-policy">
               <toplink:time-to-live>36000000</toplink:time-to-live>
            </toplink:cache-invalidation-policy>
         </toplink:caching>
 

 

 

3. 配置 JMS topic connection factory topic

 



 

具体每个配置参数代表什么意思,可参见 Oracle Containers for J2EE Services Guide

 

创建完毕后,在 instance level config 目录下面打开 jms.xml 可看见所作的配置更改:

       <topic
            name="cachesyn"
            location="jms/cachesyn"
        >
        </topic>


        <!-- unified connection factories -->


        <!-- queue   connection factories -->


        <!-- topic   connection factories -->
        <topic-connection-factory
            location="TopicConnectionFactory"
        />
 

 

 

 

4 opmn 配置

 

查看 opmn.xml, 获得 request 端口

<port local="6101" remote="6201" request="6004"/>

 

Opmn url 格式为: opmn:ormi:// 主机名 :opmn request 端口 :OC4J Instance Name /Application Name

 

 

5.配置toplink会话缓存同步策略


 

 

6. 权限设置

我们登录 console server 的全局用户,并不一定有 instance level rmi 等权限,所以不能实现 jndi lookup. Oc4j 默认采用的是基于文件的认证和授权管理策略,用的是 JAAS ,通常称为: jazn Oracle's authorization/policy provider for JAAS

打开全局的 j2ee/config/ system-jazn-data.xml 文件,元素 <jazn-policy> 有下面这一段, policy 主要就是为角色和用户分配具体权限的

<grantee>
            <principals>
                <principal>
                    <realm-name>jazn.com</realm-name>
                    <type>role</type>
                    <class>oracle.security.jazn.spi.xml.XMLRealmRole</class>
                    <name>jazn.com/oc4j-administrators</name>
                </principal>
            </principals>
        </grantee>
 

 

 

只有 oc4j-administrators 角色才有这些权限。而 system team 分配给我们的用户并不拥有该角色,在 console 界面上也没找到为 server level 的用户也不能进行 oc4j-administrators 角色的交易,所以也没 jndi lookup 的权限,会报 javax.naming.AuthenticationException: Not authorized.

需要在 instance level 创建一个用户,用户名和密码和 server level 的相同或者也可以不同,然后为该用户分配权限,查看了一下 instance level system-jazn-data.xml 发现 jazn.com/ascontrol_admin jazn.com/oc4j-administrators 角色有完整 rmi 权限,内容如下:

 

    <permission>
                <class>com.evermind.server.rmi.RMIPermission</class>
                <name>login</name>
            </permission>
            <permission>
                <class>com.evermind.server.rmi.RMIPermission</class>
                <name>subject.propagation</name>
            </permission>
 

 

最简单的方法就是为该用户分配 jazn.com/ascontrol_admin 角色, jazn.com 可以省略因为 jazn.com 是默认域, oc4j 采用的是域,用户,角色,权限的层次授权策略。

 


 

 

当然我们也可以在 applciation level 做到最小权限控制,在 orion-application applciation level jazn-data.xml 中进行设置和分配。具体方法可参见

Oracle® Containers for J2EE Security Guide

http://download-east.oracle.com/docs/cd/B25221_04/web.1013/b14429/toc.htm

 

7.Deploy 应用到 application server

这下可以享受 toplink cluster 带来的高性能的乐趣了。

如果成功的话:我们可以看到 oc4j_instance jvm1 toplink 有如下的 log

[TopLink Finest]: 2008.12.03 06:58:30.961--ServerSession(24138346)--Thread(Thread[RMICallHandler-5,5,HTTPThreadGroup])--Retreived remote message from JMS topic: cachesyn
[TopLink Finest]: 2008.12.03 06:58:31.020--ServerSession(24138346)--Thread(Thread[RMICallHandler-5,5,HTTPThreadGroup])--Received remote command oracle.toplink.remotecommand.MergeChangeSetCommand from Service[TopLinkCommandChannel, 3673206, opmn:ormi://localhost:6004:OC4J_TTS/tts]
[TopLink Finest]: 2008.12.03 06:58:31.023--ServerSession(24138346)--Thread(Thread[RMICallHandler-5,5,HTTPThreadGroup])--Executing command oracle.toplink.remotecommand.MergeChangeSetCommand from Service[TopLinkCommandChannel, 3673206, opmn:ormi://localhost:6004:OC4J_TTS/tts]
[TopLink Finer]: 2008.12.03 06:58:31.098--ServerSession(24138346)--Thread(Thread[RMICallHandler-5,5,HTTPThreadGroup])--Received updates from Remote Server
[TopLink Finest]: 2008.12.03 06:58:31.110--ServerSession(24138346)--Thread(Thread[RMICallHandler-5,5,HTTPThreadGroup])--Merging com.ldd600.isdc.sha.frm.tts.model.Employee: [22] from remote server

 

Oc4j_instance jvm2 toplink 有如下的 log

 

[TopLink Finest]: 2008.12.03 06:58:30.721--ServerSession(8762565)--Thread(Thread[RMICallHandler-5,5,HTTPThreadGroup])--Received remote command oracle.toplink.remotecommand.MergeChangeSetCommand from Service[TopLinkCommandChannel, 3673206, opmn:ormi://localhost:6004:OC4J_TTS/tts]
[TopLink Finest]: 2008.12.03 06:58:30.724--ServerSession(8762565)--Thread(Thread[RMICallHandler-5,5,HTTPThreadGroup])--Executing command oracle.toplink.remotecommand.MergeChangeSetCommand from Service[TopLinkCommandChannel, 3673206, opmn:ormi://localhost:6004:OC4J_TTS/tts]
[TopLink Finer]: 2008.12.03 06:58:30.734--ServerSession(8762565)--Thread(Thread[RMICallHandler-5,5,HTTPThreadGroup])--Received updates from Remote Server
[TopLink Finest]: 2008.12.03 06:58:30.736--ServerSession(8762565)--Thread(Thread[RMICallHandler-5,5,HTTPThreadGroup])--Merging com.ldd600.isdc.sha.frm.tts.model.Employee: [22] from remote server
 

 


 

 

 

 

  • 大小: 68.5 KB
  • 大小: 73.5 KB
  • 大小: 101.6 KB
  • 大小: 45 KB
  • 大小: 117.8 KB
  • 大小: 79.6 KB
1
0
分享到:
评论

相关推荐

    怎样让OPMN进程实现并发地打开多于1024个文件

    怎样让OPMN进程实现并发地打开多于1024个文件

    浅述ORACLE EBS R12后台管理新变化.pdf

    浅述ORACLE EBS R12后台管理新变化.pdf Oracle E-Business Suite (EBS) 是 Oracle ...R12版本的变化带来了新的架构和服务模式,要求系统管理员和开发人员掌握新的技术和技能,以便更好地管理和维护 Oracle EBS 系统。

    pyzmq-25.1.1b2-cp312-cp312-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    wireshark安装教程入门.md

    附件是wireshark安装教程,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

    grpcio-1.3.0-cp36-cp36m-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Werkzeug-0.12.1.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Delphi 12控件之FMSoft-UniGUI-1.90.0.1567-Downloadly.ir.rar

    FMSoft_UniGUI_1.90.0.1567_Downloadly.ir.rar

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本121.0.6111.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom121.0.6111.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver121.0.6111.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    UIFramework框架

    UIFramework框架

    aiohttp-3.8.0-cp39-cp39-musllinux_1_1_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    数学软件 Matlab- 文件操作

    文件的打开与关闭 文本文件的写与读 二进制文件的写与读

    wireshark安装教程入门

    wireshark安装教程入门

    一个用C语言实现功能丰富但简单的有限状态机(FSM)。.zip

    一个用C语言实现功能丰富但简单的有限状态机(FSM)。

    protobuf-3.9.1-cp37-cp37m-manylinux1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    asp.net电子书城系统设计与实现(源码)

    随着Internet技术的发展,人们的日常生活已经离不开网络。未来社会人们的生活和工作将越来越依赖于数字技术的发展,越来越数字化、网络化、电子化、虚拟化。Internet的发展历程以及目前的应用状况和发展趋势,可以充分地相信网络技术将极大的改变我们的生活和工作方式,甚至社会的价值观也会发生某种变化。 本设计尝试用ASP.NET在网络上架构一个电子书城,以使每一位顾客不用出门在家里就能够通过上网来轻松购书。本文从理论和实践两个角度出发,对一个具有数据挖掘功能电子书城进行设计与实现分析。论文首先较为详尽地介绍了面向对象分析与设计的有关概念与技术,特别深入介绍了在本系统中运用到的知识,如:面向对象的分析设计流程;系统中所用到的开发技术ASP.NET以及ADO.NET的特点、结构框架以及使用方法。接着对书店系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、数据库、应用程序的设计与实现作了较为详细的讲解。

    pyzmq-22.0.1-cp38-cp38-manylinux2010_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    pyzmq-22.0.2-cp36-cp36m-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Python:用海龟turtle绘制正金字塔和反金字塔

    用海龟的 turtle . stamp ()和 turtle . goto ( x . y )完成图形绘制正金字塔和反金字塔的形状

    数据结构--栈 的C语言实现.zip

    数据结构--栈 的C语言实现

    基于python+机器学习的急性心肌梗死死亡风险预测(准确率达95%以上)+源码+文档(毕业设计&课程设计&项目开发)

    基于python+机器学习的急性心肌梗死死亡风险预测(准确率达95%以上)+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 用MIMIC数据库的数据作为训练集的死亡率预测,用于预测 当年本科水毕设的灌水项目,实际上没卵用。因为这个MIMIC数据库里面的东西,都是一些离散的检查指标(每天一次或者几小时一次),然后跟心肌梗死有关的都是些血压之类的东西。,而病人都重症监护了,一般会有心电监护仪之类的东西,然后直接看心电图,准确率可以轻易达到95%以上。或者去做彩超和冠脉造影直接拿着片子找医生会诊。 其他一些像肾衰竭等疾病的预测还有一点意义。

Global site tag (gtag.js) - Google Analytics