怎样在Java application 里面调用OCX呢?(300分)

  • 主题发起人 主题发起人 曹晓钢
  • 开始时间 开始时间

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
用java做servlet,
其中可不可能调用一个ocx来生成一个图片?
这个OCX需要一个窗口句柄和一个DC.
Thanks.
分数么...给1000吧。
 
用java调用activex,
这不是和ms一样了,java有什么优势,
不如用asp,
多快好省.
你是说在客户端用吗?
曹大侠,久仰大名,
不知愿不原意收我做小弟.
呵呵
 
vj可以,但他好像是用一种模拟指针的东西来完成的。纯java恐怕不行。
 
好像即使 ASP 也不是使用 OCX (ActiveX Controls), 我记得应该是使用 Automation Objects.
Java 和 COM,您可以参考
JavaTM 2 Platform, Enterprise Edition Client Access Services (J2EETM CAS)
COM Bridge 1.0 Early Access
http://developer.java.sun.com/developer/earlyAccess/j2eecas/download-com-bridge.html
 
曹晓钢:
不知你用的是什么server,
在WebLogic 里,用WebLogic COM compiler可以将COM包装成Java objects
然后通过RMI就可以调用这个com的方法。我想你的server(好象听你说过是Websphere)
肯定类似的东东,找找看。
 
JNI应该就是干这个的吧?
 
看看这篇文章http://www.codeproject.com/java/javacom.asp.
 
Eguy:
你给的sample真不错!
说不定我们以后做练功场用的上呢!
不过我可能说错啦,调用的java主体不是application,而是一个servlet!
就是说没有hwnd可用...
关于这个问题,我也没闲着,已经着手开始用java改写原来的c程序了。
 
曹晓钢:参考一下MS的文档吧。
Microsoft Java Virtual Machine(JVM)在COM和Java对象之间扮演了一座桥梁的角色。
若将Java对象创建成一个COM服务器,那么我们的对象仍然会在JVM内部运行。
Microsoft JVM是作为一个DLL实现的,它向操作系统展示出了COM接口。在内部,JVM将
对这些COM接口的函数调用映射成Java对象中的方法调用。当然,JVM必须知道哪个Java类
文件对应于服务器执行模块;之所以能够找出这方面的信息,是由于我们事前已用Javareg
在Windows注册表内注册了类文件。Javareg是与Microsoft Java SDK配套提供的一个工具
程序,能读入一个Java类文件,生成相应的类型库以及一个GUID,并可将类注册到系统内。
亦可用Javareg注册远程服务器。例如,可用它注册在不同机器上运行的一个服务器。
如果想写一个Java/COM客户,必须经历一系列不同的步骤。
Java/COM“客户”是一些特殊的Java代码,它们想激活和使用系统内注册的一个COM服务器
。同样地,虚拟机会与COM服务器沟通,并将它提供的服务作为Java类内的各种方法展示
(揭示)出来。另一个Microsoft工具是jactivex,它能读取一个类型库,
并生成相应的Java源文件,在其中包含特殊的编译器引导命令。
生成的源文件属于我们在指定类型库之后命名的一个包的一部分。
下一步是在自己的COM客户Java源文件中导入那个包。

 
曹大侠:你的问题怎么样了,能否继续一下。
 
各位对不起,最近出差了好长时间。昨天回到南京。
报告一下进展:由于C源代码里大量使用了指针,改写成java似乎还挺困难,这个问题我们被迫用CGI
解决了。
问题的前因,某个商业程序需要使用crystal report打印报表,但是这个报表中使用它自己行业
的一些专用图形。他们提供了生成图形的程序,但是是一个OCX.
为了解决调用这个ocx,最后用VC做了个cgi,servlet做了必要的准备之后,sendRedirect去调用这个
cgi.cgi做的事情只有一个,根据传入的参数生成图形,放在某个目录下,然后再调用另一个servlet
去进行下一步工作。如是乎,就这样反复折腾,终于还是交差了。
性能显然不高,而那个C源代码里大量使用了指针,改写似乎还挺困难.
用C2j转换之后,java源代码非常大,效率也不会很高。
就先凑合着了。
感谢各位大虾!
 
接受答案了.
 
后退
顶部