当我们使用CXF动态客户端调用WebService接口容易出现如下问题:命名空间问题

Exception in thread "main" org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name {http://impl.service.jws/}sum.
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:289)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:283)
at cxf.bootstrap.CxfDynamicClientOnJwsRtWeb.main(CxfDynamicClientOnJwsRtWeb.java:36)

这个问题是由这个问题因为SIB和SEI类的targetNamespace统一导致的。

解决办法:

SIB的targetNamespace的命名空间为SEI对应的命名空间targetNamespace相同即可。

SEI (interface接口类):

package jws.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService; import entity.User;
/**
* service endpoint interface(SEI)
* RPC接口
* 如果返回结果时实例类,则targetNamespace必须用http://service.jws/,即http://+SEI倒序报名+/
* 没有的话可以,targetNamespace可任意指定http://www.donald.service/jws_service/
* @author donald
* 2017年7月7日
* 下午5:11:53
*/
@WebService(
targetNamespace = "http://service.jws/"
// targetNamespace = "http://www.donald.service/jws_service/"
)
public interface JwsIService {
//@WebMethod注解可写可不写
// @WebMethod
@WebResult(name="sumResult")
public int sum(@WebParam(name="firstNum")int firstNum,
@WebParam(name="secondNum")int secondNum); }

SBI (implements接口实现类):

package jws.service.impl;

import javax.jws.WebService;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import entity.User;
import jws.service.JwsIService;
/**
* Service implementation Bean(SIB)
* RPC接口实现
* 注意这里的targetNamespace的命名空间为SEI对应的命名空间,注意最后要加/
* 否则利用CXF动态客户端调用时,会找不到
* Exception in thread "main" org.apache.cxf.common.i18n.UncheckedException:
* No operation was found with the name {http://impl.service.jws/}sum.
* @author donald
* 2017年7月7日
* 下午5:11:49
*/
@WebService(endpointInterface="jws.service.JwsIService",
serviceName = "jwsService",
portName = "jwsPort",
targetNamespace = "http://service.jws/"
// targetNamespace = "http://www.donald.service/jws_service/"
)
public class JwsServiceImpl implements JwsIService {
private static final Logger log = LoggerFactory.getLogger(JwsServiceImpl.class);
@Override
public int sum(int firstNum, int secondNum) {
int result = firstNum+secondNum;
log.info("======"+firstNum+"+"+secondNum+"="+result);
return result;
}
}

动态客户端:

package cxf.bootstrap;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import jws.service.User;
import util.JsonUtil; /**
* CXF 动态代理模式,不用生成本地WS代理类,
* 通过反射调用 WS 的对应的方法,传入相应的参数
* 访问cxf-server-web项目下的webservice;
* 测试jaxws-rt发布WebService web方式。
* 此测试实例,用于测试SEI和SIB的targetNamespace指定的webService接口:
* http://localhost:8080/cxf_server_web/jws_services?wsdl;
* @author donald
* 2017年7月8日
* 下午7:24:12
*/
public class CxfDynamicClientOnJwsRtWeb {
private static final Logger log = LoggerFactory.getLogger(CxfClient.class);
private static final String JWS_RT_WSDL_URI = "http://localhost:8080/cxf_server_web/jws_services?wsdl";
public static void main(String[] args) throws Exception {
log.info("======CXF-WS Dynamic Client start!======");
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient(JWS_RT_WSDL_URI);
HTTPConduit conduit = (HTTPConduit)client.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(10000);
policy.setAllowChunking(false);
policy.setReceiveTimeout(10000);
conduit.setClient(policy);
Object[] invokeResult = client.invoke("sum", 17,8);
log.info("=======sumResult:" + invokeResult[0]);
}
}

文章转载至:https://blog.csdn.net/Donald_Draper/article/details/88307382

XML:No operation was found with the name报错解决办法的更多相关文章

  1. maven pox.xml文件报错解决办法 亲测可以

    问题1 由于maven下载依赖包失败导致一些文件没完全下载下来,形成了lastUpdated结尾的文件存放在本地仓库中(我是默认地址:C:\Users\Administrator\.m2\reposi ...

  2. 打开struts-config.xml 报错 解决方法Could not open the editor

    打开struts-config.xml 报错 解决办法Could not open the editor 错误信息:Could not open the editor: Project XXX is ...

  3. eclipse创建的maven项目,pom.xml文件报错解决方法

    [错误一:]maven 编译级别过低 [解决办法:] 使用 maven-compiler-plugin 将 maven 编译级别改为 jdk1.6 以上: <!-- java编译插件 --> ...

  4. 导入Maven 工程pom.xml首行报错解决方法

    1.利用IDE导入一个Maven工程,但是pom.xml文件首行报错,发现是maven版本需要升级 2.在pom.xml文件 增加配置 <properties> <maven-jar ...

  5. Maven package 报错解决记录以及编译scala的pom.xml

    可以打包的pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...

  6. AndroidStudio下使用 RecyclerView xml文件不显示预览条目并报错类似:NoClassDefFoundError 问题解决

    在项目中使用RecyclerView是很普遍的,最近工作中遇到了这种情况: RecyclerView可以正常使用 不会报错 但是在layout中的xml文件中不显示并且报错,如下图:(报的错忘了截了, ...

  7. web.xml配置文件中async-supported报错解决

    项目中配置spring时async-supported报错: 是因为<async-supported>true</async-supported>是web.xml 3.0的新特 ...

  8. spingboot2.0外部引入xml配置文件时找不到文件等报错

    之前的项目可以启动,后面不知道为什么都不行了,报错如下: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found bindin ...

  9. web.xml is missing and <failOnMissingWebXml> is set to true 错误解决办法

    对web项目的解决方案: 右击项目——>Java EE Tools——>Generate Deployment Descriptor Stub. 然后系统会在src/main/webapp ...

随机推荐

  1. Maven知识点一览

    Maven 介绍和搭建 介绍 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告,和文档的软件项目管理工具. 环境搭建 网址:https://maven.apache ...

  2. Linux进阶之磁盘管理及LVM逻辑卷

    本节内容 磁盘管理 LVM 一.磁盘管理 1.硬盘接口 种类及其应用: IDE接口硬盘多用于家用产品,部分应用于服务器 SATA SCSI接口硬盘主要应用于服务器 SAS只在高端服务器上,价格昂贵 2 ...

  3. STM32F4-IAP学习笔记--(转)

    花了断断续续两天时间在STM32上面写了一个IAP(In Application Programing)Boot,期间多多少少还是遇到的了不少问题.现在就花点时间把这两天写的东西整理一下,就当是学习笔 ...

  4. Lua中的元表(metatable)、元方法(metamethod)详解

    在第一次看见这两样东西的时候,可能会觉得它很深奥,但其实很好理解,虽然实际上它可能真的很深奥.(小若:停!滚粗.) 1.知道为什么1 + 1 = 2吗? 为什么在Lua中,1+1会等于2呢?(小若:难 ...

  5. Boostrap bootstrap-table插件使用教程

    bootstrap table 简介及特性 简介 Bootstrap table 是国人开发的一款基于 Bootstrap 的 jQuery 表格插件,通过简单的设置,就可以拥有强大的单选.多选.排序 ...

  6. teprunner测试平台定时任务这次终于稳了

    teprunner测试平台已经有一个多月没有更新了,主要原因是定时任务不够稳定,经过反复试错,找到了解决办法,这次终于稳定了. 本文开发内容 作为测试平台而言,定时任务算是必备要素了,只有跑起来的自动 ...

  7. TensorFlow多元线性回归实现

    多元线性回归的具体实现 导入需要的所有软件包:   因为各特征的数据范围不同,需要归一化特征数据.为此定义一个归一化函数.另外,这里添加一个额外的固定输入值将权重和偏置结合起来.为此定义函数 appe ...

  8. 神经网络AI加速器技术

    神经网络AI加速器技术 能够直接加速卷积神经网络,还能够直接运行常见的网络框架,如TensorFlow.Caffe.PyTorch,DarkNet等,支持用户定制化的网络和计算类型. 功能特点: ● ...

  9. 基于C语言文件操作的学生成绩管理系统

    原理 在一个班级学生成绩管理系统中,希望处理每个学生的学习情况信息,其中包括学生的学号.姓名.各科名称和成绩等并能使管理人员通过界面完成对学生信息的录入及对学生信息的录入及对数据的查找.浏览.插入.排 ...

  10. 视频质量评估学习Note

    术语"编解码器 Coder/Decoder"是压缩器/解压缩器或编码器/解码器一词的缩写.顾名思义,编码可使视频文件变小以进行存储,然后在需要再次使用时将压缩后的数据转换成可用的图 ...