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

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

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

    新的起點 新的開始

    快樂生活 !

    在BEA WebLogic Server上開發應用程序的20條技巧(來源于網絡)

    在BEA WebLogic Server上開發應用程序的20條技巧
    Q: 引起NoClassDefFoundError的原因?
    A: J2EE容器中引發NoClassDefFoundErrors最常見的原因是父類加載器使用了只在子類加載器中有效的類;例如,一個在$CLASSPATH中的擴展類只能在子類加載器中有效。幻燈片里還有深入的調試技巧。
    Q:如果在你的system/lib文件夾和WAR里同時都有一個jar包,那么哪一個具有較高的優先級?
    A:默認的情況下,Java類加載器是“parent-first”,是指它會首先請求它的父加載器來加載,只有在父加載器無法加載的時候才試圖自己加載。因此如果$CLASSPATH中有這個類,那么它將是應用類加載器的首選。
    WebLogic Server的weblogic.xml中有一個選項prefer-web-inf-classes,可以將war中類庫設置成優先加載。必須要小心的設 置這個選項。一旦設置了這個,會很容易導致ClassCastExceptions和其它無法預測的類加載問題
    Q:當線程池里的線程被分配到不同應用的進程時,它們是怎樣取的不同類加載器層次的?
    A: WebLogic Server在應用程序部署的時候創建類加載器。當容器在響應請求的時候,它需要保證這個請求被分發到了正確的應用程序類加載器。
    Q:在調試的時候能夠設置端點嗎?
    A: 是的!BEA WebLogic Workshop是一個支持端點的Java調試器。其它支持端點的Java調試器或IDE也能夠正常的運行。
    Q: APP-INF是標準J2EE的一部分,還是WebLogic Server的特性?
    A: APP-INF是一個由BEA增加的特性,目前還沒有添加到J2EE標準中。但是,將有APP-INF的應用轉移到其它不支持APP-INF的老版本WLS或其它容器也是非常得容易。
    你可以通過manifest class-path來將應用轉移到其它老的WLS版本上。推薦的方式是在產生目標文件的時候生成方便的ear文件。生產目標文件的時候會產生一個manifest文件,這個文件里有對APP-INF/lib中所有jar文件的manifest class-path 索引。每一個J2EE模塊都需要這個manifest文件。
    Q:哪里可以找到wlpackage/wlcompile命令?這些是命令行命令嗎?能不能在WebLogic Admin Server Console里使用?
    A: wlpackage 和 wlcompile都是ant任務。Ant的執行程序在weblogic.jar 中。同WebLogic platform打包在一起的ant 有一個屬性文件,這個文件包含了所以事先定義好的BEA taskdefs。
    如果你使用的是不同版本的ant,你需要手工來使用這些taskdefs。以下是一些在BEA ant 屬性文件中定義的任務名稱和類名:
       ddinit=weblogic.ant.taskdefs.ejb.DDInit
        wldeploy=weblogic.ant.taskdefs.management.WLDeploy
        wlserver=weblogic.ant.taskdefs.management.WLServer
        wlconfig=weblogic.ant.taskdefs.management.WLConfig
        wlcompile=weblogic.ant.taskdefs.build.WLCompileTask
        wlpackage=weblogic.ant.taskdefs.build.WLPackageTask
        wlappc=weblogic.ant.taskdefs.j2ee.Appc
    Q: 我需要在開發模式中頻繁的更換Java類,在更改之后是不是要重新部署整個應用程序?
    A: 這取決于Java類是在哪里被加載的。如果類是在$CLASSPATH當中,就需要重新啟動server。如果類是在你的應用程序當中,就只需要重新部署應用。如果類在webapp中,就只需要重新部署webapp,而不需要重新部署整個app了。
    是否需要重新部署和類加載器的結構有關,幻燈片里有一張類加載器結構圖。如果你改動了父類加載器加載的某些類,你需要重新部署由子類加載器加載的所有東西。
    Q: 在使用wlappc的時候,提示說不認識wlappc這個任務。是不是我缺少什么東西或步驟?
    A: 請參考前面的問答。你碩使用的ant和BEA打包的ant版本不一致,因此你需要為wlappc包含一個taskdef。參考如下的方式:
        <taskdef name="wlappc"
                 classname="weblogic.ant.taskdefs.j2ee.Appc"
         />
    Q:   ant中有停止WebLogic cluster的任務嗎?比如<wlserver>。我需要指定停止一個cluster并重新部署。
    A: wlserver任務可以用來停止server。只需要把參數action設置成“shutdown”就可以了
    Q: 有些時候我們從support那里取得臨時的補丁(CR####.jar),在classpath中將它們放在weblogic.jar之前。但是如果 weblogic.jar在應用程序的build classpath中,需不需要修改build文件來引用CR jar文件?
    A: 是的,建議你也在build classpath中包含進補丁。這些補丁可能修復了像weblogic.appc或weblogic.ejbc這樣的工具,它們可能會在你build工程的時候使用到。
    Q: 管理和打包部署描述符(從單機開發模式到集群產品模式)的最好方式是什么?
    A: 問題關鍵在于描述符里綁定的是些什么。例如,你的描述符里可能引用了http://test:7001,但是在生產模式下應該是http://production:7001
    我的建議是在描述符里包含一些變量,然后使用像sed、perl這樣的預處理程序來將這些變量替換成合適的值。例如,你的描述符里可能有$SERVER,用sed生成一個test描述符,這個描述符里$SERVER被替換成了test URL。
    Q: 在一個WebLogic域中同時部署Workshop-enabled的應用和non-Workshop-enabled的應用是否可以?
    A: 在同一個server或者域中運行這兩類應用程序是沒有問題的。是否在同一個WLS實例中運行多個應用取決于end-user的需要。分離開應用的話,可以取的更好的獨立性,但是需要管理多個server。
    Q:協同定位(co-location)是默認的設置還是需要在某個地方手工配置?
    A:這個沒有默認的設置。應用都被部署到集群或者服務器上。如果將應用程序拆分成兩部分部署到兩個地方,則是“split”;如果統一部署到一層,則是“co-located”。
    Q: 兩個不同的WebLogic Server的license能否被同一個server使用,用來創建兩個使用同樣端口但環境不同的domain?
    A:這個我不太清楚。關于license的問題,你可以E-mail:support@bea.com 咨詢
    Q: 我們的啟動類使用到了EJB,因此我需要在classpath中加入EJB的接口類,有沒有什么方法可以避免這種依賴?
    A:   啟動類是在server啟動的時候被調用的。部署應用程序的時候,Application范圍的監聽器會收到callback。如果能夠等到部署完成,你 就可以使用ApplicationLifecycleListener或者servlet listener了。監聽器里能夠使用classloader,就可以不用在classpath里面加入EJB接口類了。
    Q: WebLogic是否提供了這樣的API或機制?當集群里最后一個機器宕機(無論是否正常情況)的時候,可以執行一個自定義的任務,這樣我們就可以做些清理工作。
    A: 我不知道有這樣一種API。每個server正常關閉的時候你都會收到一個hook,而如果程序崩潰,則不會。
    Q:   因為每個JSP文件會被一個單獨的類加載器加載,那么訪問JSP是不是要慢一些或者不夠memory-efficient?那對于Servlet呢?使用的是哪一個類加載器?
    A: 一個webapp中的所有servlet都是被一個普通的類加載器加載的。JSP是有一個單獨的類加載器加載,它的父加載器是webapp的加載器。
    WLS經過了非常廣泛/嚴格?(extensively)的性能測試,這種JSP/類加載器模式并不是性能上的障礙。這種模式對內存的額外開銷相對比較小。
    Q: 如果我有一個ear文件,里邊有war和EJB jars,在改動JSP的時候是否需要重新生成ear?如果是的話,那是否意味著會給webapp和jsp重新創建一個類加載器?
    A: 如我這次談話中說到的,我不推薦在開發過程中打包成EAR。如果你是在開發中部署的目錄,只需要編輯好JSP之后在瀏覽器中點擊“reload”。
    Q:  目錄是否不適合部署在產品模式下?
    A:   目錄部署只在單機的開發模式下支持。Wlpackage任務可以用來將應用程序打包成標準的EAR。
    Q:   關于在WebLogic集群環境下的開發,您還有些其它的建議嗎?
    A:   通常我建議每一個開發人員都使用他自己的WLS實例。相比共享的環境我更加喜歡這種方式。測試應該在集群環境進行,但是開發人員可以使用單機來進行開發。
    Q:   如果Beans是遠程的,“co-location”時WLS是否會不做marshalling 和unmarshalling?
    A:   使用本地接口的EJB是call-by-reference(如同標準的java 調用)。采用遠程接口的EJB默認是call-by-value。
    當遠程的調用者和被調用者都在同一個WLS實例中時,遠程調用會經過一個優化的RMI棧。這過程中不會打開套接字,同時RMI棧會避免在java.lang.String 這樣的immutable類型上做 marshalling/unmarshalling。對于Mutable類型,Java序列化會發生。

    posted on 2008-07-23 10:13 advincenting 閱讀(687) 評論(0)  編輯  收藏 所屬分類: 服務器 比如:WebLogic(Develop+Deploy)

    公告

    Locations of visitors to this pageBlogJava
  • 首頁
  • 新隨筆
  • 聯系
  • 聚合
  • 管理
  • <2008年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統計

    常用鏈接

    留言簿(13)

    隨筆分類(71)

    隨筆檔案(179)

    文章檔案(13)

    新聞分類

    IT人的英語學習網站

    JAVA站點

    優秀個人博客鏈接

    官網學習站點

    生活工作站點

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产乱弄免费视频| 国产免费av片在线看| 亚洲精品国产V片在线观看| 亚洲成a人无码亚洲成av无码| 波多野结衣在线免费视频| 亚洲麻豆精品果冻传媒| 99免费视频观看| 亚洲欧洲精品在线| 四虎永久在线精品免费观看视频| 亚洲精品成人网站在线播放| 91高清免费国产自产| 亚洲日韩国产精品乱-久| 蜜臀91精品国产免费观看| 美景之屋4在线未删减免费 | 牛牛在线精品观看免费正| 亚洲成a人一区二区三区| 热99RE久久精品这里都是精品免费 | 国产成人免费AV在线播放 | 亚洲人成色77777| 久久午夜夜伦鲁鲁片无码免费| 久久久亚洲裙底偷窥综合| 国内精自视频品线六区免费| 国产精品亚洲综合久久| 国产伦精品一区二区三区免费迷| a毛片成人免费全部播放| 亚洲精品福利视频| 毛片免费全部免费观看| 麻豆69堂免费视频| 亚洲av无码精品网站| 好先生在线观看免费播放| 在线观看亚洲免费| 亚洲国产精品久久久久网站| 成人毛片手机版免费看| 国产精品综合专区中文字幕免费播放| 亚洲AV无码成人精品区蜜桃| 免费观看的毛片手机视频| 日韩a级无码免费视频| 亚洲一线产品二线产品| 最新精品亚洲成a人在线观看| 免费视频专区一国产盗摄| 一区二区三区视频免费|