博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot2.1.3集成webservice及错误No operation was found with the name {...}解决办法
阅读量:5221 次
发布时间:2019-06-14

本文共 4014 字,大约阅读时间需要 13 分钟。

1.项目使用springboot 2.1.3版本,集成webservice使用的依赖如下

1 
2
org.springframework.boot
3
spring-boot-starter-parent
4
2.1.3.RELEASE
5
6
7
8
9
org.apache.cxf
10
cxf-spring-boot-starter-jaxws
11
3.2.4
12

2.编写服务接口

1 package com.example.demo.service; 2  3 import javax.jws.WebMethod; 4 import javax.jws.WebService; 5  6 @WebService 7 public interface WebServiceTest { 8  9     @WebMethod     //声明暴露服务的方法,可以不写10     public String getMsg(String msg);11 }

3.编写业务方法

package com.example.demo.service.impl;import java.util.Random;import javax.jws.WebService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import com.example.demo.service.WebServiceTest;@WebService(targetNamespace="http://service.demo.example.com/",        endpointInterface="com.example.demo.service.WebServiceTest")@Componentpublic class WebServiceTestImpl implements WebServiceTest {    private static final Logger log = LoggerFactory.getLogger(WebServiceTestImpl.class);    @Override    public String getMsg(String msg) {        log.info("客户端发来的参数:{}",msg);        String serviceMsg = "hello,I'm server client."+new Random().nextLong();        return serviceMsg;    }}

注意:接口和接口实现类不在同一包下

4.发布服务类

1 package com.example.demo.config; 2  3 import javax.xml.ws.Endpoint; 4  5 import org.apache.cxf.Bus; 6 import org.apache.cxf.jaxws.EndpointImpl; 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.context.annotation.Bean; 9 import org.springframework.context.annotation.Configuration;10 11 import com.example.demo.service.WebServiceTest;12 13 @Configuration14 public class CxfConfig {15 16     @Autowired17     private Bus bus;18 19     @Autowired20     private WebServiceTest webServiceTest;21 22     @Bean23     public Endpoint endpoint() {24         EndpointImpl endpoint = new EndpointImpl(bus, webServiceTest);25         endpoint.publish("/user");26         return endpoint;27     }28 }

5.远程访问的地址:http://ip:端口/项目路径/services/user?wsdl  来查看你的wsdl文件

6.客户端调用

在另一项目里,一样需要引入上面的依赖

org.apache.cxf
cxf-spring-boot-starter-jaxws
3.2.4

然后:

package com.example.demo;import org.apache.cxf.endpoint.Client;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringWebserviceClientApplicationTests {    @Test    public void contextLoads() {    }    @Test    public void test() {        // 创建动态客户端        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();        Client client = dcf.createClient("http://localhost:8080/services/user?wsdl");        Object[] objects = new Object[0];        try {       objects = client.invoke("getMsg", "hello,我是客户端哦!");            System.out.println("返回数据:" + objects[0]);        } catch (java.lang.Exception e) {            e.printStackTrace();        }    }}

提示:我是在springboot测试包里面测试的,你也可以直接写个main方法进行测试。

接下来敲黑板划重点:

1.@WebService(targetNamespace="http://service.demo.example.com/", endpointInterface="com.example.demo.service.WebServiceTest")  这个注解里面targetNamespace是一定要写的,这是指名我们暴露出去的接口在哪,不写映射不到,就会报No operation was found with the name {...}这个错误 ,endpointInterface="com.example.demo.service.WebServiceTest" 这个是告诉接口是哪个

2.请注意targetNamespace最后面有一个斜线我就是因为没加斜线,老是报上面那个错误,真的是弄了一天,有时候一个小小的符号就够你忙活一天的了。深痛的教训啊。。。。。

3.远程访问地址:http://xxxx/services/user?wsdl 后面加粗部分是固定写法,当然你要是重新配置了这个wsdl的访问路径,就需要使用你配置的,这里就不写怎么配置了,感觉没啥用。。。,有感兴趣的可以百度搜搜看

最后,有不对的欢迎指出纠正!

转载于:https://www.cnblogs.com/zfding/p/10475397.html

你可能感兴趣的文章
QT5中运行QT4场景程序 QGraphicsItem *QGraphicsScene::itemAt 函数报错的解决
查看>>
hiho #1283 hiho密码 [Offer收割]编程练习赛3
查看>>
ssh笔记整合
查看>>
Hibernate中java对象的三种状态
查看>>
(补)PSP三张表
查看>>
数据库事务(ACID)
查看>>
mDNS故障排查(译)
查看>>
hadoop记录(一)
查看>>
jQuery 中 on 方法-----给未来元素添加事件
查看>>
倍福TwinCAT(贝福Beckhoff)基础教程5.1 TwinCAT-3 读写注册表
查看>>
【转】4G手机打电话为什么会断网 4G上网和通话不能并存原因分析
查看>>
Python正则表达式操作指南(转)
查看>>
Android --时间控件的使用
查看>>
html-列表-3
查看>>
Servlet(5)—ServletRequest接口和ServletResponse接口
查看>>
读心球游戏
查看>>
[iOS]C语言技术视频-16-指针变量高级用法(堆栈内存)
查看>>
EXCEPTION-TOMCAT
查看>>
基于Vue框架开发的仿饿了么前端小应用
查看>>
Python中整数和浮点数
查看>>