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

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

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

    哎諍

    從此不能再哎諍--無聊的人,喜歡無病呻吟
    posts - 11, comments - 11, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Weblogic域間調用EJB常見事務錯誤

    Posted on 2006-04-29 16:21 哎諍 閱讀(5233) 評論(2)  編輯  收藏 所屬分類: j2ee范疇

    前言

    ??? 本人所在項目中,由于我們的系統將業務邏輯單獨部署,以下稱之為EJB層,和普通的WEB層相對獨立。從 WEB 層調用 EJB 層,通過 Command 架構,其包含的 EJB 調用就是事務性質的,所以我們 EJB 層再調用其它第三方提供的 EJB 接口時,就經常會出現一些莫名其妙的錯誤,以下略作收集。

    1 、錯誤現象(在被調用的 EJB 服務器屏幕上出現):

    <2005-1-20 下午 04 14 46 CST> <Error> <Security> <BEA-090513> <ServerIdentity failed validation, downgrading to anonymous.>

    <2005-1-20 下午 04 14 46 CST> <Error> <JTA> <BEA-110200> <User [<anonymous>] is not authorized to invoke startCommit on a transaction branch.>

    分析:

    這種異常是跨域傳播事務造成的 . 一定要傳播事務的話 , 必須設置域信任 , 沒有其他辦法 . 但是域信任有相關的安全隱患 , 當然對于大部分非關鍵業務應用來說也無所謂了 .

    具體設置方法為, domain node --> View Domain-wide Security Settings --> Configuration --> Advanced --> Enable Generated Credential --> Credential 中輸入密碼,兩個 domain 的這個密碼要完全一致,然后重新啟動 server 就可以了。

    2 、錯誤現象(在調用方的 EJB 屏幕上出現):

    <2005-11-4 下午 01 41 36 CST> <Error> <EJB> <BEA-010026> <Exception occurredduring commit of transaction Name=[EJB cn.com.jdls.foundation.architectures.comm

    and.ejb.TaxCommandBean.executeCommand(cn.com.jdls.foundation.architectures.command.commands.BaseCommand)],Xid=BEA1-0021A70EC385C5407B0E(31591114),Status=Committing,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=121,seconds left=0,XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=committed,assigned=ejbserver),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@1326f69,re-Registered = false),SCInfo[mydomain+ejbserver]=(state=committed),SCInfo[dmctais+app1]=(state=committing),properties=({weblogic.transaction.name=[EJB cn.com.jdls.foundation.architectures.command.ejb.TaxCommandBean.executeCommand(cn.com.jdls.foundation.architectures.command.commands.BaseCommand)], weblogic.jdbc=t3://92.16.16.43:6517}),local properties=({modifiedListeners=[]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=ejbserver+92.16.16.43:6517+mydomain+t3+, XAResources={},NonXAResources={})],CoordinatorURL=ejbserver+92.16.16.43:6517+mydomain+t3+): javax.transaction.SystemException: Timeout during commit processing

    分析:

    這種異常是由于 EJB 被調用方,通常具有記憶功能,對于調用它接口的遠程 EJB 服務和相應的 IP 以及 Port 都會記錄在內存,如果下次相同的 EJB 服務來調用它的時候,它就會檢測內存中該 EJB 服務對應的 IP/Port 是否和當前的實際情況相符,如果不符的話,就會出現這種錯誤。

    這種情況目前在我們 系統中,碰到的兩種典型的案例就是:一,我們的 EJB 服務器上有雙網卡,本來調用 某第三方 EJB 接口很正常,但是有次禁用了其中一個沒插網線的網卡后,就出現這種錯誤,因為被調用方 EJB 服務已經記住了我們的 EJB 服務對應的 IP Port ;二、本來我們的 EJB 服務器,調用另一個 第三方 EJB 接口也很正常,但是有次為了測試的需要,又在另外一臺服務器上,復制了一份完全一樣的系統環境,也連接到同一個 第三方EJB 測試服務器進行測試,結果后一臺調用的時候就出現了這種錯誤,因為被調用方 EJB 服務已經記住了我們的 EJB 服務,其對應的 IP/Port 應該是前一臺服務器。

    對于這種情況,簡單的處理辦法就是,將被調用方的 EJB 服務重啟一下,則它內存中的記錄就會清除,下次就會記住最新的 EJB 服務和相應的 IP/Port

    但是針對我們 系統來說,通常我們系統調用的第三方的 EJB 接口, 往往不能隨便重啟 第三方 服務,所以變通的辦法,就是將要使用的我們系統中,將涉及到的 每個 WEBLOGIC 域服務器對應的 server 名字都改掉,這樣被調用方就不會在內存中找到相應的記錄,因此也就不會出現這種莫名的調用出錯問題。 同時將域根目錄下的臨時目錄全部刪除,再重新啟動服務應該即可生效。

    總結
    以上所述都是本人所在項目碰到的問題,可能并不一定具有共性,也不全面,所以大家碰到的莫名其妙的錯誤,也希望貼出來,共享看看?


    評論

    # re: Weblogic域間調用EJB常見事務錯誤  回復  更多評論   

    2008-08-25 14:45 by susu
    這篇文章幫了我很大的忙,謝了。^_^

    # re: Weblogic域間調用EJB常見事務錯誤  回復  更多評論   

    2014-06-09 11:31 by 小笨
    這篇文章幫了我很大的忙,謝了。^_^
    主站蜘蛛池模板: 免费精品国产自产拍在 | 亚洲精品一级无码鲁丝片| 妻子5免费完整高清电视| 亚洲成AV人在线观看网址| 久久午夜伦鲁片免费无码 | 亚洲一区二区三区不卡在线播放| 久久久免费的精品| 国产VA免费精品高清在线| 美女视频黄频a免费大全视频| 亚洲天堂福利视频| 亚洲午夜久久久久久尤物| 亚洲一区免费观看| 亚洲国产成人久久精品影视| 亚洲三区在线观看无套内射| 亚洲精品无码不卡在线播HE| 亚洲va无码专区国产乱码| 日本亚洲视频在线| 亚洲视频在线观看网站| 亚洲三级中文字幕| 亚洲爆乳精品无码一区二区| 国产成人精品久久亚洲高清不卡| 亚洲精品无码久久久久A片苍井空| 亚洲日本一线产区和二线| 亚洲精品无码不卡在线播放| 狼色精品人妻在线视频免费| 国产精品高清免费网站| 午夜精品射精入后重之免费观看 | 69视频免费观看l| 99无码人妻一区二区三区免费| 2021久久精品免费观看| 成人免费一区二区无码视频| 国产最新凸凹视频免费| 亚洲综合亚洲综合网成人| 亚洲欧洲免费视频| 亚洲综合在线一区二区三区| 日韩在线视频线视频免费网站| 中文字幕免费不卡二区| 在线免费观看a级片| 亚洲乳大丰满中文字幕| 亚洲男人天堂2018av| 一区二区免费在线观看|