解决cxf2.2.3客户端动态调用与jdk1.7不兼容问题

由于cxf2.2.3客户端动态调用不支持jdk1.7,在客户端调用时始终报错“javac:目标类1.5与源运行类1.7不兼容“问题,因为生产环境是jdk1.7,不得不升级cxf为2.7.18

1.修改maven pom,如下:

<!-- webservice -->
		<dependency>
        	<groupId>org.apache.cxf</groupId>
        	<artifactId>apache-cxf</artifactId>
        	<version>2.7.18</version>
        	<exclusions>  
			  <exclusion>  
			     <groupId>org.springframework</groupId>  
			     <artifactId>spring-asm</artifactId>  
			  </exclusion>  
			</exclusions>    
        	<type>pom</type>
		</dependency>

因为2.7.18会自动下载spring-asm3.02 jar包,与我环境的spring4.0.2冲突,故添加exclusions来限制自动下载此依赖。

2.修改web.xml,经测试,2.7.18只能使用context-param来加载webservice的spring配置文件ws.xml,如果使用与2.2.3类似放在init-param里是不行的(参照2.2.3),会报找不到cxf这个bean的错误,由于context-param <param-name> 重名的只能在web.xml里配置一个(<param-name>不同命的可以有多个),所以以逗号分隔追加,修改如下:

 <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/mofeni_ts-context.xml,/WEB-INF/ws.xml</param-value>
    </context-param>

3.修改项目的jdk为1.7,重新编译,部署,启动tomcat成功

4.最后附上动态调用的客户端代码,不依赖服务端的api

//不用通过wsdl生成类来调用ws,采用发送soap包的方式,动态调用,很方便
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

public class Test2 {
	public static void main(String[] args) {
		String xmlInput = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><operateType>query</operateType><dbType>sqlserver</dbType><orderBy></orderBy><userId>1</userId>              <start>0</start><limit>20</limit><processName></processName></request>";
		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		String wsUrl = "http://localhost:8081/services_manager/ws/newService?wsdl";
		String method = "runMethod";
		Client client = dcf.createClient(wsUrl);
		Object[] res = null;
		try {
			res = client.invoke(method, "560A48A7D9A41BAF80EDF6F9C6A6AF58");
			System.out.println(res[0]);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.exit(0);
	}
}

5.运行Test2后结果如下:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值