我现在遇到一个棘手的问题,我新建了一个WEBSERVICE服务,随便建个JAVA工程测试是好用的,但放在我们项目里就不行了,它总是默认加载一些SPRING的包,这样调用总是失败, 而且我们项目SPRING版本还低,能不能让CXF不加载SPRING?

解决方案 »

  1.   

    cxf完全绑死spring,如果项目不能换spring,只好去使用axis2了。或者你们重写cxf?让cxf不支持spring,估计你们没这个精力。最简单的解决方法,就是升级spring
      

  2.   

    你的spring哪个版本就下载相应的cxf的版本的jar包啊
      

  3.   

    spring升级不了,因为一升级别的组件就用不了了,可真郁闷
      

  4.   

    没办法了,只能修改一下源码,BusFactory
     public static BusFactory newInstance(String className) {
            BusFactory instance = null;
    //        if (className == null) {
    //            ClassLoader loader = Thread.currentThread().getContextClassLoader();
    //            className = getBusFactoryClass(loader);
    //            if (className == null && loader != BusFactory.class.getClassLoader()) {
    //                className = getBusFactoryClass(BusFactory.class.getClassLoader()); 
    //            }
    //        }
            if (className == null) {
                className = BusFactory.DEFAULT_BUS_FACTORY;
            }
            
            Class<? extends BusFactory> busFactoryClass;
            try {
                busFactoryClass = 
                    ClassLoaderUtils.loadClass(className, BusFactory.class).asSubclass(BusFactory.class);
                instance = busFactoryClass.newInstance();
            } catch (Exception ex) {
                LogUtils.log(LOG, Level.SEVERE, "BUS_FACTORY_INSTANTIATION_EXC", ex);
                throw new RuntimeException(ex);
            }
            return instance;
        }