webservice客户端

最近公司的项目需要调用其它公司给的接口,采用的是webservice,所以我们需要写webservice客户端来请求他们的服务端。但是在测试的时候总是报错,搞得我很是头疼。经过一下午的折腾,看了很多博客,自己终于测试好了。现在来给大家看看(我用的是CXF)

因为公司的其他同事写过webservice服务端的接口,所以看了一下他们的代码。我发现他们把CXF的lib目录下的jar包全部都放项目的lib目录下了,难道说我写个客户端也需要将所有jar包都导进来吗?这显然是有些多余。下面来看我Maven中添加的jar包:

               <dependency>
		    <groupId>org.apache.cxf</groupId>
		     <artifactId>cxf-core</artifactId>
		    <version>3.1.11</version>
		</dependency>
		<dependency>
	    <groupId>org.apache.cxf</groupId>
	    	<artifactId>cxf-rt-frontend-jaxws</artifactId>
	    	<version>3.1.11</version>
		</dependency>
		<dependency>
	    <groupId>org.apache.cxf</groupId>
	    	<artifactId>cxf-rt-transports-http</artifactId>
	    	<version>3.1.11</version>
		</dependency>
		<dependency>
		    <groupId>com.sun.xml.bind</groupId>
		    <artifactId>jaxb-xjc</artifactId>
		    <version>2.2.11</version>
		</dependency>

我的客户端请求代码:

                        //返回的对象数组
			Object[] objects;
			//请求接口信息(需要接口的发布地址)
			JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();  
			Client client =
				dcf.createClient(
					"http://localhost:8080/xxxx/webservice/xxxx?wsdl"
				);
			objects = client.invoke(对应接口的方法名,方法需要的参数);

原以为这样就ok了,但是真正的问题才出现。发出请求的时候总是报一些奇奇怪怪的问题。主要就俩:1、java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC ;2、No compiler detected make sure you are running on top of a JDK instead of a JRE;看了网上的博客,这一顿改。将Eclipse引用的jre改为了jdk

jdk的lib目录下有tools.jar,复制了一份到jre的lib下,等等一系列操作,可还是报错。。。

最终,将tomcat用的jre换成了jdk(jdk的lib目录下有tools这个jar包),问题解决

因为jdk的lib目录下是有tools这个jar包的,或者tomcat还是用jre,将tools这个jar包复制到jre的lib目录下的ext目录(或者直接放到lib目录下。因为现在没在公司,没法测试。我记得当时应该是放在了ext目录下,大家到时候可以俩种情况都试一下)

 

第一次写博客,写的不好的或者有什么错误的,大家及时给我留言,我也及时改正。希望大家多多交流,相互学习!

个人建的交流群1125844267,欢迎大家加入!

如果内容对大家有所帮助,感谢鼓励!实现我小时候一人给我一块钱的美梦,哈哈!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Happy-Sir

有收获请打赏,哈哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值