我正在准备考试,但有一个问题,希望这里有人可以回答我。
关于RMI和远程对象。我不知道为什么这两个实现之间有如此大的差异。一种是扩展UnicastRemoteObject,而另一种是将对象导出为UnicastRemoteObject。
我真的没有区别
接口:
public interface EchoI extends Remote {
public String echo() throws RemoteException
}
这是服务器代码(版本1):
public class EchoImpl extends UnicastRemoteObject implements EchoI {
public EchoImpl {
super();
}
public static void main (String[] args) {
try {
LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
StoreHouse storehouseImpl = new StorehouseImpl();
Naming.rebind("//localhost/StoreHouse.SERVICE_NAME", storehouseImpl);
System.out.println("Server ready");
} catch (RemoteException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public String echo() {
return "echo";
}
}
这将是版本2:
public class EchoImpl implements EchoI {
public static void main (String[] args) {
EchoI echoService = new EchoImpl();
EchoI stub = (EchoI) UnicastRemoteObject.exportObject(echoService, 0);
Registry registry = LocateRegistry.getRegistry();
registry.bind("echoService", stub);
...
}
}
我的问题是:两者之间有什么区别?
在第一个版本中,显式创建了注册表,此外,在重新绑定内创建了远程对象?
我真的很好奇,为什么为什么我首先需要自己创建注册表,而无需显式导出对象,而只需使用进行重新绑定Naming
。该对象之前是否已经绑定到注册表,或者我可以改用bind?如果该对象先前未绑定并且执行了重新绑定,会发生什么情况?
在第二个版本中,注册表似乎已经创建。为什么绑定命名与直接绑定到注册表相同?
这就是我的想法:
java.rmi.server.UnicastRemoteObject
用于导出使用Java远程方法协议(JRMP)的远程对象并获得与该远程对象通信的存根。
对于下面的构造函数和静态exportObject
方法,已获取要导出的远程对象的存根…
在那里,您应该遵循Javadoc
问题内容: 用Java导入和扩展类有什么区别 问题答案: 那是两件事。 导入一个类是为了使您可以使用该类,而无需在要编写的当前类中限定全名。 扩展类是创建一个新类,该新类是某个其他类的子类。这将允许您添加或更改要扩展的类的功能。
问题内容: 我已经看过以前用来表示任何对象的通配符-但最近看到了以下用法: 由于所有对象都扩展了对象,所以这两种用法是同义词吗? 问题答案: 并且是同义的,正如你所期望的。 在某些情况下,泛型实际上并不是多余的。例如,将导致成为下删除,而与它会成为下删除。(如果你要保留与使用的前泛型API的兼容性,这可能很重要。) 来源:http : //download.oracle.com/javase/tu
问题内容: 我无法理解为什么我们在PHP中需要2个XML解析器。 有人可以解释两者之间的区别吗? 问题答案: 简而言之: SimpleXml 用于简单的XML和/或简单的UseCases 与节点一起使用的有限API(例如,不能对接口进行太多编程) 所有节点属于同一种类(元素节点与属性节点相同) 节点可以魔术访问,例如 DOM 适用于您可能拥有的任何XML UseCase 是W3C DOM API的
那么,和到底有什么区别呢?什么时候我们应该偏爱一个而不是另一个?
扩展是可定制化浏览体验的小程序,它们使用户可以根据个人需要或者偏好定制 Chrome 的功能和行为。它们基于 Web 技术(例如 HTML,JavaScript 和 CSS)构建。 扩展必须满足狭义定义且易于理解的单一目的(译者注:功能简单易懂化)。一个扩展可以包括多个组件和一系列功能,只要所有的内容都有助于实现共同的目标。 用户交互界面应尽量小且有意图。他们的范围从简单的图标,如右侧显示的 Go
关键字可以与方法和类一起使用,但是如果我们与方法一起使用,那么方法就不能被重写,如果我们与类一起使用,那么它就不能被扩展?为此,请让我知道覆盖和扩展的主要区别是什么? 例如下面的程序给出编译错误(编译时间错误):