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/”;注意这里是接口的倒序,而不是实现类的倒序

另外一种方法是在客户端指定命名空间(我这里用的是JaxWsDynamicClientFactory方式)

QName opName = new QName("http://server.test.com/", "checkValueRange");
Object[] result = client.invoke("opName , 1,2);

不管是那种方式都不要忘记地址最后面的一个斜杠

 

### Apache CXF 动态客户端调用 WebService 示例 Apache CXF 提供了一种简单的方式来创建动态客户端调用 Web 服务。以下是通过 Apache CXF 创建动态客户端调用 `http://www.webxml.com.cn/WebServices/WeatherWebService.asmx` 的方法。 #### 使用 Apache CXF 动态客户端的实现方式 要使用 Apache CXF 动态客户端调用 Web 服务,可以按照以下方式进行操作: 1. **引入依赖项** 需要在项目中添加 Apache CXF 的相关依赖库。如果使用 Maven 构建工具,则可以在项目的 `pom.xml` 文件中加入如下依赖配置[^4]: ```xml <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.4.7</version> </dependency> ``` 2. **编写 Java 实现代码** 下面是一个完整的示例程序,展示如何利用 Apache CXF 动态客户端调用 WeatherWebService: ```java import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import javax.xml.namespace.QName; public class DynamicClientExample { public static void main(String[] args) { String wsdlUrl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"; QName serviceName = new QName("http://WebXml.com.cn/", "WeatherWebService"); JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(WeatherWebService.class); // 替换为实际的服务接口类名 factory.setAddress(wsdlUrl); Object client = factory.create(); try { Class<?> clazz = client.getClass(); java.lang.reflect.Method method = clazz.getMethod("getSupportCity", String.class); Object result = method.invoke(client, (Object) null); System.out.println(result.toString()); } catch (Exception e) { e.printStackTrace(); } } } interface WeatherWebService { String getSupportCity(String byProvinceName); } ``` 上述代码展示了如何设置 WSDL URL 和 Service Name,并通过反射机制调用了远程 Web 服务中的某个具体方法[^5]。 3. **运行环境准备** 确保本地已安装 JDK 并正确设置了 JAVA_HOME 环境变量;同还需要下载并部署好 Apache CXF 库文件到工程路径下或者通过 Maven 自动管理这些依赖关系[^6]。 --- ### 注意事项 - 如果目标 Web 服务定义复杂的数据结构(如数组或自定义对象),可能需要额外处理数据类型的映射问题。 - 对于安全性较高的 Web 服务,还需考虑认证授权等问题,在初始化工厂实例传入相应的用户名密码或其他安全参数[^7]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值