觉的你比我研究的还仔细.我觉的jar应该是做为一个压缩文件传递过去的.关于资源加载我也不是很清楚,好象觉的应该研究一下http 协议

解决方案 »

  1.   

    我的msn:[email protected],希望可以交流一下
      

  2.   

    我加了你的MSN了,不过我比较少上MSN的,惭愧
      

  3.   

    下载的时候肯定是以压缩的方式的
    至于下载之后是否解压缩的话实际上和下载没有关系了,应该是和在本地加载其他jar的策略是一样的。applet重新下载的问题实际上和jre的设置有关系,在默认的情况下应该是在同一个session的话就不重新下载,你可以试验一下,关闭浏览器之后再打开,applet要重新下载的,当然你也可以打开java控制台来清空缓存,否则是不会重新下载的。getClass().getResource("aa.txt")方法来加载的话,相当于读取jar中的东西了url = new URL(getCodeBase(),"aa.txt")的话,每次都会去服务器上去取,而不会关心是否在cache中
      

  4.   

    -------------
    applet重新下载的问题实际上和jre的设置有关系,在默认的情况下应该是在同一个session的话就不重新下载
    --------------
    这种种说法我不同意,应该是APPLET的重新下载是根据版本时间的新旧检查,如果版本时间一致就不再重新下载了,如果不一致,就另外再重新下载,这个应该和WEBSTART是一个做法的吧。另外;url = new URL(getCodeBase(),"aa.txt")的话,每次都会去服务器上去取,这里如果是txt文件的话,在缓存中就根本不会存在这个文件了,但如果是个jpg文件的话,缓存中就会有个图片文件,如果以这种方式读取服务端资源,客户端根本不去关心缓存的话,那这些文件又为何会下载到缓存中来了?我指的是JRE的高速缓存,不是指IE的缓存
      

  5.   

    关于第一个说法,你可以试一下
    用你的ie打开一个服务器上的applet,然后修改这个applet,看看ie会不会重新加载,和webstart是不一样的。第二个问题你也可以试一下
      

  6.   

    老兄啊,我这改了APPLET的JAR内容时,IE是会重新加载的哦,IE显示的APPLET内容是变了的。我觉得你讲的这个问题也是个问题,我以前也遇到有时不变的情况,这个问题怕有时是IE的缓存没有刷新引起的,也JRE的缓存似乎是无关的,但一般关闭IE,重启的话,JAR文件改变的情况下是会重新下载的
      

  7.   

    如果ie关闭的话,当然会重新加载,如果还在同一个session的话应该是不会重新下载的吧
    至少我遇到的是这样的这个是JRE控制的,和ie的cache应该没有关系
      

  8.   

    看一下Inside JVM就知道了
    其实就是一个URLClassLoader
      

  9.   

    这段时间又碰到这样一个有关APPLET的装载问题:
    在一个APPLET的JAR包很大的时候,这个时候在客户端是要完全下载完这个JAR包才开始APPLET的,开始的时候要客户等很久,我想用APPLET的AppletStub方法,用一个小的APPLET来加载一个大的APPLET,这样就能够给个提示给用户,也能够让APPLET界面先启动起来,不要等太久。
    这个时候,如果我把那个小的APPLET也放到JAR包里去,那肯定是和大包一起下载的,没有用。如果我是把那个小的APPLET放在包外的,这个时候确实是一下就启动了,但那个大包的下载却有问题了,报异常为:
    java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)请问这个问题如何解决了?谢谢!
      

  10.   

    applet和WebStart是不同的,WebStart拥有applet的安全沙箱这些基本特征,但是WebStart还可以持久缓存,自动检查版本,自动下载,applet是不可以的,ie关掉之后,下次还要下载的。
      

  11.   

    也就是说虽然前面已经把APPLET的JAR文件下载在客户端本地了,关闭IE后,或者说关机后,以后再开机再去访问那个APPLET,那个JAR文件还是要重新下载的?并不会从自己的cache里去读那个已经下载好的JAR文件了?这个地方我在自己的机上试验过多次,实验的结果让我觉得有点迷惑,当我关机后再重新进入那个APPLET的时候,装载JAR的速度是比第一次装载要快的,但也还是赶不上不关闭IE,例如只是在IE里跳转时候的速度(这个时候几乎不需要停顿)。
    (我的这个JAR特别大,有2M多,第一次装载一般的网速要差不多两分钟,不关闭IE接着进入它,第二次进入的时间几乎不停顿,关机后重新进入,需要的时间大概30秒以内就可以了)真是有点搞糊涂了
      

  12.   

    重复这个问题:这段时间又碰到这样一个有关APPLET的装载问题:
    在一个APPLET的JAR包很大的时候,这个时候在客户端是要完全下载完这个JAR包才开始APPLET的,开始的时候要客户等很久,我想用APPLET的AppletStub方法,用一个小的APPLET来加载一个大的APPLET,这样就能够给个提示给用户,也能够让APPLET界面先启动起来,不要等太久。
    这个时候,如果我把那个小的APPLET也放到JAR包里去,那肯定是和大包一起下载的,没有用。如果我是把那个小的APPLET放在包外的,这个时候确实是一下就启动了,但那个大包的下载却有问题了,报异常为:
    java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)请问这个问题如何解决了?谢谢!
      

  13.   

    java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)这个问题的解决方法是你要在本地机器的java jre 目录中java.policy设置jvm的访问权限了.// Standard extensions get all permissions by defaultgrant codeBase "file:${java.home}/lib/ext/*" {
    permission java.security.AllPermission;
    };// default permissions granted to all domainsgrant { 
    // Allows any thread to stop itself using the java.lang.Thread.stop()
    // method that takes no argument.
    // Note that this permission is granted by default only to remain
    // backwards compatible.
    // It is strongly recommended that you either remove this permission
    // from this policy file or further restrict it to code sources
    // that you specify, because Thread.stop() is potentially unsafe.
    // See "http://java.sun.com/notes" for more information.
    permission java.lang.RuntimePermission "stopThread"; // allows anyone to listen on un-privileged ports
    permission java.net.SocketPermission "localhost:1024-", "listen"; // "standard" properies that can be read by anyone permission java.util.PropertyPermission "java.version", "read";
    permission java.util.PropertyPermission "java.vendor", "read";
    permission java.util.PropertyPermission "java.vendor.url", "read";
    permission java.util.PropertyPermission "java.class.version", "read";
    permission java.util.PropertyPermission "os.name", "read";
    permission java.util.PropertyPermission "os.version", "read";
    permission java.util.PropertyPermission "os.arch", "read";
    permission java.util.PropertyPermission "file.separator", "read";
    permission java.util.PropertyPermission "path.separator", "read";
    permission java.util.PropertyPermission "line.separator", "read"; permission java.util.PropertyPermission "java.specification.version", "read";
    permission java.util.PropertyPermission "java.specification.vendor", "read";
    permission java.util.PropertyPermission "java.specification.name", "read"; permission java.util.PropertyPermission "java.vm.specification.version", "read";
    permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
    permission java.util.PropertyPermission "java.vm.specification.name", "read";
    permission java.util.PropertyPermission "java.vm.version", "read";
    permission java.util.PropertyPermission "java.vm.vendor", "read";
    permission java.util.PropertyPermission "java.vm.name", "read";
    };
      

  14.   

    多谢楼上老兄了要这样解决,那我这个项目在实际应用中不可能去改每个客户的设置了那还有什么办法能解决这种以小APPLET加快加载在APPLET的方法没有了?
      

  15.   

    重复这个问题:这段时间又碰到这样一个有关APPLET的装载问题:
    在一个APPLET的JAR包很大的时候,这个时候在客户端是要完全下载完这个JAR包才开始APPLET的,开始的时候要客户等很久,我想用APPLET的AppletStub方法,用一个小的APPLET来加载一个大的APPLET,这样就能够给个提示给用户,也能够让APPLET界面先启动起来,不要等太久。
    这个时候,如果我把那个小的APPLET也放到JAR包里去,那肯定是和大包一起下载的,没有用。如果我是把那个小的APPLET放在包外的,这个时候确实是一下就启动了,但那个大包的下载却有问题了,报异常为:
    java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)请问这个问题如何解决了?谢谢
      

  16.   

    重复这个问题:这段时间又碰到这样一个有关APPLET的装载问题:
    在一个APPLET的JAR包很大的时候,这个时候在客户端是要完全下载完这个JAR包才开始APPLET的,开始的时候要客户等很久,我想用APPLET的AppletStub方法,用一个小的APPLET来加载一个大的APPLET,这样就能够给个提示给用户,也能够让APPLET界面先启动起来,不要等太久。
    这个时候,如果我把那个小的APPLET也放到JAR包里去,那肯定是和大包一起下载的,没有用。如果我是把那个小的APPLET放在包外的,这个时候确实是一下就启动了,但那个大包的下载却有问题了,报异常为:
    java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)请问这个问题如何解决了?谢谢