如果WebService发布时,接口和实现类指定的namespace不同。
那么使用CXF动态客户端调用时,会抛出No operation was found with the name的异常
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(); Client client = factory.createClient(wsdl); Object[] res = client.invoke(operation, realParams);
用下面的方法临时处理一下吧:
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(); Client client = factory.createClient(wsdl); // 下面一段处理 WebService接口和实现类namespace不同的情况 // CXF动态客户端在处理此问题时,会报No operation was found with the name的异常 Endpoint endpoint = client.getEndpoint(); QName opName = new QName(endpoint.getService().getName().getNamespaceURI(), operation); BindingInfo bindingInfo = endpoint.getEndpointInfo().getBinding(); if (bindingInfo.getOperation(opName) == null) { for (BindingOperationInfo operationInfo : bindingInfo.getOperations()) { if (operation.equals(operationInfo.getName().getLocalPart())) { opName = operationInfo.getName(); break; } } } Object[] res = client.invoke(opName, realParams);
或者如果知道确切的namespaceURL
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(); client = factory.createClient("服务发布地址......?wsdl"); // 记得要加入"?wsdl" QName opName = new QName("http://service.com/", "saveLove"); // 指定到接口类所在包 Object[] res = client.invoke(opName, "猪打天下"); System.out.println("Say: " + res[0]);
重点:CXF发布用的是业务类(SaveLoveImpl.java),那么默认的命名空间就会是业务类所在包(路径),而对外界暴露的则是接口类(ISaveLove.java),那么对于客户端(第三方)调用访问时,需要按照接口类所在包(路径)进行命名空间的定义,仅此而已。
相关推荐
使用CXF生成动态调用webservice接口的客户端,也比较简单。
cxf客户端调用axis服务端流程
cxf生成客户端 服务端代码
cxf在创建客户端出现编码GBK-不可映射字符的编码问题解决的jar
CXF 客户端最少jar包支持,CXF 客户端最少jar包支持,CXF 客户端最少jar包支持,
用CXF作为客户端调用webService的demo:本人亲测可用,eclipse工程项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。
CXF webservice 动态地址客户端相关代码和jar包 CXF webservice 动态地址客户端相关代码和jar包
1.使用Java 2.用cxf开发webservice ...客户端也需要接口类文件和pojo,和cxf客户端xml 但是没有接口的实现类,就是为了去服务端来调用的。 具体有不懂可以问我 给我发消息, 劳烦评价 ,请大家支持原创 禁止转载
cxf 开发webservice客户端 代码经过测试
webservice客户端,框架为CXF,生成客户端的方式为自动(myeclipse生成)
cxf客户端出现GBK编码问题解决cxf客户端出现GBK编码问题解决jar.rar
cxf生成webservice客户端代码
webservice的cxf框架客户端调用所需jar包,不要删除里面的jar包,直接放在lib下。亲测可用。
CXF客户端生成器,可以直接进入bin目下,运行wsdl2java
费了我两天的劲才把需要最少的jar包给搞明白了,共享出来需要的可以试试!
CXF客户端调用例子,本例子开发语言为JAVA,包内包含服务端跟客户端
WebService开发客户端 cxf方式
springboot整合CXF发布webservice和客户端调用 项目中每个类都有详细的注释,保证都能看懂,不失为一个学习springboot整合cxf来学习webservice发布调用的好例子
NULL 博文链接:https://reymont.iteye.com/blog/1511176
cxf3.0.2 客户端所需jar包,支持jdk1.7,1.6请自行寻找