当我尝试与RMI服务器连接时出现NotBoundException

时间:2019-04-03 00:03:51

标签: java rmi

我尝试使用RMI客户端服务器启动此应用程序。 首先,我运行它并出现错误“连接被拒绝托管到主机:本地主机”。 之后,我去了system32 / drivers / etc / hosts并对其进行了修复,并添加了以下行:

if ($decgoogresp->success == true) { // Success if(!$mail->send()) { $msg = 'Message could not be sent.'; $msgClass = 'Mailer Error: ' . $mail->ErrorInfo; } else { $msg = 'Your email has been sent'; $msgClass = 'alert-success'; } } else { $msg = "Please check the Captcha"; $msgClass = 'alert-danger'; } }

这不是导致我解决问题的方法。 然后,我在stackoverflow中查找了有关如何解决此问题的相同问题,然后使用(在cmd中运行)解决了该问题:

127.0.0.1 localhost

因此,rmiregistry运行了,我遇到了一个新错误-NotBoundException(但是我可以解决“连接拒绝”问题)。

servicebrowser.java:

start rmiregistry

ServiceServerImpl类:

package servicebrowser;

import java.awt.*;
import javax.swing.*;
import java.rmi.*;
import java.awt.event.*;


public class ServiceBrowser {


    JPanel mainPanel;
    JComboBox serviceList;
    ServiceServer server;

    public void buildGUI() {


        Object[] services = getServicesList();


    }


    Object[] getServicesList() {
        Object obj = null;
        Object[] services = null;

        try {

            obj = Naming.lookup("rmi://127.0.0.1/ServiceServer");

        }
        catch (Exception ex) { ex.printStackTrace(); }

        server = (ServiceServer) obj;

        try {
            services = server.getServiceList();
        }
        catch (Exception ex) { ex.printStackTrace(); }
        return services;        
    }

    class MyListListener implements ActionListener {
        public void actionPerformed(ActionEvent ev) {
            Object selection = serviceList.getSelectedItem();
            loadService(selection);           
        }        

    }



    public static void main(String[] args) {

       new ServiceBrowser().buildGUI(); 


    }

}

这有什么问题?我当然也关闭了防火墙。

1 个答案:

答案 0 :(得分:-1)

非常感谢!

我以这种方式解决了我的问题。

首先,我编辑了servicebrowser类ServiceServerImpl。

类服务浏览器:

之前:

 try {

     obj = Naming.lookup("rmi://127.0.0.1/ServiceServer");

 }

现在(加上我在代码的顶部添加了import java.rmi.registry.LocateRegistry,import java.rmi.registry.Registry):

try {
    Registry registry = LocateRegistry.getRegistry("127.0.0.1", 10001);
    obj = registry.lookup("ServiceServer");

}

ServiceServerImpl类:

之前:

try {

    Naming.rebind("ServiceServer", new ServiceServerImpl());   

}

现在(就像上一课一样,我在代码的顶部添加了导入类):

try {
    Registry registry = LocateRegistry.createRegistry(10001);
    registry.bind("ServiceServer", new ServiceServerImpl());   

}

其次,我尝试在Netbeans中运行项目(F6),其中 servicebrowser 被标记为主类。再次是拒绝联系。之后,我只运行了 ServiceServerImpl 类(Shift + F6),然后运行了整个项目。因此,它有效。

P.S。我没有使用cmd并尝试

  

“启动rmiregistry”

因为没有它,该应用程序即可运行。