拜托,语气能不能肯定一些。我写了一个applet访问db2作试验,不可以,运行出错。同样的语句,用在application中,
就可以,查询的数据就显示在屏幕上。
但是,db2的手册上却明明白白给出了一个applet访问db2数据库的例子(我就是照它抄的)。
看书上写的,java2对applet的运行需要写安全策略文件,如何写,写些什么内容,存放在什
么位置?如何与要运行的applet联系在一起?
望大家赐教。
就可以,查询的数据就显示在屏幕上。
但是,db2的手册上却明明白白给出了一个applet访问db2数据库的例子(我就是照它抄的)。
看书上写的,java2对applet的运行需要写安全策略文件,如何写,写些什么内容,存放在什
么位置?如何与要运行的applet联系在一起?
望大家赐教。
或是application
applet不能通过jdbc访问网络数据库
应该可以用applet访问数据库了
permission java.security.AllPermission;
};// default permissions granted to all domainsgrant {
......
手工添上,运行还是不行。另外to hendy(hendy),为什么“数据库要和Web Server在同一台计算机上(浏览器的限制)。
有诸多的安全限制。
解决方法有三:
1,Database和Web server的url一致,也就是说,JVM允许applet访问它的codebase上的资源;
2,数字签名。
3,rmi
没有别的方法了。
具体用那一种视情况而定。个人认为,如果业务流程不复杂,可以考虑第一种方法;否则可以用第三种方法。第二种方法需要客户端的配合(需要客户接受你这个数字签名),限制较大。
的codebase上的资源”,恕小弟愚拙,没搞懂。Database和Web server的url分别是指什么?
能举例阐述一下吗?另外,在rmi中,是否可以定义一个resultset方法,返回数据库结果集以便在applet中应用?
database与CodeBase所在的服务器是同一服务器则是指
applet从哪里下载则可以与哪里进行socket连接
即applet来自www.china.com则可连接www.china.com。
比较流行的方法是applet <-> servlet <-> EJB <->DataBase。
我在applet中使用的就是:
Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();
....
String sConnStr="jdbc:db2://172.16.100.75:6789/TESTDB";
con=DriverManager.getConnection(sConnStr,"mis","mis");
....
不知为什么不行?
以下是我运行的出错信息:自从我装了java plugin 后,每次运行applet,都出现java console 小图标,why ?
以下就是在java console中显示的出错信息:java.security.AccessControlException: access denied (java.net.SocketPermission 172.16.100.75:6789 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 java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at COM.ibm.db2.jdbc.net.DB2Connection.create(DB2Connection.java:238) at COM.ibm.db2.jdbc.net.DB2Connection.<init>(DB2Connection.java:193) at COM.ibm.db2.jdbc.net.DB2Driver.connect(DB2Driver.java:198) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at TestApplet.init(TestApplet.java:31) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source)java.lang.NullPointerException at TestApplet.paint(TestApplet.java:41) at sun.awt.RepaintArea.paint(Unknown Source) at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)在jswdk的窗口中出错信息是:
com.sun.web.core.DefaultServlet: init
HANDLER THREAD PROBLEM: java.io.IOException: Socket Closed
java.io.IOException: Socket Closed
at java.net.PlainSocketImpl.getInputStream(Unknown Source)
at java.net.Socket$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.Socket.getInputStream(Unknown Source)
at com.sun.web.server.ConnectionHandler.run(ConnectionHandler.java:161)望大家帮忙指教一下。
难道不同机器上的就不行?(难道这样就只能用ejb,corba,rmi了?太麻烦)
大师所言:Database和Web server的url必须一致。小弟之前偷懒,在浏览器地址栏写:http://localhost.....,结果屡屡失败,刚才猛然醒悟,改成ip地址就成功了。
在这里谢过各位大师,分数结贴时一定奉上。但我还是想先请教为什么这样,难道我只
能访问和web server同机的数据库?不同机器上的就不行?(难道这样就只能用ejb,
corba,rmi了?太麻烦)