<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 叱咤紅人 閱讀(1229) 評論(0)  編輯  收藏 所屬分類: Java Persistence, Transaction and ORM Oracle
    主站蜘蛛池模板: 亚洲欧洲校园自拍都市| 浮力影院亚洲国产第一页| a在线视频免费观看| 性做久久久久免费观看| 亚洲成年网站在线观看| 免费影院未满十八勿进网站| 亚洲福利视频网址| 国产无人区码卡二卡三卡免费 | 国产免费的野战视频| 亚洲Av熟妇高潮30p| 免费无码VA一区二区三区| 1区1区3区4区产品亚洲| 最近中文字幕mv免费高清视频8 | 日日麻批免费40分钟无码| 亚洲AV人无码激艳猛片| 久久一本岛在免费线观看2020| 亚洲爆乳无码一区二区三区| 久久国产精品成人免费| 亚洲毛片网址在线观看中文字幕| 一级免费黄色大片| 日本成人免费在线| 免费福利在线观看| 亚洲国产精品一区二区成人片国内| 免费一级不卡毛片| 亚洲一卡2卡4卡5卡6卡在线99| 四虎影视大全免费入口| 一区二区三区亚洲| 免费无码又爽又刺激高潮软件| 亚洲AV无码第一区二区三区 | 亚洲av无码av制服另类专区| 91大神在线免费观看| 亚洲精品GV天堂无码男同| 日本最新免费网站| 狠狠入ady亚洲精品| 免费观看男人免费桶女人视频| 黄色网址免费在线| 久久精品国产亚洲AV麻豆网站| 在线观看人成视频免费| a级成人毛片免费图片| 亚洲中文字幕无码mv| 国产av无码专区亚洲av果冻传媒|