- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试获取 Oracle RMI-IIOP example工作,但我在 Netbeans 中执行此操作时遇到问题。
我的代码如下:
界面
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface HelloInterface extends Remote {
public void sayHello(String from) throws RemoteException;
}
接口(interface)实现
import java.rmi.RemoteException;
import javax.rmi.PortableRemoteObject;
public class HelloImpl extends PortableRemoteObject implements HelloInterface{
public HelloImpl() throws RemoteException
{
super();
}
public void sayHello(String from) throws RemoteException
{
System.out.println("Hello from " + from + "!!!");
System.out.flush();
}
}
服务器主
import javax.naming.Context;
import javax.naming.InitialContext;
public class HelloServer {
public static void main(String[] args) {
try {
System.setProperty("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
System.setProperty("java.naming.provider.url", "iiop://localhost:1050");
// Step 1: Instantiate the Hello servant
HelloImpl helloRef = new HelloImpl();
// Step 2: Publish the reference in the Naming Service
// using JNDI API
Context initialNamingContext = new InitialContext();
initialNamingContext.rebind("HelloService", helloRef);
System.out.println("Hello Server: Ready...");
} catch (Exception e) {
System.out.println("Trouble: " + e);
e.printStackTrace();
}
}
}
和客户端代码
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
public class HelloRMIIIOPClient {
public static void main(String[] args) {
Context ic;
Object objref;
HelloInterface hi;
try {
ic = new InitialContext();
System.setProperty("classpath", ".");
System.setProperty("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
System.setProperty("java.naming.provider.url", "iiop://localhost:1050");
// STEP 1: Get the Object reference from the Name Service
// using JNDI call.
objref = ic.lookup("HelloService");
System.out.println("Client: Obtained a ref. to Hello server.");
// STEP 2: Narrow the object reference to the concrete type and
// invoke the method.
hi = (HelloInterface) PortableRemoteObject.narrow(
objref, HelloInterface.class);
hi.sayHello( " MARS " );
} catch( Exception e ) {
System.err.println( "Exception " + e + "Caught" );
e.printStackTrace( );
return;
}
}
}
我使用 rmic 生成 stub 和骨架,代码的服务器部分工作正常,但是当我运行客户端代码时,我得到:
Exception javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initialCaught
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at hellormiiiopnew.HelloRMIIIOPClient.main(HelloRMIIIOPClient.java:33)
BUILD SUCCESSFUL (total time: 0 seconds)
虽然这只是为了让我了解其工作原理,但最终代码将用作模板,因此我可以通过互联网在分布式系统上传输简单的对象。我一直在尝试让 RMI 在互联网上工作,但没有成功,所以这是我的最新尝试。任何帮助,尤其是示例,将不胜感激。
最佳答案
您需要在创建InitialContext 之前设置系统属性。
关于java - 通过互联网的 RMI iiop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415756/
我正在尝试获取 Oracle RMI-IIOP example工作,但我在 Netbeans 中执行此操作时遇到问题。 我的代码如下: 界面 import java.rmi.Remote; impor
假设我想将以下 RMI-IIOP 导出对象的远程引用传递给接收者(这是另一个远程对象): public interface MyInterface extends Remote { publi
我知道 JRMP 会为每个调用请求打开一个新套接字。此外,IIOP 可以为多个请求共享一个打开的套接字。 如维基百科所述: Usage of the term RMI may denote solel
为什么我无法启动 orbd 服务 CORBA IIOP? C:>启动 orbd -ORBInitialPort 1050 C:>orbd -ORBInitialPort 1050 由于内部异常,无法启
我有一个 Java 版本的 IIOP 客户端,但我遇到了各种连接问题。我想用 python 构建客户端,但还没有找到任何可以让我这样做的东西。有这样的事吗? 最佳答案 omniORB支持Python。
我已经在 Windows Server 2012 上成功安装了 omniORB。我有两个使用 omniidl 编译器编译的 IDL 文件,现在有两个 IDL 文件的头文件和源文件。 你如何着手编写一个
我有一个使用 IIOP 协议(protocol)的 CORBA 应用程序,我正在使用 JDK 6 的 Java IDL 组件,这是另一个 ORB 实现。 用Java语言实现客户端和服务器。 在 JDK
我知道 RMI 无法在 LAN 外部建立连接。我想知道 RMI IIOP 是否可以通过互联网连接服务器客户端。是否可以 ?如果是,可能的解决方案是什么? 最佳答案 RMI 在互联网上运行良好,它是基于
我正在将一个在 JBoss 6.1 上运行的已有 10 年历史的 EJB2 应用程序从 JNP 协议(protocol)迁移到 CORBA RMI/IIOP,因为我想使用 ORB PortableIn
在 Glassfish v2 中,我通过在 ORB 节点下的管理控制台中启用“IIOP 客户端身份验证”复选框来保护我的 JNDI 查找。 然后在我的独立客户端中执行“ProgrammaticLogi
我正在测试 JAAS Subject 的传播用custom Principal从运行在原始 Java 运行时上的独立 EJB 客户端到 JavaEE 服务器。我同时针对 JBoss 和 WebSphe
我正在开发一个应用程序,它使用消息驱动 bean 接收消息并将数据保存到数据库中。当尝试在 glassfish 上部署它时,我收到以下错误: java.lang.RuntimeException: I
我们正在迁移到 VisiBroker 7.0。在我们的客户端应用程序中,我们开始使用作为 Java 存档 vbjclientorb.jar 文件提供的 VBJ 客户端运行时。 AIX 的vbjclie
我开始在 eclipse 中使用 WAS Liberty 8.5,当我尝试部署应用程序时出现此错误。 Caused by: java.lang.NoClassDefFoundError: com/ib
我是一名优秀的程序员,十分优秀!