java程序调用xfire发布的webService服务

来源:互联网 发布:js object属性 编辑:程序博客网 时间:2024/05/16 14:38
昨天用xfire搭好了一个简单的webService的服务,可以在浏览器访问,今天便想要尝试以下如何调用这个服务及相关的方法。在网上查找了一些资料后,实现过程如下。

1、创建一个maven web项目,并创建一个带有main方法的类。

2、导入xfire依赖的一些jar包,为了简单起见,我就把搭建服务端时的jar包都考了过来,放在lib文件夹下,然后如上一篇搭建时一样把jar加入到build path中。
 
              

3、创建一个和服务端一样的接口类,必须要有这个接口类才可以:
package test;public interface HelloService {    public String Hello();}

4、在main方法中调用服务接口:
package test;import org.codehaus.xfire.XFireFactory;import org.codehaus.xfire.client.XFireProxyFactory;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.service.binding.ObjectServiceFactory;public class CallWebServiceTest {    public static void main(String[] args) {        Service srModel = new ObjectServiceFactory().create(HelloService.class);        XFireProxyFactory factory = new XFireProxyFactory(XFireFactory                .newInstance().getXFire());// 创建工厂实例        String helloURL = "http://localhost:8082/xfireTest/services/HelloWorld";        try {            HelloService service = (HelloService) factory.create(srModel,                    helloURL);            System.out.println("service:" + service.Hello());        } catch (Exception e) {            throw new RuntimeException(e);        }    }}


5、启动服务端,然后启动main方法。按正常情况下,因为服务中所写的Hello方法返回的是“Hello”字符串,因此这里在控制台应该打印出“service:Hello”。而实际上我启动main方法时控制台报错,如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/methods/RequestEntity    at java.lang.Class.getDeclaredConstructors0(Native Method)    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)    at java.lang.Class.getConstructor0(Unknown Source)    at java.lang.Class.getConstructor(Unknown Source)    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:108)    at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)    at org.codehaus.xfire.client.Client.invoke(Client.java:336)    at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)    at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)    at com.sun.proxy.$Proxy0.Hello(Unknown Source)    at test.CallWebServiceTest.main(CallWebServiceTest.java:19)Caused by: java.lang.ClassNotFoundException: org.apache.commons.httpclient.methods.RequestEntity    at java.net.URLClassLoader$1.run(Unknown Source)    at java.net.URLClassLoader$1.run(Unknown Source)    at java.security.AccessController.doPrivileged(Native Method)    at java.net.URLClassLoader.findClass(Unknown Source)    at java.lang.ClassLoader.loadClass(Unknown Source)    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)    at java.lang.ClassLoader.loadClass(Unknown Source)    ... 15 more

这意思好像是说httpclient有什么问题,在网上查了一下,有说是少了这个包,但实际上可以看到这个包我明明是导入了的,于是我尝试把lib中和build path中的这个包删除,然后再使用maven导入,如图:
<dependency>        <groupId>commons-httpclient</groupId>        <artifactId>commons-httpclient</artifactId>        <version>3.1</version></dependency>


然后再次启动main方法,控制台正常输出,如图:


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 c语言挂科了怎么办 吸入腐蚀性气体鼻子流血了怎么办 腰劳损痛的厉害怎么办 两个宝宝斜颈左边力量差怎么办 姿势不正确引起的习惯性斜颈怎么办 一岁宝宝有点斜颈怎么办 六个月宝宝有点斜颈怎么办 5月宝宝有点斜颈怎么办 半岁宝宝头偏怎么办 肌性斜颈成年后怎么办 5个月孩子脖子歪怎么办 宝宝一岁多头歪怎么办 四个月宝宝歪脖子怎么办 1岁宝宝脖子歪怎么办 宝宝脖子是歪的怎么办 小孩脖子睡歪了怎么办 脸部三角区肿了怎么办 面部三角区挤了怎么办 胳膊扭着了肿了怎么办 多囊卵巢综合症治不好怎么办 胳膊受了风发麻怎么办 胳膊抻筋了很疼怎么办 腰抻了怎么办最有效 孩子胳膊抻着了怎么办 胳膊伤筋了疼怎么办 宝宝胳膊抻了疼怎么办 练完普拉提头晕怎么办 生完孩子腰背疼怎么办 宝宝不肯把屎尿怎么办 存的电话删除了怎么办 脚踝的韧带断了怎么办 买了双鞋子想退怎么办 鞋子大了一码怎么办 nba篮球大师身体素质满了怎么办 钉鞋大了一码怎么办 篮球鞋鞋垫会向里面跑怎么办 穿高跟鞋脚肿了怎么办 衣服弄到单车油怎么办 高低床孩子摔下来怎么办 量血压时老紧张怎么办 牛仔外套的扣子掉了怎么办