ClassLoader双亲委派模型loadClass过程.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ClassLoader双亲委派模型loadClass过程

ClassLoader双亲委派模型loadClass过程/blog/java 2009-08-21 22:52:05 阅读215 评论0字号:大中小?订阅 Java2加载类是通过双亲委派模型来的,而jdk给我们提供的默认的System ClassLoader -- AppClassLoader的loadClass方法是如何加载类呢?1、首先要说明jdk的几个classloader的静态继承关系,如图:2、而运行时刻,委托关系如图:3、loadClass过程中,java代码调用顺序图(简化了权限和安全校验的东西):?4、加上jvm源码的调用顺序图:自定义ClassLoader/blog/java 2009-08-23 23:24:29 阅读212 评论2字号:大中小?订阅 自定义了个ClassLoader,用socket从一个server上获取class文件内容,然后创建一个类。tcp server是用erlang写的,只负责从硬盘读数据,然后传到自定义ClassLoader。特别注意的是,要想erlang socket跟java socket通信,gen_tcp:listen(Port,[binary,{packet,0}]),这里packet一定要为0,这个是erlang数据包的包头,通信的时候客户端跟服务端加的额外数据,跟java通信,是不能加的,否则会出现error msgsize这类的错误。erlang代码:-module(class_file_server).-export([start/0,start/1,process_request/1]).-define(PORT,7777).-define(CLASS_NOT_FOUND,class_not_found_exception).start() -?start(?PORT).start(Port) -?case gen_tcp:listen(Port,[binary,{packet,0},{active,true}]) of?{ok,Socket} - process_request(Socket);?{error,Reason} - io:format(Fail to create socket: ~s ~n,[Reason])?cess_request(Socket) -?case gen_tcp:accept(Socket) of?{ok,From} - ?spawn(class_file_server,process_request,[Socket]),?receive_data_then_send_file(From);?{error,closed} -?io:format(Failed to accept, for {error,closed}~n);?{error,Reason} -?io:format(Failed to accept: ~s~n,[Reason]);?Other -?io:format(accept Other ~p~n,[Other])?end.receive_data_then_send_file(FromSocket) -?receive?{tcp,FromSocket,Bin} -?io:format(receive some raw data: ~p ~n from ~p~n,[Bin,inet:peername(FromSocket)]),?send_file(FromSocket,binary_to_list(Bin)),?gen_tcp:close(FromSocket);?{tcp_closed,FromSocket} -?io:format(processed one request:~p~n,[FromSocket]),?gen_tcp:close(FromSocket);?Other -?io:format(Invalid data: ~p~n,[Other])?end.send_file(FromSocket,FileName) -?case file:read_file(FileName) of?{ok,Bin} -?gen_tcp:send(FromSocket,Bin);?{error,Why} -?gen_tcp:send(FromSocket,?CLASS_NOT_FOUND),?io:format(Failed to load class: ~p ~n because ~p~n,[FileName,Why])?end.?java代码:package classloader;public class RemoteClassLoader extends ClassLoader {?protect

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档