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

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

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

    破門點滴(Java技術版)

    在日常學習和工作中記錄

      BlogJava :: 首頁 ::  :: 聚合  :: 管理
      15 Posts :: 7 Stories :: 36 Comments :: 0 Trackbacks
    發表于 2004-12-26 18:59:04

    ?思路:

    1、將URL對象中的factory對象擴展為一個factorysHashtable對象,將setURLStreamHandlerFactory的調用修改為將新的factory對象放入列表。

    2、創建Handler時則遍歷factorys列表,按照注冊的先后順序調用factory對象嘗試創建Handler對象。

    ?

    實際解決方案:

    通過java自帶的源代碼包找出 java.net.URL對象,做如下修改:

    1、增加 factorys 列表屬性

    static Hashtable factorys = new Hashtable();

    …..

    ?

    2、修改 setURLStreamHandlerFactory() 方法

    public static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac) {

    ?????? synchronized (streamHandlerLock) {

    ????????????? // 為了支持多Factory

    //???? ??? if (factory != null) {

    //??????????? throw new Error("factory already defined");

    //???? ??? }

    ????????????? …..

    ?????? ??? factory = fac;

    ?????? ??? // factory 放入列表

    ?????? ??? factorys.put(Integer.toString(factorys.size()), fac);

    ?????? }

    ??? }

    1、? 增加createURLStreamHandler 私有方法,通過Factory列表創建Handler

    ?????? private static URLStreamHandler createURLStreamHandler(String protocol) {

    ????????????? for (int i=0; i < factorys.size(); i++) {

    ???????????????????? factory = (URLStreamHandlerFactory) factorys.get(Integer.toString(i));

    ???????????????????? URLStreamHandler handler = factory.createURLStreamHandler(protocol);

    ???????????????????? if (handler != null) {

    ??????????????????????????? return handler;

    ???????????????????? }

    ????????????? }

    ????????????? return null;

    ?????? }

    2、? 修改getURLStreamHandler中獲取Handler的方法

    …..

    ?????? ??? // Use the factory (if any)

    //???? ??? if (factory != null) {

    //??????????? handler = factory.createURLStreamHandler(protocol);

    //??????????? checkedWithFactory = true;

    //???? ??? }

    ?????? ??? // 使用factory列表

    ?????? ??? if (factorys != null) {

    ?????? ??? ?????? handler = createURLStreamHandler(protocol);

    ?????? ??? ?????? checkedWithFactory = true;

    ?????? ??? }

    ????????????? ……

    ?

    ????????????? // Check with factory if another thread set a

    ????????????? // factory since our last check

    //??????????? if (!checkedWithFactory && factory != null) {

    //??????????? ??? handler2 = factory.createURLStreamHandler(protocol);

    //??????????? }

    ????????????? if (!checkedWithFactory && factorys != null) {

    ????????????? ??? handler2 = createURLStreamHandler(protocol);

    ????????????? }

    ?

    3、? 編譯修改后的URL類,將URL.class 替換 rt.jar 包中的原始類文件。

    ?

    替換rt.jar的具體方法:

    a)?????? zip工具(或jar工具)將rt.jar文件解開到一個目錄(假設為rt

    b)????? 替換 rt/java/net/URL.class 文件為新類文件

    c)????? rt 目錄下運行命令 jar cvf0M rt.jar . 生成 rt.jar 文件

    d)????? 將新生成的 rt.jar 文件覆蓋原始的JRE中的 rt.jar 文件


    ?

    至此,以上ava.lang.Error: factory already defined問題解決。



    Triones Runtime: 新的JRE下,Triones web系統運行的輸出結果

    2004-12-26 1:10:07 org.apache.coyote.http11.Http11Protocol init

    信息 : Initializing Coyote HTTP/1.1 on http-8886

    2004-12-26 1:10:07 org.apache.catalina.startup.Catalina load

    信息 : Initialization processed in 1121 ms

    2004-12-26 1:10:07 org.apache.catalina.core.StandardService start

    信息 : Starting service Tomcat-Standalone

    2004-12-26 1:10:07 org.apache.catalina.core.StandardEngine start

    信息 : Starting Servlet Engine: Apache Tomcat/5.0.28

    2004-12-26 1:10:07 org.apache.catalina.core.StandardHost start

    信息 : XML validation disabled

    [ ] 這里是 Triones(Eclipse) 開始啟動

    Configuration file:

    ??? file:/D:/netshop/configuration/config.ini not found or not read

    Configuration location:

    ??? file:/D:/netshop/triones/configuration/

    Configuration file:

    ??? file:/D:/netshop/triones/configuration/config.ini loaded

    Shared configuration location:

    ??? file:/D:/netshop/configuration/

    Triones Framework located:

    ??? file:/D:/netshop/triones/plugins/org.softme.triones.runtime_0.0.1/

    Framework located:

    ??? file:/D:/netshop/triones/plugins/org.eclipse.osgi_3.1.0/

    Loading framework classpath from:

    ??? file:/D:/netshop/triones/plugins/org.eclipse.osgi_3.1.0/eclipse.properties

    Framework classpath:

    ??? file:/D:/netshop/triones/plugins/org.eclipse.osgi_3.1.0/core.jar

    ??? file:/D:/netshop/triones/plugins/org.eclipse.osgi_3.1.0/console.jar

    ??? file:/D:/netshop/triones/plugins/org.eclipse.osgi_3.1.0/osgi.jar

    ??? file:/D:/netshop/triones/plugins/org.eclipse.osgi_3.1.0/resolver.jar

    ??? file:/D:/netshop/triones/plugins/org.eclipse.osgi_3.1.0/defaultAdaptor.jar

    ??? file:/D:/netshop/triones/plugins/org.eclipse.osgi_3.1.0/eclipseAdaptor.jar

    Debug options:

    ??? file:/D:/DevEnv/eclipse/.options not found

    Time to load bundles: 30

    !SESSION 2004-12-26 01:10:09.697 -----------------------------------------------

    eclipse.buildId=M200409161125

    java.version=1.4.2

    java.vendor=Sun Microsystems Inc.

    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN

    Command-line arguments: -nosplash -refresh

    [ ] 這里是 Triones Framework (Runtime) 開始運行

    Starting application: 1563

    ------------------------------------

    Triones Framework: Started!

    Triones Framework: Hello!

    2004-12-26 1:10:10 org.apache.catalina.core.StandardHost getDeployer

    信息 : Create Host deployer for direct deployment ( non-jmx )

    2004-12-26 1:10:10 org.apache.coyote.http11.Http11Protocol start

    信息 : Starting Coyote HTTP/1.1 on http-8886

    2004-12-26 1:10:10 org.apache.catalina.startup.Catalina start

    信息 : Server startup in 2634 ms

    [ ] 這里是 Triones Framework (System Job) 開始運行, Tomcat 已經啟動完畢。

    Triones Job: begin...

    Triones Job: idle-0

    Triones Job: idle-1

    Triones Job: done.

    [ ] 這里是 Triones Framework (Runtime) 開始響應 web 請求,加載 Runtime 的控制器

    [URL]http://localhost:8886/netshop/

    LoadControllers(): found extentions - 1

    LoadControllers(): namespace - org.softme.triones.runtime.

    LoadControllers(): config size- 3

    LoadController:-org.softme.triones.controller.DefaultServletController@d0220c

    LoadController:-org.softme.triones.controller.DefaultActionController@1a19458

    LoadController:-org.softme.triones.controller.DefaultViewController@383118

    [ ] 這里是 Triones Framework (Runtime) 根據請求訪問指定的插件

    URL http://localhost:8886/netshop/triones/view/org.softme.triones.hello/hello.html

    update@/D:/netshop/triones/plugins/org.softme.triones.hello_0.0.1/ [7]

    hello.html

    file:/D:/netshop/triones/plugins/org.softme.triones.hello_0.0.1/hello.html

    [ ] 這里 Tomcat 開始關閉

    2004-12-26 1:10:49 org.apache.coyote.http11.Http11Protocol pause

    信息 : Pausing Coyote HTTP/1.1 on http-8886

    2004-12-26 1:10:50 org.apache.catalina.core.StandardService stop

    信息 : Stopping service Tomcat-Standalone

    2004-12-26 1:10:50 org.apache.catalina.core.StandardHostDeployer remove

    [ ] 這里是 Tomcat 關閉 Triones Framework 支持的應用 (netshop)

    信息 : Removing web application at context path /netshop

    [ ] 這里是 Triones Framework (Runtime) 關閉

    Triones Framework: Stoped!

    ------------------------------------

    2004-12-26 1:10:50 org.apache.catalina.logger.LoggerBase stop

    信息 : unregistering logger Standalone:type=Logger,host=localhost

    2004-12-26 1:10:50 org.apache.catalina.logger.LoggerBase stop

    信息 : unregistering logger Standalone:type=Logger

    2004-12-26 1:10:50 org.apache.coyote.http11.Http11Protocol destroy

    信息 : Stopping Coyote HTTP/1.1 on http-8886

    [ ] Tomcat 正常退出



    不得窺道門,不得悟佛門,不得入窄門,實乃破門。
    posted on 2006-03-27 10:30 破門 閱讀(708) 評論(0)  編輯  收藏 所屬分類: Triones
    主站蜘蛛池模板: 麻豆视频免费播放| 亚洲片国产一区一级在线观看 | 亚洲日韩精品无码专区加勒比| 免费视频中文字幕| 中国一级特黄高清免费的大片中国一级黄色片 | 中文字幕无码日韩专区免费| 亚洲a视频在线观看| 内射无码专区久久亚洲| 无码日韩精品一区二区免费暖暖| 亚洲午夜理论片在线观看| 国产av无码专区亚洲av果冻传媒| 222www免费视频| 无套内谢孕妇毛片免费看看 | 一级特黄a免费大片| 亚洲男女一区二区三区| 亚洲成A人片在线观看无码3D| 四虎成人精品永久免费AV| 亚洲av午夜国产精品无码中文字| 亚洲V无码一区二区三区四区观看| 国产美女在线精品免费观看| 日本卡1卡2卡三卡免费| 国产精品亚洲综合| 亚洲国产成a人v在线| 亚洲中文字幕在线第六区| 亚洲最大的视频网站| 亚洲免费一区二区| 久久免费美女视频| 男人的天堂av亚洲一区2区| 亚洲视频在线观看地址| 亚洲片一区二区三区| 最近2019中文免费字幕| 91精品国产免费入口| 久久久久久噜噜精品免费直播 | 中文字幕亚洲色图| 亚洲中文字幕视频国产| 国产高清视频在线免费观看| 国产成人免费高清激情明星| 久久午夜免费鲁丝片| a级毛片免费在线观看| 一边摸一边桶一边脱免费视频 | 国产偷国产偷亚洲清高动态图 |