使用java实现基于corba的helloworld
2008-06-05 13:32
459 查看
开发环境:JDK1.5,Windows XP
实现详解:
1 编写IDL接口HelloWorld.idl:
module sample{
interface HelloWorld{
string sayHello();
};
};
2 编译IDL接口:C:/xxf/aaron/study/corba>idlj –fall HelloWorld.idl
编译结果生成sample包,生成下述文件
_HelloWorldStub.java
HelloWorld.java
HelloWorldHelper.java
HelloWorldHolder.java
HelloWorldOperations.java
HelloWorldPOA.java
3 编写服务端程序:HelloWorldServer.java
import sample.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.CORBA.portable.*;
import org.omg.PortableServer.*;
class HelloWorldServant extends HelloWorldPOA {
public String sayHello() {
return "/nHello World!/n";
}
}
public class HelloWorldServer {
public static void main(String args[]) {
try {
//Initialize CORBA
ORB orb = ORB.init(args, null);
org.omg.CORBA.Object poaobj = orb.resolve_initial_references(
"RootPOA");
org.omg.PortableServer.POA rootPOA = org.omg.PortableServer.
POAHelper.narrow(poaobj);
org.omg.PortableServer.POAManager manager = rootPOA.the_POAManager();
//New Servant
HelloWorldServant objRef = new HelloWorldServant();
HelloWorld obj = objRef._this(orb);
//Binding
NamingContext ncRef = NamingContextHelper.narrow(
orb.resolve_initial_references("NameService"));
NameComponent nc = new NameComponent("HelloWorld", "");
NameComponent path[] = {nc};
ncRef.rebind(path, obj);
//Run
manager.activate();
System.out.println("HelloWorld is running!");
orb.run();
} catch (Exception e) {
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}
}
}
4 编写客户端程序: HelloWorldClient.java
import sample.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
public class HelloWorldClient {
public static void main(String args[]) {
try {
ORB orb = ORB.init(args, null);
org.omg.CORBA.Object objRef = orb.resolve_initial_references(
"NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
NameComponent nc = new NameComponent("HelloWorld", "");
NameComponent path[] = {nc};
HelloWorld helloWorld = HelloWorldHelper.narrow(ncRef.resolve(path));
String hello = helloWorld.sayHello();
System.out.println(hello);
} catch (Exception e) {
/* System.out.println("ERROR : " + e);
e.printStackTrace(System.out);*/
e.printStackTrace();
}
}
}
5 运行
启动名字服务器:C:/xxf/aaron/study/corba>tnameserv -ORBInitialPort 1050
启动服务端程序:C:/xxf/aaron/study/corba>java HelloWorldServer -ORBInitialPort 1050
启动客户端程序:C:/xxf/aaron/study/corba>java HelloWorldClient -ORBInitialPort 1050
输出:Hello World!
实现详解:
1 编写IDL接口HelloWorld.idl:
module sample{
interface HelloWorld{
string sayHello();
};
};
2 编译IDL接口:C:/xxf/aaron/study/corba>idlj –fall HelloWorld.idl
编译结果生成sample包,生成下述文件
_HelloWorldStub.java
HelloWorld.java
HelloWorldHelper.java
HelloWorldHolder.java
HelloWorldOperations.java
HelloWorldPOA.java
3 编写服务端程序:HelloWorldServer.java
import sample.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.CORBA.portable.*;
import org.omg.PortableServer.*;
class HelloWorldServant extends HelloWorldPOA {
public String sayHello() {
return "/nHello World!/n";
}
}
public class HelloWorldServer {
public static void main(String args[]) {
try {
//Initialize CORBA
ORB orb = ORB.init(args, null);
org.omg.CORBA.Object poaobj = orb.resolve_initial_references(
"RootPOA");
org.omg.PortableServer.POA rootPOA = org.omg.PortableServer.
POAHelper.narrow(poaobj);
org.omg.PortableServer.POAManager manager = rootPOA.the_POAManager();
//New Servant
HelloWorldServant objRef = new HelloWorldServant();
HelloWorld obj = objRef._this(orb);
//Binding
NamingContext ncRef = NamingContextHelper.narrow(
orb.resolve_initial_references("NameService"));
NameComponent nc = new NameComponent("HelloWorld", "");
NameComponent path[] = {nc};
ncRef.rebind(path, obj);
//Run
manager.activate();
System.out.println("HelloWorld is running!");
orb.run();
} catch (Exception e) {
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}
}
}
4 编写客户端程序: HelloWorldClient.java
import sample.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
public class HelloWorldClient {
public static void main(String args[]) {
try {
ORB orb = ORB.init(args, null);
org.omg.CORBA.Object objRef = orb.resolve_initial_references(
"NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
NameComponent nc = new NameComponent("HelloWorld", "");
NameComponent path[] = {nc};
HelloWorld helloWorld = HelloWorldHelper.narrow(ncRef.resolve(path));
String hello = helloWorld.sayHello();
System.out.println(hello);
} catch (Exception e) {
/* System.out.println("ERROR : " + e);
e.printStackTrace(System.out);*/
e.printStackTrace();
}
}
}
5 运行
启动名字服务器:C:/xxf/aaron/study/corba>tnameserv -ORBInitialPort 1050
启动服务端程序:C:/xxf/aaron/study/corba>java HelloWorldServer -ORBInitialPort 1050
启动客户端程序:C:/xxf/aaron/study/corba>java HelloWorldClient -ORBInitialPort 1050
输出:Hello World!
相关文章推荐
- 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置
- 基于Java使用HashMap实现数据的缓存
- 基于Corba技术使用java与C++混合编程
- Java反射机制使用场景,以及基于javaReflect Java动态代理实现
- 使用 RJB(Ruby Java Bridge) 实现 Ruby 的CORBA RPC
- 时间序列数据库KDB 与Java结合使用介绍 -- 3 基于KDB JDBC的写入实现
- java Excel导入导出,基于XML的实现,easy-excel使用
- 用Java实现基于CORBA的自动负载均衡
- java基于servlet使用组件smartUpload实现文件上传
- java Excel导入导出,基于XML的实现,easy-excel使用
- 使用golang+java实现基于ecb的3eds加解密
- Corba开发之基于Java实现Service与Client
- 用Java实现基于CORBA的自动负载均衡
- java Excel导入导出,基于XML的实现,easy-excel使用
- 基于Java使用HashMap<String,List<String>>实现数据的缓存
- 时间序列数据库KDB 与Java结合使用介绍 -- 2 基于KDB Java的写入实现
- 使用 Google App Engine 实现基于云计算的小型 Java 数据服务应用
- 最近在做实验希望实现基于JNI技术在Java中使用 Slex.dll
- 使用java基于pushlet和bootstrap实现的简单聊天室
- 【JavaWeb-24】AOP介绍和术语、手动/半自动/自动实现AOP、基于XML和注解的AspectJ使用、JdbcTemplate的使用