zoukankan      html  css  js  c++  java
  • java调用CXF WebService接口的两种方式

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了。

    2.静态调用

            // 创建WebService客户端代理工厂
            JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
            // 判断是否抛出异常
            factory.getOutInterceptors().add(new LoggingInInterceptor());
            // 注册webservice接口
            factory.setServiceClass(DeductionService.class);
            // 配置webservice地址
            factory.setAddress("http://localhost:7002/card/services/HelloWorld?wsdl");
            // 获得接口对象
            CxfService service = (CxfService) factory.create();
            // 调用接口方法
            String result = service.sayHello("aaaaaaaaaa");
            System.out.println("调用结果:" + result);
            // 关闭接口连接
            System.exit(0);

    3.动态调用:

    JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
            org.apache.cxf.endpoint.Client client = dcf
                    .createClient("http://localhost:7002/card/services/HelloWorld?wsdl");
            // url为调用webService的wsdl地址
            QName name = new QName("http://dao.xcf.digitalchina.com/", "sayHello");
            // namespace是命名空间,methodName是方法名
            String xmlStr = "aaaaaaaa";
            // paramvalue为参数值
            Object[] objects;
            try {
                objects = client.invoke(name, xmlStr);
                System.out.println(objects[0].toString());
            } catch (Exception e) {
                e.printStackTrace();
            }

    区别:静态调用需要依赖service类,因为客户端调用cxf webservice接口的过程中需要服务器端提供service,很不方便,如果同一个项目中则没有区别。

            动态调用完全不依赖service类,服务器端只要提供接口名和路径就可以方便的调用。

  • 相关阅读:
    [Codeup 25482]选美
    [Codeup 25481] swan
    暑假集训D12总结
    [技术]浅谈重载操作符
    2020年寒假第6次学*进度记录
    2020年寒假第5次学*进度记录
    2020年寒假第4次学*进度记录
    “家庭记账本”软件开发(1)
    阅读《梦断代码》随笔(1)
    2020年寒假第三次学*进度记录
  • 原文地址:https://www.cnblogs.com/lucky-girl/p/4218936.html
Copyright © 2011-2022 走看看