您的位置:首页 > 编程语言 > Java开发

java调用CXF WebService接口的两种方式

2017-05-10 15:25 519 查看
通过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类,服务器端只要提供接口名和路径就可以方便的调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: