在做webserver的时候,一开始使用CXF3.2生产的client端,怎奈客户系统技术有点久远,还在使用XFire1.2。百度了之后才知道XFire1.2之后就更名了CXF2.0了。本地生成了XFire client端,但是却产生了
java.lang.IllegalStateException: Could not initialize Service.
报错的代码是这行:
DCPProjSendToNcWebservice_Service server = new DCPProjSendToNcWebservice_Service();
无法实例化DCPProjSendToNcWebservice_Service类。
解决:
xfire-all-1.2.6.jar里META-INF/services 目录下的javax.xml.ws.spi.Provider的值如下:
org.codehaus.xfire.jaxws.Provider
改成
com.sun.xml.internal.ws.spi.ProviderImpl
即可。
原因:
因为Provider这个类,在JDK1.6和XFire1.2中都存在,而的导致的架包冲突。
另外,因为楼主使用的是resin服务器,在resin.conf还需要新增配置信息:
<system-property javax.xml.stream.XMLInputFactory="com.sun.xml.internal.stream.XMLInputFactoryImpl" />
这个问题,在老大的帮助下顺利解决了,很开心。记录一下
同时也深感被技术栈绑定的企业危机。