使用websphere生成webservice接口,在spring配置文件中引用了生成proxy类,junit初始化spring报错分析
使用ibm WID生成webservice 代理类,使用junit测试的时候,初始化spring出错的问题
outerspsconf.xml 中配置了 webservice生成的代理类
在测试类中执行getConfigLocations()方法的时候就会出错,
解决方法:
1.在WID的安装目录下面路径:IBM\WebSphere\ID\602\runtimes\bi_v6\runtimes 拷贝文件ibm-jaxrpc-client.jar到
安装目录下面的D:\Program Files\IBM\WebSphere\ID\602\eclipse\jre\lib\ext文件夹内。
2.打开属性,如下图操作,双击选中框的位置
3.双击后弹出下图,然后先取消勾选,然后重新勾选一下就ok了。
出现上面的那个jar包就ok了,下面替换一下,引入的类库。在工程目录上右键—》属性
先删掉这个库,然后点击Add Libray….
为什么不直接拷贝jar包到工程lib目录,主要是打包的时候,会把lib目录下的jar包都打进去。放在jre路径下,打包的时候不会打进去,就不会和应用服务器webspere冲突。
(之前我把ibm-jaxrpc-client.jar文件放在WPS Server v6.0 JRE下面了,在wid直接部署工程到websphere上启动运行的时候出错了 )
错误原因:初始化spring配置文件中webservice代理类的时候,会调用下图的方法
需要ibm-jaxrpc-client.jar中的类才能执行,由于这个jar包在websphere运行环境下才有,所以junit测试的时候会出错,空指针异常。
只需要按照上面的方法添加,就能引用到程序中,生成对应的webservice类。
错误信息
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'finishServiceWs' defined in file [F:\workspace1\OSSWeb\test\outerspsconf.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.FatalBeanException: Could not instantiate class [com.cthq.crm.common.webservice.service.FinishServiceWsProxy]; constructor threw exception; nested exception is java.lang.NullPointerException: null
org.springframework.beans.FatalBeanException: Could not instantiate class [com.cthq.crm.common.webservice.service.FinishServiceWsProxy]; constructor threw exception; nested exception is java.lang.NullPointerException: null
java.lang.NullPointerException
at org.apache.commons.discovery.resource.ClassLoaders.getLibLoaders(ClassLoaders.java:175)