我在试着写第一个JAVA/CORBA程序,现在遇到配置上的问题
我用idl2java编译idl 文件的时候
用下面的命令:
idl2java count.idl -no_comments -no_tie
但是出现这样的错误:
Exception in thread "main" java.lang.ClassCastException
at com.visigenic.vbroker.tools.idl2java.main(idl2java.java:30)
请求高人指教
我用idl2java编译idl 文件的时候
用下面的命令:
idl2java count.idl -no_comments -no_tie
但是出现这样的错误:
Exception in thread "main" java.lang.ClassCastException
at com.visigenic.vbroker.tools.idl2java.main(idl2java.java:30)
请求高人指教
就会出现在当前目录下出现一个IDL目录,里面包含所需要的JAVA代码。
能留下你的联系方式吗,qq,或者msn什么的
能留下你的msn或者qq吗?:)
http://fanqiang.chinaunix.net/program/java/2001-08-03/2178.shtml
执行client的时候还出现以下的问题:
ERROR: org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No
at com.sun.corba.se.internal.iiop.ConnectionTable.getConnection(Unknown
Source)
at com.sun.corba.se.internal.iiop.ConnectionTable.getConnection(Unknown
Source)
at com.sun.corba.se.internal.iiop.GIOPImpl.getConnection(Unknown Source) at com.sun.corba.se.internal.corba.ClientDelegate.createRequest(Unknown
Source)
at com.sun.corba.se.internal.corba.ClientDelegate.createRequest(Unknown
Source)
at com.sun.corba.se.internal.corba.InitialNamingClient.resolve(Unknown S
ource)
at com.sun.corba.se.internal.corba.InitialNamingClient.resolveUsingBoots
trapProtocol(Unknown Source)
at com.sun.corba.se.internal.corba.InitialNamingClient.cachedInitialRefe
rences(Unknown Source)
at com.sun.corba.se.internal.corba.InitialNamingClient.resolve_initial_r
eferences(Unknown Source)
at com.sun.corba.se.internal.corba.ORB.resolve_initial_references(Unknow
n Source)
at ChinaServer.main(ChinaServer.java:13)真是困难重重啊
{
struct Info
{
string sInfo;
};
typedef sequence <Info> Infoseq;
interface Example
{
Infoseq getInfos(in long n);
};
};2、利用IDL命令编译IDL文件3、编写服务端:
3.1.实现定义的接口:package com.css.anli.corba.demo.server;
import idl.*;/**
* <p>标题: </p>
* <p>描述: </p>
* <p>版权: Copyright (c) 2005</p>
* <p>公司: 中国软件集团</p>
* 作者 何岸[[email protected]]
* 版本 1.0
*/
public class ExampleImpl extends ExamplePOA
{
public ExampleImpl(){}
public idl.Info[] getInfos(int n)
{
int size = (n>0) ? n : 0; String address = "";
try
{
address = java.net.InetAddress.getLocalHost().toString();
}
catch(Exception e){} Info[] infos = new Info[size];
for(int i=0;i<size;i++)
{
infos[i] = new Info("I am info "+i +" come from ["+ address+"]");
}
return infos;
}
}3.2编写服务器端package com.css.anli.corba.demo.server;
import idl.*;
import java.io.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
import java.util.Properties;
/**
* <p>标题: </p>
* <p>描述: </p>
* <p>版权: Copyright (c) 2005</p>
* <p>公司: 中国软件集团</p>
* 作者 何岸[[email protected]]
* 版本 1.0
*/
public class DemoServer
{ public static void main(String[] args)
{
startServer();
} private static void startServer()
{
try
{
String[] serverPros= {"-ORBInitialPort",
"1050",
"-ORBInitialHost",
"localhost"}; ORB orb = ORB.init(serverPros, null);
POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootpoa.the_POAManager().activate();
org.omg.CORBA.Object ref = rootpoa.servant_to_reference(new ExampleImpl()); System.out.println("绑定的命名服务:");
System.out.println(ref); //orb.object_to_string(ref);
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); NameComponent path[] = {new NameComponent("com.css.anli.corba.demo.Example","Object"),
}; ncRef.rebind(path, ref);
System.out.println("DemoServer ready and waiting ...");
orb.run(); java.lang.System.currentTimeMillis();
}
catch (Exception e)
{
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}
System.out.println("DemoServer Exiting ...");
}
}4、编写客户端package com.css.anli.corba.demo.client;
import idl.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
public class DemoClient
{
public static void main(String args[])
{
if(null==args || args.length<1)
{
System.out.println("请传入服务器 IP");
return;
}
try
{ System.out.println(args[0]); String[] serverPros= {"-ORBInitialPort",
"1050",
"-ORBInitialHost",
args[0]};
//"192.9.100.20"};
ORB orb = ORB.init(serverPros, null);
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); NameComponent[] path = {new NameComponent("com.css.anli.corba.demo.Example","Object")};
org.omg.CORBA.Object exampleObj = ncRef.resolve(path); Example example = ExampleHelper.narrow(exampleObj);
long st = System.currentTimeMillis();
Info[] infos = example.getInfos(10000);
long et = System.currentTimeMillis();
System.out.println("花费时间: " + (et - st) + "毫秒");
int n = infos.length; for(int i=0;i<n;i+=100)
{
System.out.println(infos[i].sInfo);
}
System.out.println(n);
}
catch (Exception e)
{
System.out.println("ERROR : " + e) ;
e.printStackTrace(System.out);
}
}
}5.打包,编写启动命令5.1启动命名服务的命令:
tnameserv -ORBInitialPort 1050
5.21 启动服务的命令:
java -classpath "DemoServer.jar" com.css.anli.corba.demo.server.DemoServer5.3启动客户端:java -classpath "DemoServer.jar" com.css.anli.corba.demo.client.DemoClient 192.9.100.13
5.2
但是关键编译idl怎么也不行,idl2java这个工具好象不行啊