Robin's Blog

记录 积累 学习 成长

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

WebLogic的JCom是基于jintegra 
2.3制作的,但是进行了修改。开打Weblogic中Server的JCom协议,就可以使用jintegra了。(如果关闭

报告没有jintegra license)。似乎由于WebLogic修改了jintegra了,Java 
Engine利用jintegra生成的Java Com类不能正确的实例化。

(1)使用WebLogic的weblogic.jar,把license文件复制到jintegra/intrinsyc/license中

EngineInitializer.initializeEngine()可以正确执行,接下来 AoInitialize 
lAoInitialize = new AoInitialize()就异常
java.lang.RuntimeException: Failed to initialize native code 
invocation: null at 
com.linar.jintegra.NativeObjRef.init(NativeObjRef.java:373)
at com.linar.jintegra.Dispatch.isNativeMode(Dispatch.java:133)
at com.linar.jintegra.Dispatch.isNativeMode(Dispatch.java:111)
at com.linar.jintegra.Dispatch.createDispatch(Dispatch.java:273)
at com.linar.jintegra.Dispatch.(Dispatch.java:256)
at com.esri.arcgis.system.IAoInitializeProxy.(Unknown Source) at 
com.esri.arcgis.system.AoInitialize.(Unknown Source) at 
com.esri.arcgis.system.AoInitialize.(Unknown Source)

(2)用arcengine中的jintegra/linar替换weblogic.jar中的jintegra/linar(或者使用arcengi
ne提供的jintegra),运行java正常
一旦在weblogic服务环境中调用
AutomationException: 0x80040154 -
at 
com.linar.jintegra.RemoteActivation.readResponse(RemoteActivation.java)
at com.linar.jintegra.Rpc.invoke(Rpc.java:301)
at 
com.linar.jintegra.RemOXIDResolver.activate(RemOXIDResolver.java:160)
at com.linar.jintegra.Dispatch.createDispatch(Dispatch.java:293)
at com.linar.jintegra.Dispatch.(Dispatch.java:256)
at com.esri.arcgis.system.IAoInitializeProxy.(Unknown Source) at 
com.esri.arcgis.system.AoInitialize.(Unknown Source) at 
com.esri.arcgis.system.AoInitialize.(Unknown Source)

如何才能让Java Engine在WebLogic上正确运行呢

关于这个问题,确实存在于Weblogic上,有两种解决方法:
(1)    比较粗鲁的方法是用WinRar把jintegra.xml强行放到weblogic.jar的com/intrinsyc/license/这个package中
(2)    比较文明的方法是:
编辑weblogic的commeEnv.cmd文件(\bea\weblogic81\common\bin\commEnv.cmd),用记事本打开此文件,把下面的语句加到此文件的开头:set AGS_HOME=\ArcGIS
例如:set AGS_HOME=C:\Program Files\ArcGIS
同时,修改文件里面的WEBLOGIC_CLASSPATH变量,修改为:
set WEBLOGIC_CLASSPATH=%AGS_HOME%\java\jintegra.jar; 
%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\weblogic_sp.jar; 
%WL_HOME%\server\lib\weblogic.jar;%WL_HOME%\server\lib\ojdbc14.jar

重启Weblogic
简单地讲就是让Jintegra.jar在CLASSPATH中位于weblogic.jar前面,BEA真恶心,都打到weblogic.jar中的东西也不带个试用版的License,把事情弄得这么麻烦。

要面子的人可以使用第二种方法,比较粗鲁的人可以使用第一种方法,呵呵。

posted on 2010-04-15 16:04  Robin99  阅读(750)  评论(0)    收藏  举报