Java调用COM的中间件Jintegra初探

 最近在学习ArcServer Java ADF的开发,遇到了怎么用Java调用COM组件的问题。ArcServer是基于COM实现的ArcObjects,因为ServerAPI是粗粒度的API,为了避免遭遇性能瓶颈,推荐的解决方案是具体功能用COM组件实现,然后用Java调用COM组件完成特定功能,尽可能地减少DCOM调用。
        了解ArcServer JavaADF或者ArcEngine JavaAPI的人一定知道ESRI解决Java调用COM组件的问题是借助Jintegra的产品来解决这个问题的。Jintegra的产品为ArcObjects生成了一组Java的Proxy classes,我们自己写的COM组件Proxy classes怎么办呢?
       今天为了解决我的笔记本上Power Users不能访问本机的ArcServer对象上它的网站去查找相关资料。看到有试用版下载,不过只能使用30天,30天过后还可以重新下载获取新的试用License。但是还是不爽,Java软件的授权一向以来做得不是很好,所以我就想看看怎么破解了它。下载了一个zip包,我不喜欢exe的安装程序,东西很少就一个Jintegra.jar。打开看看了,很快就找到jintegra.xml这个License文件。可以下载的SDK有两个版本2.5和2.4,但是不知道ArcServer用的是哪个版本,文档中找不到相关的信息。不管它先试试看,我把arcgis下的Jintegra.jar中的license抽出来,导入下载的sdk/lib/jintegra.jar中,用view参数看License时发现竟然是2.3,真是不走运啊。还好,从2.3升级到2.4,只要把jintegra.jar等一堆东西换掉就行了,原来生成的Proxy jars不用更新,2.5就得重新Proxy jars。也就是说2.4生成的Proxy和2.3是兼容的,这也是一个福音啊。因为我在对那组处理License的class反编译后发现这些class被混淆过,非常乱很多一个字母的方法,字符串乱七八糟的几乎看不出任何含义。看来以前的办法行不通。还好我发现一个Version类,Runtime的版本是从这个Class上获取的,这个Class非常简单就几个方法。不能把ESRI的License升级到2.4,那就把Runtime降为2.3的使用。说干就干,还真的没有问题。
      COM的Java Proxy生成非常简单只要执行com2java,然后选择要创建Proxy的类型库,可以是dll、tlb或者olb等都可以,然后可以创建到指定的package中。生成的是一组Java源文件,编译打包成jar即可。好像com2java不需要使用jintegra.jar,也就是不受license限制。因为License文件在jintegra.jar中,所以发布时也是受License限制的,也就是说试用版的SDK发布的东西还是试用版只能用到下载SDK后的第30天。其实我也只需要它帮我生成Proxy就行了,因为Java ADF中有License。
      我按照文档做了一个ATL DLL的例子,native mode下调用dll没有问题,但是remote mode下出了点问题,创建不了对象。后来发现创建COM+程序时,要设置安全性“调用的身份认证级别”必须为“连接”,默认为“数据包”,把这里一改就好了。
       现在的人真是浮躁,好多的问题只要认真研读一下相关文档就可以解决,乃至认真读过这些文档的人成了高手,其实这只是一个GIS开发人员必须做的基本功。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值