开发环境:JDK1.5,Windows XP
实现步骤: A 编写编译IDL接口 B 编写编译服务端程序 C 编写编译客户端程序 D 运行
实现详解:
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!
分享到:
相关推荐
module HelloWorld { interface Hello { string say_hello(); }; }; ``` 这里定义了一个名为`Hello`的接口,它有一个`say_hello`方法,返回一个字符串。 ### 3. 生成 stub 和 skeleton 使用ORB提供的编译器...
在这个"Java实现的CORBA接口版HelloWorld"示例中,我们将深入理解如何使用CORBA在Java中创建客户端和服务端。 1. **CORBA基础概念**: - **ORB(Object Request Broker)**:是CORBA的核心,它负责对象间的通信,...
javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) javareflection.zip 26.Java反射机制与动态代理 javageneric.zip 27.Java泛型编程 javaannotation.zip 28.Java注释符编程 ...
javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) javareflection.zip 26.Java反射机制与动态代理 javageneric.zip 27.Java泛型编程 javaannotation.zip 28.Java注释符编程 ...
javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) javareflection.zip 26.Java反射机制与动态代理 javageneric.zip 27.Java泛型编程 javaannotation.zip 28.Java注释符编程 ...
例如,一个简单的Java程序HelloWorld类的实现代码如下: ```java class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld!"); } } ``` 所有Java代码都必须包含在类中,...
1. 定义接口:在CORBA中,对象的接口被定义为IDL(Interface Definition Language)文件,如`helloworld.idl`。例如: ```idl module HelloWorld { interface Hello { string say_hello(); }; }; ``` 这个IDL文件...
如果您选择不同的位置,请编辑 corba-javaws-ssl/pom.xml 中的属性 JACORB 将 corba-helloworld-server/src/main/resources/jacorb.keystore 复制到 $JACORB/etc/ 从 $JACORB/etc/jacorb_proper
hello->say_hello("World", env); ``` 最后,启动ORB并保持运行,以便客户端可以连接。在服务器端,我们调用`ORB_run()`;在客户端,我们同样需要调用`ORB_init`和`ORB_run`,但在调用完远程方法后,我们会调用`ORB...
1. **JDK中的CORBA支持**:Java SDK自带了对CORBA的支持,位于`java.corba`和`java.rmi`包中。Java IDL工具(idlj)可以将IDL文件编译为Java类。 2. **ORB实现**:Java中常用的ORB实现有OpenORB、OMG ORB for Java...
通过阅读 **Orbix Programmer's Guide Java Edition**,开发者不仅可以学习如何使用 **Orbix Java** 构建分布式应用程序,还能深入理解 **CORBA** 的核心概念和技术细节。这对于从事分布式系统开发的专业人士来说是...
CORBA实例详解 CORBA(Common Object Request Broker Architecture)是一种分布式对象计算架构,允许...这个CORBA实例演示了如何使用IDL定义接口、生成Java语言映射、实现服务器端的Java语言程序和服务器启动程序。
以一个简单的“Hello World”为例,我们可以通过以下步骤创建一个基于Java的CORBA应用程序: 1. **定义IDL接口:** ```idl module HelloApp { interface Hello { string sayHello(in string message); }; }; ...
"5_Hello World - 简单实例"是每个编程教程的传统起点,通过一个简单的程序展示了如何使用TAO实现CORBA的客户端和服务端通信。这个例子有助于初学者快速理解CORBA的基本工作流程。 **6. 使用命名服务** "6_Naming ...
这些资源可能涵盖了从简单的"Hello, World"示例到复杂的企业级应用的完整开发过程。 使用CORBA,企业可以构建松散耦合的系统,其中每个对象都可以作为独立的服务运行,降低了维护和升级的复杂性。ORB负责对象的定位...
module HelloWorld { interface Hello { string say_hello(in string name); }; } ``` 5. 生成Java代码:IDL文件编写完成后,需要将其转换为Java源代码。右键点击IDL文件,选择“Generate Java Skeletons”。...
- **示例**:简单的“Hello World”Servlet。 **5.4.3 Servlet案例** - **示例**:用户注册页面。 **5.5 HTML中的FORM元素** **5.5.1 , ** - **定义**:用于收集用户输入。 **5.5.2 , ** - **定义**:用于下拉...