Tag: rmi

如何组织RMI客户端 – 服务器体系结构

我正在RMI中开发一个安全的银行服务,其中包含服务器和客户端的GUI。 服务器必须能够记录每个操作(新用户,删除的用户,提款,寄存…)客户端将执行这些操作。 由于一切都是安全的,客户端必须首先在GUI中创建一个名称和密码的帐户。 之后,GUI将Bank UserList(arrayList)中的User添加为新Customer,User可以执行多个操作。 起初看起来很简单,但我认为我的观念不正确。 通过RMI发送整个银行是否正确? 因为起初我以为Bank会是服务器,但我找不到另一种方法来做到这一点。 目前,客户端GUI要求登录和密码,并通过RMI接收银行。 用户的特征是名称和密码的哈希值。 private String name; private byte[] passwordDigest; 事实上,GUI正在进行每次安全检查,我不知道它是否相关。 当您键入login // password时,它将搜索Bank中的登录名并比较密码的哈希值。 事实上,我的印象是客户知道太多信息,因为当你拥有银行时,你拥有一切…… 它看起来是正确的还是我需要更改我的实现?

java.net.ConnectException:连接超时:连接?

我在我的代码中使用了RMI: import java.rmi.*; public interface AddServerIntf extends Remote { double add(double d1,double d2) throws RemoteException; } import java.rmi.*; import java.rmi.server.*; public class AddServerImpl extends UnicastRemoteObject implements AddServerIntf { public AddServerImpl() throws RemoteException { } public double add(double d1,double d2) throws RemoteException { return d1+d2; } } import java.net.*; import java.rmi.*; public class AddServer { public […]

Java RMI AccessControlException:访问被拒绝

嘿我得到一个AccessControlException: access denied尝试启动我正在编写的RMI应用程序时AccessControlException: access denied ,如果我在默认端口1099或其他动态端口上打开它,我无法理解为什么会出现此exception我的政策文件目前授予所有内容(将在应用完成后更改)。 我被困在哪里出错了,任何帮助都会很有用 我的代码 public class Main { /** * @param args the command line arguments */ public static void main(String[] args) throws RemoteException, AlreadyBoundException, MalformedURLException { if (System.getSecurityManager() == null) { System.setSecurityManager ( new RMISecurityManager() ); } CreditCardServer ccs = new CreditCardServer(); int port = 1099; try { port = […]

Java:没有安全管理器:RMI类加载器被禁用

嗨我有RMI应用程序,现在我尝试从我的客户端调用服务器上的一些方法。 我有以下代码: public static void main(final String[] args) { try { //Setting the security manager System.setSecurityManager(new RMISecurityManager()); IndicatorsService server = (IndicatorsService) Naming .lookup(“rmi://localhost/” + IndicatorsService.SERVICE_NAME); DataProvider provider = new OHLCProvider(server); server.registerOHLCProvider(provider); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } } server是否正确加载,但是当我尝试调用server.registerOHLCProvider(provider); 我收到这些错误: java.rmi.ServerException: RemoteException […]

Java RMI – 客户端超时

我正在使用Java RMI构建分布式系统,它必须支持服务器丢失。 如果我的客户端使用RMI连接到服务器,如果此服务器出现故障(例如电缆问题),我的客户端应该获得exception,以便它可以连接到其他服务器。 但是当服务器出现故障时,我的客户端没有任何反应,他一直在等待回复。 如何为此设置超时?

在通过Java Webstart运行时,invokeLater中出现NullPointerException

从JRE 1.7.0_21升级到1.7.0_25-b15后,我的应用程序在从Java WebStart运行时开始在SwingUtilities.invokeLater(…)中抛出NullPointerException。 令人惊讶的是,它作为一个独立的应用程序(在JWS之外)执行时,效果很好。 这是堆栈的顶部: Exception in thread “AWT-EventQueue-2” java.lang.NullPointerException at sun.awt.SunToolkit.getSystemEventQueueImplPP(SunToolkit.java:1011) at sun.awt.SunToolkit.getSystemEventQueueImplPP(SunToolkit.java:1007) at sun.awt.SunToolkit.getSystemEventQueueImpl(SunToolkit.java:1002) at java.awt.Toolkit.getEventQueue(Toolkit.java:1730) at java.awt.EventQueue.invokeLater(EventQueue.java:1217) at javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1290) at AppletView$8.setBaseUnits(AppletView.java:536) (…) 为了全面了解:方法setBaseUnits(..)被远程服务器从RMI调用作为回调。 完整的堆栈跟踪很长。 安全模型中是否有某些内容在RMI或JWS中发生了变化,可能会破坏事物? 如果是这样,我会期待一些安全性exception,但它可能是在JRE中未正确检测到的并导致NPE。 任何建议表示赞赏。 —-更新1 : JRE 1.7.0_25更新可能存在类似的问题,可能涉及一些安全更改和AppContext对象: https : //forums.oracle.com/message/11080621 https://forums.oracle.com/thread/2552799 。 我试过建议修复: https : //forums.oracle.com/message/11082162#11082162但没有任何成功。 我可以在我的应用程序中看到3个AWT-EventQueue线程,数字从0到2.看起来如果JWS启动程序,JRE会为不同的应用程序上下文创建额外的事件队列。 JWS中有3个AppContext和3个EVT,如果从IDE执行程序,则只有一个上下文和EVT。 —-更新2 : 下面的guruman建议有一个解决方法(非常感谢)。 不幸的是,必须替换来自RMI线程的所有对SwingUtilities.invokeLater(..)的调用,并且程序开始依赖于Sun JRE内部API。 我仍在寻找更具体的方法,不是针对Sun JRE的。 我认为这是一个JRE错误。 也许它可以以某种方式修补:在RMI线程中AppContext不应为null。 —-更新3: […]

Java RMI连接使用什么端口?

我可以知道Java RMI连接使用了哪个端口? 如果我想使用RMI连接将Java客户端应用程序连接到Java服务器应用程序,我需要在服务器计算机上打开哪个端口,以便客户端应用程序可以连接到它? 我想在服务器机器中设置防火墙,但我不知道应该打开哪个端口。