拜托,语气能不能肯定一些。我写了一个applet访问db2作试验,不可以,运行出错。同样的语句,用在application中,
就可以,查询的数据就显示在屏幕上。
但是,db2的手册上却明明白白给出了一个applet访问db2数据库的例子(我就是照它抄的)。
看书上写的,java2对applet的运行需要写安全策略文件,如何写,写些什么内容,存放在什
么位置?如何与要运行的applet联系在一起?
望大家赐教。

解决方案 »

  1.   

    用rmi,socket可以
    或是application
    applet不能通过jdbc访问网络数据库
      

  2.   

    permission java.security.AllPermission; 加到jre/lib/security/java.policy里面去 
      

  3.   

    permission java.security.AllPermission; 加到jre/lib/security/java.policy里面去 
    应该可以用applet访问数据库了
      

  4.   

    数据库要和Web Server在同一台计算机上(浏览器的限制)。
      

  5.   

    我打开jre/lib/security/java.policy文件,里面已有这一句了:// Standard extensions get all permissions by defaultgrant codeBase "file:${java.home}/lib/ext/*" {
    permission java.security.AllPermission;
    };// default permissions granted to all domainsgrant { 
    ......
    手工添上,运行还是不行。另外to hendy(hendy),为什么“数据库要和Web Server在同一台计算机上(浏览器的限制)。
      

  6.   

    Applet是运行在java所谓的沙箱机制里的。
    有诸多的安全限制。
    解决方法有三:
       1,Database和Web server的url一致,也就是说,JVM允许applet访问它的codebase上的资源;
       2,数字签名。
       3,rmi
    没有别的方法了。
    具体用那一种视情况而定。个人认为,如果业务流程不复杂,可以考虑第一种方法;否则可以用第三种方法。第二种方法需要客户端的配合(需要客户接受你这个数字签名),限制较大。    
      

  7.   

    大仙:你说的第一条,“Database和Web server的url一致,也就是说,JVM允许applet访问它
    的codebase上的资源”,恕小弟愚拙,没搞懂。Database和Web server的url分别是指什么?
    能举例阐述一下吗?另外,在rmi中,是否可以定义一个resultset方法,返回数据库结果集以便在applet中应用?
      
      

  8.   

    推荐你一本书java2 平台安全技术
                       
      

  9.   

    同意 goldgod(天外飞仙)
    database与CodeBase所在的服务器是同一服务器则是指
    applet从哪里下载则可以与哪里进行socket连接
    即applet来自www.china.com则可连接www.china.com。
    比较流行的方法是applet <-> servlet <-> EJB <->DataBase。
      

  10.   

    to X25(X25) : APPLET不能用JDBC-ODBC桥,那是否可以使用纯jdbc访问网络数据库呢?
    我在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");
    ....
    不知为什么不行?
      

  11.   

    to Virginer():
    以下是我运行的出错信息:自从我装了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)望大家帮忙指教一下。
      

  12.   

    渴望论坛的java专家给与指点!
      

  13.   

    如果你的数据库和web server同一个ip就没有问题。
      

  14.   

    难道我使用纯java的jdbc也只能访问和web server同机的数据库?
    难道不同机器上的就不行?(难道这样就只能用ejb,corba,rmi了?太麻烦)
      

  15.   

    的确如hendy(hendy)、goldgod(天外飞仙)、hicharlie(黑查理)、hymmyh(羽)等几位
    大师所言:Database和Web server的url必须一致。小弟之前偷懒,在浏览器地址栏写:http://localhost.....,结果屡屡失败,刚才猛然醒悟,改成ip地址就成功了。
    在这里谢过各位大师,分数结贴时一定奉上。但我还是想先请教为什么这样,难道我只
    能访问和web server同机的数据库?不同机器上的就不行?(难道这样就只能用ejb,
    corba,rmi了?太麻烦)