cxf JaxWsProxyFactoryBean的问题

xuzhou2013 发布于 2014/05/28 20:58
阅读 5K+
收藏 0

项目使用的是spring+cxf

之前 服务器上 发布了一个 webservice 

http://localhost:8080/service/IUserService?wsdl

访问都正常

客户端使用java测试: 也正常

<jaxws:client id="userServiceClient"  
        serviceClass="main.java.com.oreilly.zhou.webservice.demo_annotation.IUserService"  
        address="http:/localhost:8080/service/IUserService" /> 



加载中
0
xuzhou2013
xuzhou2013

大家也许注意到 客户端调用的时候, address="http:/localhost:8080/service/IUserService" /> 

这里是固定的, 但是在实际的项目中,也许会变化的.

所以, 我想把webservice的地址, 放在配置文件里面.

或者放在java的常量中.

这样一来, 需要修改一下webservice的接口获得方法

        <bean id="userServiceClientFactoryBean"  class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
              <property name="serviceClass" value="main.java.com.oreilly.zhou.webservice.demo_annotation.IUserService" />
              <property name="address" value="/IUserService" />
        </bean>  
        
        <bean id="userServiceClient" class="main.java.com.oreilly.zhou.webservice.demo_annotation.IUserService" 
              factory-bean="userServiceClientFactoryBean" factory-method="create"/>

这个也正常...

0
xuzhou2013
xuzhou2013

因为需要 添加HTTP://10.112.232/service等前缀

修改如下:

public class BaseWebServiceJaxWsProxyFactoryBean extends JaxWsProxyFactoryBean {

private static Logger logger=Logger.getLogger(BaseWebServiceJaxWsProxyFactoryBean.class);



/**
* 调用远程服务器的 一个服务对象, 返回这个对象
*/
public synchronized Object create() {

//添加前缀 http://10.10.2222
String wsAddress=CommonConstant.REMOTE_SERVER_ADDR+super.getAddress();
super.setAddress(wsAddress);

logger.info("[ create object of remote webservice : "+wsAddress+" ]");

return super.create();
}


    
}

0
xuzhou2013
xuzhou2013
        <bean id="userServiceClientFactoryBean"  class="main.java.base.ws.BaseWebServiceJaxWsProxyFactoryBean">
              <property name="serviceClass" value="main.java.com.oreilly.zhou.webservice.demo_annotation.IUserService" />
              <property name="address" value="/IUserService" />
        </bean>  
        
        <bean id="userServiceClient" class="main.java.com.oreilly.zhou.webservice.demo_annotation.IUserService" 

              factory-bean="userServiceClientFactoryBean" factory-method="create"/>


这个就不行,spring启动的时候,报错了

Error creating bean with name 'userServiceClientFactoryBean',,,Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError


请高手帮忙!!!!


返回顶部
顶部