新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Java, J2SE, J2ME, J2EE, 以及Eclipse, NetBeans, JBuilder等Java开发环境,还有JSP, JavaServlet, JavaBean, EJB以及struts, hibernate, spring, webwork2, Java 3D, JOGL等相关技术。
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Java/Eclipse 』 → [合集] 怎么改变rmi得classloader? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4759 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [合集] 怎么改变rmi得classloader? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18407
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 Java/Eclipse 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客楼主
    发贴心情 [合集] 怎么改变rmi得classloader?

    ● [合集] 怎么改变rmi得classloader?发信人: diaochong (静静的雕虫~~小猪), 信区: J2EE
    标  题: [合集] 怎么改变rmi得classloader?
    发信站: BBS 水木清华站 (Tue Mar 30 10:12:59 2004), 站内

    【 以下文字转载自 JavaClub 讨论区 】
    发信人: diaochong (静静的雕虫~~小猪), 信区: JavaClub
    标  题: [合集] 怎么改变rmi得classloader?
    发信站: BBS 水木清华站 (Tue Mar 30 10:08:34 2004), 站内

    ☆─────────────────────────────────────☆  
      bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Fri Mar 21 11:23:00 2003)  提?


    defineClass()不允许定义"java"开头的类,而这方法又是final的。有什么办法去载入
    java.rmi的类呢?我需要让rmi server使用自定义的classloader
    那平时系统是怎么载入这些类的呢?
    另外,resolveClass实际对class做了什么处理?



    ☆─────────────────────────────────────☆  
      gty (宜良-丽江-蝴蝶泉) 于  (Fri Mar 21 11:53:43 2003)  提到:


    你想改变java.rmi下的类?为什么要这么做?

    【 在 bakkhos (笨瓶子) 志存高远·思考永不停步 ) 的大作中提到: 】                
    : defineClass()不允许定义"java"开头的类,而这方法又是final的。有什么办法去载入  
    : java.rmi的类呢?我需要让rmi server使用自定义的classloader                     
    : 那平时系统是怎么载入这些类的呢?                                              
    : 另外,resolveClass实际对class做了什么处理?                                   


    ☆─────────────────────────────────────☆  
    bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Fri Mar 21 11:57:44 2003)  提?


    不是,我要用自己的classloader载入类(不以class文件形式存在),但是rmi载入stub时
    是用系统的classloader,结果就是找不到class,所以我要换掉rmi的classloader,如果
    有更好的方法也行

    【 在 gty (宜良-丽江-蝴蝶泉) 的大作中提到: 】                                   
    : 你想改变java.rmi下的类?为什么要这么做?                                      

    ☆─────────────────────────────────────☆  
    sOcean (ok) 于  (Fri Mar 21 16:07:14 2003)  提到:


    那些都是本地方法,恐怕得弄到sun的source才能看到
    private native Class defineClass0
    private native void resolveClass0

    【 在 bakkhos (笨瓶子) 志存高远·思考永不停步 ) 的大作中提到: 】                

    defineClass()不允许定义"java"开头的类,而这方法又是final的。有什么办法去载入
    java.rmi的类呢?我需要让rmi server使用自定义的classloader
    那平时系统是怎么载入这些类的呢?
    另外,resolveClass实际对class做了什么处理?



    ☆─────────────────────────────────────☆  
      sOcean (ok) 于  (Fri Mar 21 16:12:56 2003)  提到:


    用自己的java.rmi.registry.RegistryImpl 代替sun.rmi.registry.RegistryImpl?

      或者写一个自己的RemoteProxy彻底替换sun.rmi.server.RemoteProxy?

    【 在 bakkhos (笨瓶子) 志存高远·思考永不停步 ) 的大作中提到: 】                
    : 不是,我要用自己的classloader载入类(不以class文件形式存在),但是rmi载入stub时
    : 是用系统的classloader,结果就是找不到class,所以我要换掉rmi的classloader,如果
    : 有更好的方法也行                                                              


    ☆─────────────────────────────────────☆  
    bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Fri Mar 21 16:15:50 2003)  提?


    是个思路,等我试试

    【 在 sOcean (ok) 的大作中提到: 】                                              
    :   用自己的java.rmi.registry.RegistryImpl 代替sun.rmi.registry.RegistryImpl?  


    ☆─────────────────────────────────────☆  
    UltraFool (遥望·遐想·感伤) 于  (Fri Mar 21 19:13:31 2003)  提到:

    好像是java的核心类是系统的本地函数的Classloader加载, 不允许用自定义的loader加载

    【 在 sOcean (ok) 的大作中提到: 】                                              
    : 那些都是本地方法,恐怕得弄到sun的source才能看到                               
    : private native Class defineClass0                                             
    : private native void resolveClass0
    : defineClass()不允许定义"java"开头的类,而这方法又是final的。有什么办法去载入  
    : java.rmi的类呢?我需要让rmi server使用自定义的classloader                     
    : 那平时系统是怎么载入这些类的呢?                                              
    : 另外,resolveClass实际对class做了什么处理?                                   



    ☆─────────────────────────────────────☆  
    bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Fri Mar 21 19:17:29 2003)  提?

    一般来说应该这样
    现在问题是核心类会加载非核心类,例如RMI加载stub,如果不用自定义classloader加载
    java.rmi的类,就没法控制stub的加载了,faint

    【 在 UltraFool (遥望·遐想·感伤) 的大作中提到: 】                             
    : 好像是java的核心类是系统的本地函数的Classloader加载, 不允许用自定义的loader加
    载                                                                              


    ☆─────────────────────────────────────☆  
    UltraFool (遥望·遐想·感伤) 于  (Fri Mar 21 19:22:12 2003)  提到:

    呵呵, 不太清楚
    看appserver的source也许有帮助
    不过有java.rmi的源代码吗? 把他们的包换了可否

    【 在 bakkhos (笨瓶子) 志存高远·思考永不停步 ) 的大作中提到: 】                
    : 一般来说应该这样                                                              
    : 现在问题是核心类会加载非核心类,例如RMI加载stub,如果不用自定义classloader加载
    : java.rmi的类,就没法控制stub的加载了,faint                                   


    ☆─────────────────────────────────────☆  
    bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Fri Mar 21 19:30:54 2003)  提?


    呵呵,对java.rmi进行refactoring,改包名……
    rmi的实现基本在sun的包中,没有源码,我反编译看过,也是很多native方法,不敢乱动

    【 在 UltraFool (遥望·遐想·感伤) 的大作中提到: 】                             
    : 呵呵, 不太清楚                                                                
    : 看appserver的source也许有帮助                                                 
    : 不过有java.rmi的源代码吗? 把他们的包换了可否                                  




    ☆─────────────────────────────────────☆  
    gty (宜良-丽江-蝴蝶泉) 于  (Fri Mar 21 20:08:42 2003)  提到:


    csdn上有一篇比较早的文章,介绍了dynamic proxy怎么改变rmi的行为

    http://www.csdn.net/develop/article/14/14553.shtm
    【 在 bakkhos (笨瓶子) 志存高远·思考永不停步 ) 的大作中提到: 】                
    : 呵呵,对java.rmi进行refactoring,改包名……                                   
    : rmi的实现基本在sun的包中,没有源码,我反编译看过,也是很多native方法,不敢乱动


    ☆─────────────────────────────────────☆  
    bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Fri Mar 21 20:24:06 2003)  提?


    这篇以前看过了,呵呵
    我现在做的是一个运行平台,让普通java程序在上面运行,无法修改使用RMI的程序,
    所以只能在classloader上下功夫

    【 在 gty (宜良-丽江-蝴蝶泉) 的大作中提到: 】                                   
    : csdn上有一篇比较早的文章,介绍了dynamic proxy怎么改变rmi的行为                
    : http://www.csdn.net/develop/article/14/14553.shtm


    ☆─────────────────────────────────────☆  
    sOcean (ok) 于  (Fri Mar 21 22:37:20 2003)  提到:


    sun包可以到www.sun.com上下载jdksource package。
      粗略的看了一下,class loading的部分大概在
        sun.rmi.server.RemoteProxy.loadClassFromClass()
        /**
         * Load a class from the same class loader that loaded another class.
         * If the other class has no class loader, or if it isn't supplied,
         * then it simply loads the class using the system loader (through
         * CLASSPATH, typically).
         */

    【 在 bakkhos (笨瓶子) 志存高远·思考永不停步 ) 的大作中提到: 】                
    : 呵呵,对java.rmi进行refactoring,改包名……                                   
    : rmi的实现基本在sun的包中,没有源码,我反编译看过,也是很多native方法,不敢乱动


    ☆─────────────────────────────────────☆  
    sOcean (ok) 于  (Fri Mar 21 22:53:35 2003)  提到:

    【 在 bakkhos (笨瓶子) 志存高远·思考永不停步 ) 的大作中提到: 】                
    : defineClass()不允许定义"java"开头的类,而这方法又是final的。有什么办法去载入  
    : java.rmi的类呢?我需要让rmi server使用自定义的classloader                     
    : 那平时系统是怎么载入这些类的呢?                                              
    : 另外,resolveClass实际对class做了什么处理?                                   

      如果纯粹想载入java.rmi的类,把java.lang.ClassLoader.defineClass(0
      中的  if ((name != null) && name.startsWith("java.")) {
      去掉就行了吧。不过不知道这样修改对系统会有什么影响...

         * The specified class name cannot begin with "java.", since all
         * classes in the java.* packages can only be defined by the bootstrap
         * class loader.

    ☆─────────────────────────────────────☆  
    bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Fri Mar 21 23:06:50 2003)  提?


    实在没有办法时再用吧,这种方法可能有危险,以后升级也可能有麻烦

    【 在 sOcean (ok) 的大作中提到: 】                                              
    : 如果纯粹想载入java.rmi的类,把java.lang.ClassLoader.defineClass(0           
    :   中的  if ((name != null) && name.startsWith("java.")) {                     
    :   去掉就行了吧。不过不知道这样修改对系统会有什么影响...                       
    :      * The specified class name cannot begin with "java.", since all          
    :      * classes in the java.* packages can only be defined by the bootstrap    
    :      * class loader.                                                          



    ☆─────────────────────────────────────☆  
    bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Fri Mar 21 23:06:50 2003)  提?


    实在没有办法时再用吧,这种方法可能有危险,以后升级也可能有麻烦

    【 在 sOcean (ok) 的大作中提到: 】                                              
    :   如果纯粹想载入java.rmi的类,把java.lang.ClassLoader.defineClass(0           
    :   中的  if ((name != null) && name.startsWith("java.")) {                     
    :   去掉就行了吧。不过不知道这样修改对系统会有什么影响...                       
    :      * The specified class name cannot begin with "java.", since all          
    :      * classes in the java.* packages can only be defined by the bootstrap    
    :      * class loader.                                                          


    ※ 修改:·qyjohn 于 Mar 30 10:16:02 修改本文·[FROM:   219.238.203.*]           

    索引页面|上一篇|下一篇


       收藏   分享  
    顶(0)
      




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

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

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/9/23 0:40:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Java/Eclipse 』的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/2/2 5:07:19

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms