<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
    主站蜘蛛池模板: 日本久久久久亚洲中字幕| 亚洲综合亚洲综合网成人| 亚洲欧洲日韩综合| 182tv免费观看在线视频| 9久热这里只有精品免费| 亚洲国产精品专区在线观看| 欧洲乱码伦视频免费国产| 免费在线一级毛片| 一道本不卡免费视频| 亚洲精品美女久久777777| 成人免费区一区二区三区| 亚洲VA中文字幕无码毛片| 亚洲成a∧人片在线观看无码| 中字幕视频在线永久在线观看免费| 亚洲AV无码精品蜜桃| 四虎影视www四虎免费| 久久亚洲一区二区| 1000部拍拍拍18免费网站| 伊人久久亚洲综合| 成全视频在线观看免费| 中文字幕亚洲免费无线观看日本| 久久笫一福利免费导航| 在线亚洲精品视频| 国内精品久久久久久久亚洲 | 亚洲国产综合AV在线观看| 亚洲AV蜜桃永久无码精品| 国产免费久久精品99久久| 亚洲精品中文字幕无码AV| 91麻豆最新在线人成免费观看| 久久乐国产综合亚洲精品| 亚洲av午夜成人片精品电影| 欧洲人免费视频网站在线| 亚洲资源最新版在线观看| 亚洲AV无码一区二三区 | 亚洲一级免费毛片| 免费人成网上在线观看| 亚洲精品在线观看视频| 日本高清免费不卡在线| 九九精品成人免费国产片| 亚洲中文无码卡通动漫野外| 国产在线a免费观看|