[VRclassroom开发之二][javaChatRoom之一java文件打包、签名]解决java applet与服务器端进行socket通信的安全限制

由于安全性限制,applet尽可以运行在sandbox里,不可以访问客户端文件系统、也不可以与第三方服务器进行通信。

但在我这里applet并不能和任一服务器通信(这句话是不对的,其实第三方服务器指的是web服务器以外的,我写的applet是client用socket和server通信,server和web服务器不是同一个服务器虽然都在同一台机器中运行),解决办法:

可以修改本地的java安全策略(需同时修改客户端,不合适应为项目客户端用的是旧的ie jvm,根本找不到java.policy文件)

也可以通过签名applet文件实现,方法如下:

一、编写java applet文件

二、将java小程序打包
 
jar cvf MyClient.jar PizzaOrderApplet.class

当然可以用*.class 打包 当前目录下所有的class文件

三、编写html文件,包含标签

<applet codebase="." code="PizzaOrderApplet.class" archive="MyApplet.jar" width=400 height=480></applet>
!PizzaOrderApplet.class是从归档文件MyApplet.jar中获得的。

四、对MyApplet.jar签名

(1)生成名为MyClient.store的密钥库


keytool -genkey -keystore MyClient.store -alias MyClient

(2)导出名为MyClient.cer数字证书

keytool -export -keystore MyClient.store -alias MyClient -file MyClient.cert

(3)对MyClient.jar文件进行签名

jarsigner -keystore MyClient.store MyClient.jar MyClient

注意:最后,应将项目部署到本地服务器,否则appletviewer仍然会出安全性错误,访问被deny

有些还不是很明白,上面这个是为什么。

参考资料:http://www.cnblogs.com/diyunpeng/archive/2012/01/09/2317234.html

原文地址:https://www.cnblogs.com/wanping/p/2399423.html