<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    走自己的路

    路漫漫其修遠兮,吾將上下而求索

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      50 隨筆 :: 4 文章 :: 118 評論 :: 0 Trackbacks
    在分布式應用中,單個業務應用的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. 配置一個擁有3jvmoc4j 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 factorytopic


     

    具體每個配置參數什么意思,可參見Oracle Containers for J2EE Services Guide



     

    具體每個配置參數代表什么意思,可參見Oracle Containers for J2EE Services Guide


     

    創建完畢后,在instance levelconfig目錄下面打開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"/>

     

    Opmnurl格式為:opmn:ormi://主機名:opmn request端口:OC4J Instance Name /Application Name


    5.配置toplink會話緩存同步策略


     

    6.權限設置

    我們登錄consoleserver的全局用戶,并不一定有instance levelrmi等權限,所以不能實現jndilookup. Oc4j默認采用的是基于文件的認證和授權管理策略,用的是JAAS,通常稱為:jaznOracle'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 levelsystem-jazn-data.xml發現jazn.com/ascontrol_adminjazn.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-applicationapplciation leveljazn-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 jvm1toplink有如下的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 jvm2toplink有如下的log


    ndler-5,5,HTTPThreadGroup])--Retreived remote message from JMS topic: cachesyn
    [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


    posted on 2008-12-04 07:00 叱咤紅人 閱讀(1231) 評論(0)  編輯  收藏 所屬分類: Java Persistence, Transaction and ORM Oracle
    主站蜘蛛池模板: 中文字幕免费在线播放| 亚洲日本一线产区和二线产区对比| 激情婷婷成人亚洲综合| 国产啪精品视频网免费| 亚洲av一本岛在线播放| 西西大胆无码视频免费| 在线观看亚洲AV每日更新无码| 在线观看免费人成视频色| 亚洲www77777| 午夜dj在线观看免费视频| 久久久久亚洲国产| 国产三级电影免费观看| 免费人成网上在线观看| 亚洲成AⅤ人影院在线观看| 国产免费黄色无码视频| 亚洲视频中文字幕| 免费下载成人电影| 亚洲一区二区三区高清在线观看| 免费无码黄网站在线观看| 香蕉视频免费在线| 国产A在亚洲线播放| 免费看黄视频网站| 色九月亚洲综合网| 亚洲欧洲∨国产一区二区三区| 免费播放一区二区三区| 亚洲色精品三区二区一区| 亚洲男人的天堂一区二区| 免费高清国产视频| 久久精品国产99国产精品亚洲| 国产男女猛烈无遮挡免费网站| av电影在线免费看| 亚洲美女aⅴ久久久91| 国产成人无码区免费A∨视频网站| 久久av免费天堂小草播放| 亚洲成人免费在线观看| 亚洲不卡无码av中文字幕| 亚洲视频在线观看免费| 最新亚洲人成网站在线观看| 亚洲AV无码成人专区片在线观看| 成人毛片免费观看视频在线| 成年女人A毛片免费视频|