No operation was found with the name解决方法总结

CXF动态客户端总是提示No operation was found with the name {...},命名空间问题:
[url]http://pangsir.iteye.com/blog/1492508[/url]
当我们使用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相同即可。
[b]1.第一种方式为配置SIB和SEI的targetNamespace相同:[/b]
[b]SIB:[/b]
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;
}
}

[b]SEI:[/b]
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);

}

SIB和SEI的@WebService注解中的targetNamespace要相同,
SIB的@WebService的targetNamespace对应为SEI的targetNamespace。

动态客户端:
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]);
}
}

[b]2.第二种方式动态客户端直接通过QName调用WebService对应的操作,
这种方式针对SIB和SEI的targetNamespace不相同,同时不再同一个包:[/b]
[b]动态客户端:[/b]
package cxf.bootstrap;

import javax.xml.namespace.QName;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.service.model.BindingInfo;
import org.apache.cxf.service.model.BindingOperationInfo;
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 CxfDynamicClientOnJwsRtWebWithQname {
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);
//获取操作对应的Qname
QName operateQName = getOperateQName(client,"sum");
//如果Qname已知,可以通过如下方式,直接创建QName
// operateQName = new QName("http://service.jws/","login");
Object[] invokeResult = client.invoke(operateQName, 17,8);
log.info("=======sumResult:" + invokeResult[0]);


}
/**
* 针对SEI和SIB不在统一个包内的情况,先查找操作对应的Qname,
* client通过Qname调用对应操作
* @param client
* @param operation
* @return
*/
private static QName getOperateQName(Client client,String operation){
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;
}
}
}
log.info("Operation:"+operation+",namespaceURI:" + opName.getNamespaceURI());
return opName;
}
}

强烈建议使用第一种方式,符合规范。

相关推荐

cs188Inference in Bayes Nets(贝叶斯网络的推理)

cs188Inference in Bayes Nets贝叶斯网络的推理Question1(3 points):Bayes Net StructureQuestion2(1 points):Bayes Net ProbabilitiesQuestion 3(5 points):Join FactorsQuestion4(4 points):EliminateQuestion5(4 points):NormalizeQuestion 6(4 points):Variable EliminationQuesti

weixin_46582817的博客 1674

[报错]CXF动态客户端报错:No operation was found with the name

CXF动态客户端报错:No operation was found with the name

islizi的博客 3018

URScript介绍

优傲机器人(Universal Robots)是丹麦工业协作机器人制造商,2005年成立,2015年被泰瑞达收购。其自研编程语言URScript基于Python语法,专为机器人控制优化,支持运动指令、IO控制等功能,具有类Python的简洁语法和实时性特点。URScript提供丰富的API,支持变量赋值、条件判断、循环及函数定义等编程结构,参数按值传递。用户可通过该语言在Polyscope界面编写程序,实现自动化任务。目前优傲在全球20多个办事处为多国客户提供服务。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 603

org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name

前言:       在一个JavaWeb项目中,要接入WebService时,使用CXF。启动已经成功,接口也已经成功发布,但是在调用的时候报出如下异常: org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name {http://impl.webservice.barcode.****

小圣_fighting的博客 1万+

将运算放大器(运放)用作比较器

我们研究了一些经典的运算放大器电路。这些电路中运用了负反馈,因此通常就可以使运算放大器工作在线性区域内。 但是,也可以将运算放大器用作比较器,从而使其以非线性方式工作。由于其输入受到硬驱动,因此其输出电压会对电源轨产生猛烈的冲击。如下文所示,这可能并不总是一种好的设计方法。 变为非线性 在线性应用中,可以对运算放大器做如下理想假设:无限增益和带宽、零输出阻抗、无限输入阻抗,以及输入之间为零伏。也可以将运算放大器以非线性方式使用,但有一些地方要特别注意和处理。 一种常见的配置是仅使用开环运算放大器(无反馈),

ltqdxl的博客 3万+

避开这些坑!医疗影像数据增强的6个安全操作指南(附PyTorch代码)

本文详细介绍了医疗影像数据增强的六大安全准则,包括解剖结构守恒、密度值物理意义保留和病灶特征保护等关键原则,并提供了PyTorch实战代码。通过具体案例和参数建议,帮助开发者在肺结节检测和MRI分割等医疗AI应用中实现安全有效的数据增强,避免因不当操作导致的诊断误差。

cola5的博客 555

springboot2.1.3集成webservice及错误No operation was found with the name {...}解决办法

1.项目使用springboot 2.1.3版本,集成webservice使用的依赖如下 1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-parent</...

weixin_30827565的博客 923

Anomalib实战:从零开始构建自定义数据集的异常检测模型

本文详细介绍了如何使用Anomalib 2.1.0从零开始构建自定义数据集的异常检测模型。通过实战演示,指导读者准备符合规范的数据集结构,快速上手训练Patchcore等先进算法,并完成模型推理与调优,为工业质检、医疗影像等场景提供高效的视觉异常检测解决方案。

weixin_29165465的博客 109

org.apache.cxf.common.i18n.UncheckedException: No operation was found with

调用CXF编写的webservice时出现异常: org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name { } 经过google,发现是@webservice的注解中未添加targetNamespace属性造成的。 修改方法就是增加该属性,至于值为多少,可以查询该webser...

bsr1983的专栏 1257

超频玩家必看:TestMem5配置文件详解与内存稳定性测试实战(含黄金参数包)

本文详细解析了TestMem5(TM5)在内存超频稳定性测试中的核心价值与实战应用,特别针对DRAM颗粒特性提供黄金参数配置。通过anta777等专业配置的深度剖析,指导超频玩家精准定位内存故障,优化时序参数,实现性能与稳定性的完美平衡。涵盖从初级验证到极限压测的全流程方案,是硬件发烧友提升系统稳定性的必备指南。

weixin_29198045的博客 1813

Vue3 - 完美解决html2canvas截图不全问题,截图只截取当前可视区域导出图片不全,截屏导出的图片显示不全只有一部分或缺一块,vue3移动端H5网页项目使用html2canvas插件长截图!

vue3,html2canvas,移动端H5网页,截图不全,html2canvas长截图不全,保存长截图,页面滚动导致截图不全,网页下方截屏不到怎么办,底部一部分无法截屏到,保存的图片少了一大块,H5海报截图不完整,怎么截取滚动条下方的内容,截图图时图片不全,截图图片只有一半的问题,底部内容空白,截图空白问题的解决,截图不全怎么办,html2canvas.js网页截图功能(解决截图不全问题,移动端ios系统截图不完整,html2canvas截图太长又不能删减截取不到,使用HTML2Canvas在H5页面上实

🏆 前端领域优质创作者 1万+

org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name {

报错的原因是在client的调用过程中,client设置的namespace设置的与wsdl中显示的不同。造成找不到此方法,核对后重新调用,不在报错。http://server.cxf.webservice***为webservice中的namespace。System.out.println("返回数据:" + objects[0]);其中 getTodayWeatherDetail.为调用的webwervice的方法,//参数1 是targetNamespace的空间名,参数2 是方法名。

weixin_41228949的博客 555

工业预测性维护实战:振动分析+Transformer预警系统构建指南

摘要:本文聚焦工业设备预测性维护难题,提出基于振动分析与Transformer模型的全栈解决方案。通过低成本硬件选型(单传感器¥380)实现设备振动信号实时采集,利用边缘计算单元完成特征工程(RMS、峰度、峰值频率提取),并在云端部署Transformer时序模型进行异常预警。某风电龙头企业实践显示,系统将故障误报率从38%降至6%,维护成本降低58%,非计划停机时长减少87%。文中提供完整的边缘端特征提取代码、云端模型架构及实施流程,适配ISO 13373振动分析标准,为制造业设备健康管理提供可复用的工程

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 625

搭建和对接webservice服务

该问题表示webservice服务端的接口和接口的实现类不在同一个包下面,需要在@WebService中添加targetNamespace值。也就是这里的targetNamespace值就是实现类接口的包名倒序。

my博客 1853

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Cxf应用之客户端与服务端

之前写过类似的文章,但真正使用起来的时候,发现客户端的调用更倾向于使用动态代理的方式来完成。所以服务端的配置就要进行的修改。本文正是在此背景下产生的。 1. Maven &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;dependency&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;am

夫礼者的专栏 1033

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【技术贴】webservice cxf2 客户端动态调用报错No operation was found with the name

No operation was found with the name xxx 出错原因是因为发布服务的接口所在包路径和此接口实现类包路径不一致,比如你的服务接口可能放在了包com.x.interFace下,但是你的实现类却在com.x.interFace.impl包下,此时,发布的服务被客户端动态调用(JaxWsDynamicClientFactory)的时候,就会报错: ...

diyu8056的博客 1069

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CXF动态客户端No operation was found with the name问题

如果WebService发布时,接口和实现类指定的namespace不同。 那么使用CXF动态客户端调用时,会抛出No operation was found with the name的异常     JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(); Client client = f...

brittany2009的博客 1770

CXF异常:No operation was found with the name

No operation was found with the name

书山有路,学海无涯 1万+

CXF动态客户端总是提示No operation was found with the name {...},命名空间问题

由于之前用的是Xfire,发现有些不稳定,并且由于业务的不多接入扩大,所以今天考了同时在项目中放入CXF2.6.0,确实有些包冲突,目前调整的话,Xfire服务器端可以和CXF共用新版本的xmlschema.jar,但在客户端Xfire只能用xmlschema.jar的旧版本;同时需要加入neethi.jar包。 在经过列子测试中 接口类:com.service.ISaveLove.jav...

PangSir的专栏 1789

使用CXF动态客户端No operation was found with the name异常

为什么80%的码农都做不了架构师?>>> ...

weixin_33811961的博客 948

No operation was found with the name {http://impl.service.xq.com/}sayHi

org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name {http://impl.service.xq.com/}sayHi. at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:347) at org.apach

xu357100870的博客 3225

cxf调用WebService时出现No operation was found with the name {http://impl.server.test.com/}helloWorld

cxf调用WebService时出现No operation was found with the name {http://impl.server.test.com/}helloWorld错误。 下面提供2中解决方法 一种是在服务端指定命名空间,即在服务端接口的实现类添加targetNamespace = “http://server.test.com/”;注意这里是接口的倒序,而不是实现类...

lichuangcsdn的博客 3247

@webservice报错org.apache.cxf.common.i18n.UncheckedException: No operation was found with

今天根据别人写的博客,整合springboot+cxf的webservice,成功发布了wsdl,但在调用的时候报错org.apache.cxf.common.i18n.UncheckedException: No operation was found with; service 和serviceImpl 不在一个包中 解决办法1: 在service接口中添加targetNa...

qq_27088383的博客 1319

解决:No configuration found for the specified action

<br />今天首次使用Struts2,配置一切正常,使用常用tag也正常,但是在使用<s:form>标记时,发现控制台总是输出警告信息, <br /><br />警告信息内容如下: <br /><br />警告: No configuration found for the specified action: 'ShowMessage' in namespace: ''. Form action defaulting to 'action' attribute's literal value. <br /

一路前行…… 745
上一篇: Netty UDT网络通信示例
下一篇: Deadlock found when trying to get lock; try restarting transaction解决方式
Donald_Draper
博客等级 码龄14年 9粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值