Java 使用JApplet连接到SQL
我正在尝试使用JApplet连接到SQL数据库。但是,我得到了一个Java 使用JApplet连接到SQL,java,swing,applet,japplet,securityexception,Java,Swing,Applet,Japplet,Securityexception,我正在尝试使用JApplet连接到SQL数据库。但是,我得到了一个安全异常: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: java.security.AccessControlException: access de
安全异常
:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.security.AccessControlException: access denied ("java.net.SocketPermission" "162.243.229.150:3306" "connect,resolve")
STACKTRACE:
java.net.SocketException: java.security.AccessControlException: access denied ("java.net.SocketPermission" "162.243.229.150:3306" "connect,resolve")
at com.mysql.jdbc.StandardSocketFactory.unwrapExceptionToProperClassAndThrowIt(StandardSocketFactory.java:407)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:268)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at me.nrubin29.cubesorter.MySQL.setup(MySQL.java:24)
at me.nrubin29.cubesorter.MySQL.access$100(MySQL.java:8)
at me.nrubin29.cubesorter.MySQL$1.run(MySQL.java:35)
at java.lang.Thread.run(Thread.java:744)
** END NESTED EXCEPTION **
Last packet sent to the server was 1 ms ago.
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at me.nrubin29.cubesorter.MySQL.setup(MySQL.java:24)
at me.nrubin29.cubesorter.MySQL.access$100(MySQL.java:8)
at me.nrubin29.cubesorter.MySQL$1.run(MySQL.java:35)
at java.lang.Thread.run(Thread.java:744)
Exception in thread "Thread-38" java.lang.NullPointerException
at me.nrubin29.cubesorter.MySQL$1.run(MySQL.java:38)
at java.lang.Thread.run(Thread.java:744)
com.mysql.jdbc.CommunicationsException:由于底层异常导致的通信链路故障:
**开始嵌套异常**
java.net.SocketException
消息:java.security.AccessControlException:拒绝访问(“java.net.SocketPermission”162.243.229.150:3306“连接,解析”)
堆栈跟踪:
java.net.SocketException:java.security.AccessControlException:access-denied(“java.net.SocketPermission”162.243.229.150:3306“连接,解析”)
位于com.mysql.jdbc.StandardSocketFactory.UnwapeExceptionTopropertCassandThrowit(StandardSocketFactory.java:407)
位于com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:268)
在com.mysql.jdbc.MysqlIO上(MysqlIO.java:271)
在com.mysql.jdbc.Connection.createNewIO上(Connection.java:2771)
位于com.mysql.jdbc.Connection(Connection.java:1555)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
位于java.sql.DriverManager.getConnection(DriverManager.java:270)
在me.nrubin29.cubesorter.MySQL.setup(MySQL.java:24)
在me.nrubin29.cubesorter.MySQL.access$100(MySQL.java:8)
在me.nrubin29.cubesorter.MySQL$1.run(MySQL.java:35)
运行(Thread.java:744)
**结束嵌套异常**
发送到服务器的最后一个数据包是1毫秒前。
位于com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)
位于com.mysql.jdbc.Connection(Connection.java:1555)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
位于java.sql.DriverManager.getConnection(DriverManager.java:270)
在me.nrubin29.cubesorter.MySQL.setup(MySQL.java:24)
在me.nrubin29.cubesorter.MySQL.access$100(MySQL.java:8)
在me.nrubin29.cubesorter.MySQL$1.run(MySQL.java:35)
运行(Thread.java:744)
线程“thread-38”java.lang.NullPointerException中的异常
在me.nrubin29.cubesorter.MySQL$1.run(MySQL.java:38)
运行(Thread.java:744)
我试过用,但没用。如何授予在小程序中使用套接字的权限?请参见以下内容:
如果小程序未签名,则需要确保小程序从试图打开套接字的服务器加载。
这样就行了 未签名的小程序有许多应用程序。其中一个限制是,它们无法打开与承载小程序的主机以外的主机的网络连接 有几种方法可以解决这个问题:
这是Java8中的一个新的破坏——看起来沙盒小程序 根本不允许使用套接字 部分解决方案是将小程序更改为请求所有权限。这 改变了可怕的对话框,用户只需点击一点,但不会点击太多 比他已经不得不做的更不祥 --当然,由于之前的安全演习,罐子已经
使用受信任的证书进行签名。MySQL服务器与web服务器位于同一服务器上。@nrubin29您使用的是来自小程序和web服务器的相同IP/地址吗?我尝试了以下方法:
字符串数据库;if(Viewer.DESKTOP)数据库=“--”;else database=“localhost”代码>。我还在末尾添加了:3306
,所以不用担心。这是一个新错误:消息:java.security.AccessControlException:拒绝访问(“java.net.SocketPermission”“[fe80:0:0:0:0:0:1%1]:3306”“连接,解析”)
小程序和数据库在同一台服务器上吗?为什么允许小程序直接与数据库交互?应该强制它通过基于web的API工作。它们位于同一台服务器上。我之所以允许直接连接,是因为我不知道如何编写基于web的API。这是Java8中的一种新行为。可能是同一个问题