我有一个RMI服务器在本地主机上运行,导出message
类型的对象:
try {
MessageServer obj = new MessageServer();
Message stub = (Message) UnicastRemoteObject.exportObject(obj, 0);
Registry registry = LocateRegistry.getRegistry();
registry.bind("M", stub);
} catch (RemoteException e) {
} catch (AlreadyBoundException e) {
}
然后我想启动一个客户端并获取该对象的存根。似乎找到了注册表,但随后在try
块中抛出了NotBoundException
:
java.rmi.NotBoundexception:M在sun.rmi.registry.registryimpl.lookup(registryimpl.java:136)在sun.rmi.server.unicastserverref.olddispatch(未知源)在sun.rmi.server.unicastserverref.dispatch(unicastserverref.java:409)在sun.rmi.server.unicastserverref.dispatch(unicastserverref.java:267)在sun.rmi.transport.transport$1。run(transport.javaTreamRemoteCall.java:273)位于sun.rmi.transport.StreamRemoteCall.ExecuteCall(StreamRemoteCall.java:251)位于sun.rmi.server.UnicastRef.Invoke(UnicastRef.java:377)位于sun.rmi.Registry.RegistryImpl_Stub.Lookup(未知源)位于rmiteSt.MessageClient.Main(MessageClient.java:23)
public static void main(String args[]) {
//String host = "localhost";
Registry registry;
Message stub = null;
try {
registry = LocateRegistry.getRegistry();
stub = (Message) registry.lookup("M"); //NotBoundException thrown here
} catch (NotBoundException ex) {
} catch (AccessException ex) {
} catch (RemoteException ex) {
}
try {
stub.insert("TestString"); //NullPointerException here
} catch (RemoteException ex) {
}
}
RMI是一种野兽,如何运行它总是一个问题。
首先,按照@EJP的建议进行正确的异常处理:一个原因可能是您遇到了连接超时或类似的情况--所以将e.printStackTrace()
放入catch
块中,让我们看看是否会收到某种错误消息(顺便说一下,当您调试一个被抑制的异常两天后,您会很快停止创建空的catch
块)。难道不能是你的防火墙来捕捉连接吗?
我还将getRegistry()
更改为createRegistry()
,将bind()
更改为rebind()
(这可以节省您一点时间)。
您得到的异常是因为您的主应用程序无法绑定(注册)您想要的服务,并且它在默认注册表中丢失(不可用)。
RMI可以通过几种方式实现。您选择的方法在开发和测试中绝对是很酷的,但是如果要将其置于生产环境中,则需要做一些更改(例如,可能会有一个通用的RMIRegistry
在某个地方运行,您必须使用策略文件和一些属性,如java.rmi.codeBase=...
,您需要安装一个适当的安全管理器,等等)
我一直在仅在Dreamweaver中开发一个PHP项目。在确定Netbean会让我的生活更轻松之后,我为PHP安装了Netbean 7.2。 我遵循了项目设置指南,但我对项目文件夹有问题。我可以编辑和保存源文件,但如何更新本地主机上的文件? 具体来说,我在我们的工作驱动器上有项目源文件,我可以将其用作常规硬盘驱动器。我甚至在Dreamweaver中为这个项目提供了一个站点文件,其中源文件夹、本地文
我还一直得到“自动填充$HTTP_RAW_POST_DATA是deprecated”,并且我已经在.ini中将always_populate_raw_post_data更改为-1,我一直得到这些。
我刚刚安装了XAMPP-Win32-5.5.30,在xampp控制面板中,Apache和mysql都启动了,没有任何错误,但我发现: 1)浏览器中的localhost重定向到另一个页面localhost/dashboard/而不是xampp起始页。
我在索引中有代码。php 在头上。php 当我尝试在浏览器中打开时,发现以下错误:
问题内容: 我从此链接克隆了一个有关Web浏览器上实时图像处理的项目:然后,我不允许我的浏览器访问我的相机。我收到此JavaScript警报: 嗯,网络摄像头没有启动。你有摄像头吗?您同意了吗?刷新后重试。并且允许按钮不会显示,就像我访问他的网站一样。 问题答案: 您是否正在通过localhost访问通过HTTP提供的网页?如果您通过访问它,Chrome会征求您使用相机的许可。 如果您直接打开网页
我有一个php脚本,想按计划运行它。我在windows上使用本地web服务器(WAMP服务器),需要一种每10分钟运行< code>my_script.php的方法。 如何在WINDOWS中的本地主机上在PHP脚本上运行cron作业?