import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.rmi.*;
import java.net.*;
public class JavaRmiClient extends JFrame{
static JFrame jf;
JTextField jt;
JTextField jt2;
JLabel jl;
JLabel jl2;
JButton jb;
Hello he=new Hello();
public JavaRmiClient()throws Exception{
setSize(800,600);
jt=new JTextField(15);
jt2=new JTextField(15);
JLabel jl=new JLabel("a");
JLabel jl2=new JLabel("b");
jb=new JButton("submit");
JPanel jp=new JPanel();
jp.add(jl);
jp.add(jt);
jp.add(jl2);
jp.add(jt2);
jp.add(jb);
setContentPane(jp);
jb.addActionListener(he);
}
public class Hello implements ActionListener {
public void actionPerformed(ActionEvent e){
try{
System.setSecurityManager(new SecurityManager());
JAVARMI JS=(JAVARMI)Naming.lookup("rmi://127.0.0.1:1099/RemoteSer");
int a=Integer.parseInt(jt.getText());
int b=Integer.parseInt(jt2.getText());
int c=JS.col(a,b);
Integer k=new Integer(c);
JOptionPane.showMessageDialog(new JavaRmiClient(),k.toString());}
catch(Exception s){
System.out.println(s);}
}}
public static void main(String args[])throws Exception{
JavaRmiClient s=new JavaRmiClient();
s.show();
}
}
-------------------------------------------
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
public class JavaRmiImp extends UnicastRemoteObject implements JAVARMI{
public JavaRmiImp()throws RemoteException{}
public int col(int a,int b)
throws RemoteException{
return a*b;
}
}
--------------------------------------------------
import java.rmi.*;
public interface JAVARMI extends Remote{
public int col(int a,int b)throws RemoteException;
}
-------------------------------------------------------
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.net.*;
public class JavaRmiServer{
public JavaRmiServer()throws Exception{
}
public void namereg()throws Exception {
System.setSecurityManager(new SecurityManager());
JAVARMI jrmi=new JavaRmiImp();
Naming.rebind("rmi://127.0.0.1:1099/RemoteSer",jrmi);
System.out.println ("bind start...");
}
public static void main(String args[])throws Exception{
new JavaRmiServer().namereg();
}
}
然后,我配置java的安全策略文件(jre\lib\security\java.policy
因为我把代码放在了d:grant codeBase "file:/d:/*" {
permission java.security.AllPermission;}
最后报错java.security.accessControlExceptin :accss denied
import java.awt.*;
import java.awt.event.*;
import java.rmi.*;
import java.net.*;
public class JavaRmiClient extends JFrame{
static JFrame jf;
JTextField jt;
JTextField jt2;
JLabel jl;
JLabel jl2;
JButton jb;
Hello he=new Hello();
public JavaRmiClient()throws Exception{
setSize(800,600);
jt=new JTextField(15);
jt2=new JTextField(15);
JLabel jl=new JLabel("a");
JLabel jl2=new JLabel("b");
jb=new JButton("submit");
JPanel jp=new JPanel();
jp.add(jl);
jp.add(jt);
jp.add(jl2);
jp.add(jt2);
jp.add(jb);
setContentPane(jp);
jb.addActionListener(he);
}
public class Hello implements ActionListener {
public void actionPerformed(ActionEvent e){
try{
System.setSecurityManager(new SecurityManager());
JAVARMI JS=(JAVARMI)Naming.lookup("rmi://127.0.0.1:1099/RemoteSer");
int a=Integer.parseInt(jt.getText());
int b=Integer.parseInt(jt2.getText());
int c=JS.col(a,b);
Integer k=new Integer(c);
JOptionPane.showMessageDialog(new JavaRmiClient(),k.toString());}
catch(Exception s){
System.out.println(s);}
}}
public static void main(String args[])throws Exception{
JavaRmiClient s=new JavaRmiClient();
s.show();
}
}
-------------------------------------------
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
public class JavaRmiImp extends UnicastRemoteObject implements JAVARMI{
public JavaRmiImp()throws RemoteException{}
public int col(int a,int b)
throws RemoteException{
return a*b;
}
}
--------------------------------------------------
import java.rmi.*;
public interface JAVARMI extends Remote{
public int col(int a,int b)throws RemoteException;
}
-------------------------------------------------------
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.net.*;
public class JavaRmiServer{
public JavaRmiServer()throws Exception{
}
public void namereg()throws Exception {
System.setSecurityManager(new SecurityManager());
JAVARMI jrmi=new JavaRmiImp();
Naming.rebind("rmi://127.0.0.1:1099/RemoteSer",jrmi);
System.out.println ("bind start...");
}
public static void main(String args[])throws Exception{
new JavaRmiServer().namereg();
}
}
然后,我配置java的安全策略文件(jre\lib\security\java.policy
因为我把代码放在了d:grant codeBase "file:/d:/*" {
permission java.security.AllPermission;}
最后报错java.security.accessControlExceptin :accss denied
可能是你配置安全策略文件这个步骤出了问题。
我是用policytool工具定制安全策略的。
2.点“添加规则项目”
3.点“添加权限”
4.在许可选框那里选择"AllPermission",“确认”。
5.我的是保存为"C:\Documents and Settings\Gaison\.java.policy".