微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CXFf客户端依赖服务器和不依赖服务器的两种实现方式

package com.ws.cxf.client;
import org.apache.cxf.jaxws.JaxWsProxyfactorybean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicclientFactory;
public class Client {
    public static void main(String[] args) {
                       
          //**********依赖服务器端*****************
           /*
            * //创建WebService客户端代理工厂
            JaxWsProxyfactorybean factory = new JaxWsProxyfactorybean();
            // 注册WebService接口
            factory.setServiceClass(IHelloWorld.class);
            // 设置WebService地址
            factory.setAddress("http://localhost:8080/cxfTest/webservice/HelloWorld");
            IHelloWorld iHelloWorld = (IHelloWorld) factory.create();
            System.out.println(iHelloWorld.sayHello("jim"));
            */
                       
         //**********不依赖服务器端*****************
        JaxWsDynamicclientFactory clientFactory = JaxWsDynamicclientFactory.newInstance();
        org.apache.cxf.endpoint.Client client = clientFactory.createClient("http://localhost:8080/cxfTest/webservice/HelloWorld?wsdl");
        try {
            Object[] result = client.invoke("sayHello","jim");//invoke(方法名,参数)
            System.out.println(result[0]);
            System.exit(0);
        } catch (Exception e) {
            e.printstacktrace();
        }
                       
    }
}

注意:

当不依赖服务器端时,接口的实现类必须在@WebService中加上表空间,否则会报异常:

org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name {http://daoImpl.cxf.ws.com/}sayHello.
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:331)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:325)
at com.ws.cxf.client.Client.main(Client.java:25)

接口实现如下

package com.ws.cxf.daoImpl;
import javax.jws.WebService;
import com.ws.cxf.dao.IHelloWorld;
@WebService(endpointInterface="com.ws.cxf.dao.IHelloWorld",serviceName="helloWorld",targetNamespace="http://dao.cxf.ws.com/")
public class HelloWorldImpl implements IHelloWorld{
    public String sayHello(String username) {
        System.out.println("sayHello() is called");
        return username +" helloWorld";
    }
}
  1. targetNamespace="http://dao.cxf.ws.com/"名称空间,

  2. 指定从 Web Service 生成的 WSDL 和 XML 元素的 XML 名称空间。

  3. 缺省值为从包含该 Web Service 的包名映射的名称空间。(字符串)

原文地址:https://www.jb51.cc/javaschema/285599.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐