faint,,就根本没有人了解这个问题。。
我已经解决了,
随便谁进来我就给他100分,要不然结不了贴
我已经解决了,
随便谁进来我就给他100分,要不然结不了贴
解决方案 »
- 扫描条形码的原理的题目
- 多态是什么意思,能解释一下吗(菜鸟问题)
- 这种效果如何实现:google pisaca或者暴风影音的文件发现
- HttpClient用法
- 我把了log4j.jar放到java\lib里面去了,可是运行时还是找不到Logger这个类,why?
- 菜鸟问Visual J++ 6.0的问题
- 谁能详细说明一下try catch和throws 和throw的区别和联系,具体用法……
- 祝兄弟们节日快乐!散分!
- JFrame有没有可能通过点击事件使窗口变化,该怎么写啊。
- struts框架中,JSP页面中表单提交action出错,但是直接通过url访问action正确,求解答
- double 类型怎样不用科学计数法表示?(急)
- 100分!求有关动画的程序代码。分不够另帖再加。
我没用过。
不过用corba的话比较简单。
omniORB也有windows的版本。
java的ORB用的是openORB
实现:
/******* test.idl ********/interface TransferString {
string echoString(in string buffer);
};/******* C++ server *******/
//省略/******* Java Client *******/import java.lang.System;
import org.omg.CORBA.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
public class TestClient
{
protected static void connect()
{
try {
System.out.println("luach connectExt function");
org.omg.CORBA.Object objRef =
ourORB.resolve_initial_references("NameService");
System.out.println("get root context successful");
NamingContextExt rootContext = NamingContextExtHelper.narrow(objRef);
System.out.println("narrow root context successful");
org.omg.CORBA.Object obj =
rootContext.resolve_str("TransferWString.Object"); System.out.println("bind complete");
transfer = TransferWStringHelper.narrow(obj);
System.out.println("narrow complete");
}
catch (NullPointerException ex)
{
System.out.println("Some required properties is empty." + ex);
}
catch (Exception ex)
{
System.out.println("Exception occured: "+ex);
ex.printStackTrace();
}
protected static void stringToObj(String ior)
{
if (ior != null && ior.length() != 0) {
org.omg.CORBA.Object obj = ourORB.string_to_object(ior);
System.out.println("string to object successful");
transfer = TransferStringHelper.narrow(obj);
System.out.println("narrow complete");
}
}
private static void echoString(String mesg)
{
try {
String echoString = transfer.echoString(mesg);
System.out.println("send " + mesg +
"and return mesg " + echoString);
}
catch (Exception ex) {
System.out.println("catch exception in call method");
ex.printStackTrace();
}
}
public static void main(String args[])
{
String ior = null;
String nameservice = "corbaloc::10.1.8.190:2001/NameService";
//String openOrbHome = "jar:file:" + owareHome +
// "/lib3rd/openorb-1.3.1.jar!/org/openorb/";
//System.out.println("open orb home: "+openOrbHome); ourORB = ORB.init( new String[] {
//"-ORBOpenORB="+openOrbHome,
"-ORBInitRef", "NameService="+nameservice
},
null
); System.out.println("init orb successful");
if (ior != null && ior.length() != 0)
stringToObj(ior);
else
connect();
echoString("sfsf");
}
public static ORB ourORB = null;
private static TransferString transfer = null;
} 我用的jdk1.4.1, 用jdk1.3的时候运行会报错,注意配置好NameService
NamingContextExt
NamingContextExtHelper
这两个类的。我用的orb是orbacus4.1.0,它的手册上讲这个版用jdk1.2 or later,而对jdk1.4支持的不怎么好,还没有正式兼容。的确,简单的java CORBA我在jdk1.4下执行服务端必须加上bootclasspath参数才能执行,而在jdk1.3就不用,服务可以像执行普通java程序那样,然而手册中介绍的namservice中举的例子却使用了NamingContextExt、NamingContextExtHelper那两个只在jdk1.4及以后才提供的类,
NamingContextExt
NamingContextExtHelper但是在jdk1.3中可以用NameContext, 不过绑定需要NameCompnent类。NameComponent nameComponent = new NameComponent("TransferString", "Object");
NameComponent path[] = { nameComponent };
org.omg.CORBA.Object obj = rootContext.resolve(path);
待会开贴给分
applet怎么初始化orb我是把Applet传递给了ORB.init(this,prop)了,用appletviewer查看没问题,但是在页面里直接打开就出现下面的问题
warning: ORB.destroy() was not called. This may result in resource leaks.org.omg.CORBA.COMM_FAILURE: socket() failed: java.net.SocketException: Connection reset vmcid: 0x4f4f0000 minor code: 5 completed: No
at com.ooc.OCI.IIOP.Connector_impl.connect(Connector_impl.java:138)
at com.ooc.OB.GIOPClient.getWorker(GIOPClient.java:100)
at com.ooc.OB.GIOPClient.bind(GIOPClient.java:434)
at com.ooc.OB.DowncallStub.locate_request(DowncallStub.java:518)
at com.ooc.CORBA.Delegate._OB_getDowncallStub(Delegate.java:1234)
at com.ooc.CORBA.Delegate.request(Delegate.java:602)
at com.ooc.CORBA.Delegate.is_a(Delegate.java:401)
at org.omg.CORBA.portable.ObjectImpl._is_a(Unknown Source)
at org.omg.CosNaming.NamingContextHelper.narrow(Unknown Source)
at Client.main(Client.java:25)
at a.paint(a.java:8)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)其实用appletviewer查看时,都可以不把当前applet传递给ORB.init()方法。
我是直接使用了那个application,写了另一个applet调用了application的main()方法的。