使用jaxws:server 还是使用jaxws:endpoint发布webservice

今天在学习使用spring+cxf发布webservice时遇到个问题,我原来是用

<jaxws:endpoint id="helloWorld"         implementor="org.andy.cxf.HelloWorldImpl"
    address="/HelloWorld" />

来发布的,但是有个问题,是方法发布不上去,调用的时候会报错,原因是我的两个文件不在同一级目录下
这里写图片描述
将impl移到上面来就可以了
这里写图片描述
但是这样做的话不够规范,为什么要这样做我也不明白,所以我换了一种发布的方法-jaxws:server,换了之后按照图一的写法可以正确的发布webservice,现在把代码贴出来

    <!--    这是实现类 -->
    <bean id="HelloWorldImpl"    class="org.andy.cxf.impl.HelloWorldImpl" />
    <!-- org.andy.cxf.HelloWorld 是接口的路径-->
    <jaxws:server serviceClass="org.andy.cxf.HelloWorld"
        address="/HelloWorld">
        <jaxws:serviceBean>
            <ref bean="HelloWorldImpl" />
        </jaxws:serviceBean>
    </jaxws:server>

最后把客户端调用的方法贴出来,这种方式可以不依赖服务端的类

 JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
        Client client = (Client) clientFactory.createClient("http://localhost:8080/springmvc_hibernate_demo/webservice/HelloWorld?wsdl");
        // invoke 第一个参数为要调用的webservices的方法,后面参数为方法入参(对应方法的参数)
        Object[] result = client.invoke("sayHello");
        System.out.println(result[0]);

至于为什么使用jaxws:endpoint发布必须要两个文件在同意目录下请高手解答!
这是我的代码实例

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值