Spring Boot集成webService
来源:互联网 发布:支付宝更改绑定淘宝号 编辑:程序博客网 时间:2024/06/05 02:00
Spring Boot集成webService
服务端
使用idea创建spring boot工程:
“File”→“New”→“Project”→“Spring Initializr”……
在pom添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope></dependency><dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.6</version></dependency><dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.1.6</version></dependency>
在application.properties中添加配置
这个配置根据实际需求添加,如果不修改server.port,服务器会默认从8080端口启动,为避免冲突,这里设置服务端口为8090。
server.port=8090
提供webservice接口
import javax.jws.WebService;@WebServicepublic interface DemoService { public String sayHello(String user);}
实现webservice的方法
import java.util.Date;public class DemoServiceImpl implements DemoService { @Override public String sayHello(String user) { return user+":hello"+"("+new Date()+")"; }}
配置并发布
import org.apache.cxf.Bus;import org.apache.cxf.bus.spring.SpringBus;import org.apache.cxf.jaxws.EndpointImpl;import org.apache.cxf.transport.servlet.CXFServlet;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.xml.ws.Endpoint;@Configurationpublic class CxfConfig { @Bean public ServletRegistrationBean dispatcherServlet() { return new ServletRegistrationBean(new CXFServlet(),"/demo/*"); } @Bean(name = Bus.DEFAULT_BUS_ID) public SpringBus springBus() { return new SpringBus(); } @Bean public DemoService demoService() { return new DemoServiceImpl(); } @Bean public Endpoint endpoint() { EndpointImpl endpoint = new EndpointImpl(springBus(), demoService()); endpoint.publish("/api"); return endpoint; }}
启动服务
直接启动WebserviceApplication,看到服务器正常启动
查看系统提供的webservice接口
在浏览器输入http://localhost:8090/demo/ 可以看到系统提供的webservice服务
客户端
创建新项目
通过wsdl生成Java代码
Web service wsdl url 填入服务端WSDL地址
如果使用的是JDK1.8可能会有bug,生成时报错:由于 accessExternalSchema 属性设置的限制而不允许 ‘file’ 访问, 因此无法读取方案文档 ‘xjc.xsd’。
org.xml.sax.SAXParseException; systemId: jar:file:/D:/apache-cxf-2.7.11/apache-cxf-2.7.11/lib/jaxb-xjc2.2.6.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 52; columnNumber: 88; schema_reference: 由于 accessExternalSchema 属性设置的限制而不允许 'file' 访问, 因此无法读取方案文档 'xjc.xsd'。
解决方法:
在jdk的安装路径下,如 C:\Java\jdk1.8.0_65\jre\lib,添加一个属性文件jaxp.properties,并写上如下内容javax.xml.accessExternalSchema = all
成功执行后可以看到mypackage多了很多文件
我们可以直接调用DemoServiceImplService提供的webservice接口,就像使用本地的方法一样。这里在单元测试中直接调用:
import mypackage.DemoServiceImplService;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 WebserviceApplicationTests { @Test public void contextLoads() { DemoServiceImplService webServiceImpl = new DemoServiceImplService(); String result = webServiceImpl.getDemoServiceImplPort().sayHello("没有说"); System.out.println("==========================================="); System.out.println(result); System.out.println("==========================================="); }}
执行结果:
阅读全文
0 0
- Spring Boot集成webservice
- Spring Boot集成webService
- Spring boot 集成Axis1.4 ,使用wsdd文件发布webservice
- Spring 集成 Webservice功能
- CXF webService集成spring
- WebService集成Spring
- webService集成spring
- webservice集成spring
- Spring Boot 集成MyBatis
- Spring Boot 集成Swagger
- Spring Boot 集成Mybatis
- Spring Boot 集成Swagger
- spring-boot集成mybatis
- Spring Boot 集成Swagger
- Spring Boot 集成Swagger2
- Spring Boot 集成 log4j2
- spring-boot集成shiro
- spring-boot集成Quartz
- Open context.xml from /tomcat/conf folder and modify the context to match this :
- 支付宝小程序又上线新能力——云监控
- POJ-2533 Longest Ordered Subsequence (线性dp 最长上升子序列)
- jquery 追加行(clone)
- mt6735第一次开机或者恢复出厂设置后,桌面小部件一直不更新无图标
- Spring Boot集成webService
- Linux内核编译
- 找回git reset中只 add,未commit的内容
- python爬取同方全球人寿万能险利率
- Brackets安装插件Emmet注意问题
- Java泛型
- rabbitmq学习(java客户端)
- Error:Could not determine the class-path for interface com.android.builder.model.AndroidProject.
- xp下能用ffmeeg库的工具