请大家帮忙分析错误发生的原因:
   现象:IPM是我们公司美国总部早年开发的集个人、组织办公和处理日常事务的一个项目协同办公软件(B/S WEB系统),当然为了强调一些功能的实现,应用了大量的applet组件。其中就应用到图形分析组件rChart。不久前,美国那边测试发现一个bug,即在DA工具(数据分析)模块,当不断刷新页面时,applet图形无法正常导入,并在控制台报错,如下所示:
********************************************************************************
   Java Plug-in 1.5.0_07
Using JRE version 1.5.0_07 Java HotSpot(TM) Client VM User home directory =
C:\Documents and Settings\cthomsonjava.security.AccessControlException: access denied
(java.net.SocketPermission proxy.phoenixchildrens.com:8080 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown
Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.proxiedConnect
(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.doTunneling(Unknown
Source)
at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknow
n Source)
at
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at
sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown
Source)
at PMWHTTP.callHTTP(PMWHTTP.java:60)
at PMWHTTP.callHTTP(PMWHTTP.java:35)
at PMWApplet.sendViaHTTP(PMWApplet.java:763)
at PMWApplet.send(PMWApplet.java:742)
at PMWApplet.setLevel(PMWApplet.java:1037)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.invoke.JSInvoke.invoke(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
at sun.plugin.com.MethodDispatcher.invoke(Unknown Source)
at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.com.DispatchImpl.invoke(Unknown Source)
java.lang.Exception: java.security.AccessControlException: access denied
(java.net.SocketPermission proxy.phoenixchildrens.com:8080 connect,resolve)
at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.com.DispatchImpl.invoke(Unknown Source) Exception in
thread "Thread-11" java.security.AccessControlException: access denied
(java.net.SocketPermission proxy.phoenixchildrens.com:8080 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown
Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.proxiedConnect
(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.doTunneling(Unknown
Source)
at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknow
n Source)
at
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at
sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown
Source)
at PMWHTTP.callHTTP(PMWHTTP.java:60)
at PMWHTTP.callHTTP(PMWHTTP.java:35)
at PMWApplet.doHTTP(PMWApplet.java:176)
at PMWApplet.run(PMWApplet.java:161)
at java.lang.Thread.run(Unknown Source)
****************************************************************************  我已经针对bug描述,分析出两点,希望抛砖引玉,得到大家的支持!
  错误分析如下:
   1,可能是applet的数字签名原因,导致applet访问本地资源出错。但是,美国那边坚称是DA工具在不断刷新页面时候出错的,其它情况一切正常,所以很难断定。
   2,可能是由于一台机器运行过快,而另一台机器运行过慢,调用applet过慢导致。但是我测试多遍,均未能把bug重现!!
   3,留给大家来补充吧……

解决方案 »

  1.   

    进来的人,分析一下,再出去不迟,希望我对你们的信念,不会成为大家的压力吧?Look and Say!
      

  2.   

    数字签名,
    rmi 是否 permission
      

  3.   

    远程机器绝对没有挂,最有可能的情况,是由于applet调用过慢,而刷新页面的同时,程序需要得到applet运行的最终结果,所以中间就有时间冲突,导致错误的发生。因为每次刷新,要完成两个动作,一是向服务器访问载入页面资源,二是applet需要在客户机的JVM中运行得出结果。
      

  4.   

    java.security.AccessControlException: access denied为什么有“java.security.AccessControlException: access denied ”-出于对于安全性的考虑,java中Applet是不可以读写本地磁盘文件的。它只能用 来读写服务器端的磁盘文件。
      

  5.   

    谢谢赐教,其实我们的applet并没有读写本地资源。只是在反复快速刷新中,报错了。本来就是一个chart的图形applet,载入页面的问题。