近日在调试一个ERP系统,该系统是架在websphere上的。
具体情况是这样的:操作该系统后台任务注册和执行的功能节点时,会报一个错
Exception occurred during event dispatching:
nc.bs.framework.exception.FrameworkConnectorException: Read/Witer object error
at nc.bs.framework.comn.cli.JavaURLCommunicator.request(JavaURLCommunicator.java:73)
at nc.bs.framework.comn.cli.ClientProxyImpl.urlCall(ClientProxyImpl.java:184)
at nc.bs.framework.comn.cli.ClientProxyImpl.invoke(ClientProxyImpl.java:135)
……
Caused by: java.lang.ClassNotFoundException: NCClassLoader(Cache), Class not found:javax.ejb.EJBException
at nc.bs.framework.codesync.client.NCClassLoader.loadClass(NCClassLoader.java:60)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
这个错是说类没有找到,而javax.ejb.EJBException这个类是在j2ee.jar这个包中的,但这个包在“开发环境根目录/lib”下面是有的。
想请教一下,websphere是否还需要配置环境变量,如果需要可否指明配置的路径?
或者说我处理问题的思路是否正确,是否有其他出错的可能?
在websphere部署的项目需要引用jar包的话,我建议配置share lib,而不要直接把jar包放进web-info下的lib目录,share lib会配吗?这个就是指定你引用jar的路径,然后项目再去引用你这个share lib的名称,这样你的项目就能加载你引用的jar了。。
问题解决了,并不是之前认为的classpath的问题,而是部署的过程中出错了。
在部署的日志中发现了如下记录:
nc.bs.framework.exception.ComponentCreateException: Component: nc.itf.uap.pa.PreAlertEJB,Detail Message: remove temp ejb Object error …… Caused by: javax.ejb.EJBException: See nested exception; nested exception is: nc.bs.framework.exception.ComponentCreateException: Component: nc.itf.uap.pa.PreAlertEJB,Detail Message: component state is error, state: -2147483626 causes: populate component property: iPreAlertConfigService with reference: IPreAlertConfigService error: Container: uap,Component: IPreAlertConfigService,Detail Message: state: -2147483626 causes: The component can't get the Instantiator correctly ……
更改了有关IPreAlertConfigService的配置,部署后问题解决。