CXF整合Spring开发WebService
刚开始学webservice时就听说了cxf,一直没有尝试过,这两天试了一下,还不错,总结如下:
要使用cxf当然是要先去apache下载cxf,下载完成之后,先要配置环境变量,有以下三步:
1.打开环境变量配置窗口,点击新建,新建%CXF_HOME%变量,值为你下载的cxf所在的目录,我的是D:\tools\apache-cxf-3.1.0
2.在Path变量中新加一句%CXF_HOME%\lib,注意要和已有的path变量用;隔开
3.在CLASSPATH中新加一句%CXF_HOME%\lib\cxf-manifest.jar,这里也要和已有的classpath变量用;隔开
好了,至此配置已经完成,接下来我们新建一个web项目,把下载的cxf文件夹中的lib文件夹下的所有jar文件拷贝到WEB-INF中的lib文件夹中。下来就可以正式开发了,先看看工程目录结构:
IMyServer.java
@WebService
public interface IMyServer {
@WebResult(name="addResult")
public int add(@WebParam(name="a")int a,@WebParam(name="b")int b);
}
MyServerImpl.java
@WebService(endpointInterface="cxf.lenve.test.IMyServer")
public class MyServerImpl implements IMyServer {
@Override
public int add(int a, int b) {
System.out.println("服务端..."+a+"+"+b+"="+(a+b));
return a+b;
}
}
写一个接口一个实现类就可以了,至于发布则在配置文件中完成即可
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!-- 定义webservice服务,相当于发布 -->
<jaxws:server id="MyServer" address="/MyServer" serviceClass="cxf.lenve.test.IMyServer">
<!--发布服务类 -->
<jaxws:serviceBean>
<bean class="cxf.lenve.test.MyServerImpl"></bean>
</jaxws:serviceBean>
</jaxws:server>
</beans>
好了,文档已经发布,剩下的就是配置web.xml文件了,看:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/beans.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!--cxfservlet的作用就是解析webservice请求 -->
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 所有前缀为ws的请求都被解析为webservice请求 -->
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
</web-app>
好了,至此一个cxf整合spring的webservice的应用编写成功了,运行该网站,在浏览器中查看wsdl文档:
服务端成功发布,客户端该怎样访问呢?从前我们使用wsimport将wsdl导出为java文件,现在使用cxf,可以直接使用cxf中自带的工具wsdl2java导出wsdl文件。
先创建一个客户端工程,在命令行进入该工程的src文件夹中,然后,使用如下命令导出java文件:
刷新客户端工程,就可以看到导出的java文件了。
直接调用即可:
public class Client1 {
public static void main(String[] args) {
IMyServer iMyServer = new IMyServerService().getIMyServerPort();
System.out.println(iMyServer.add(3, 4));
}
}
这便是cxf整合spring的一个简单项目。
相关文章
- Spring Boot 学习04-----Spring Boot 开发一个Web应用程序
- Spring编程式事务详解
- 使用Spring Boot开发一个属于自己的web Api接口返回JSON数据
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- springboot ssm框架实现的学生就业信息管理系统(spring boot+layui)
- 阿里一面:Spring Bean 默认是单例的,高并发情况下,如何保证并发安全?
- Spring Boot 五种热部署方式,极速开发就是生产力!
- Spring注解开发之Spring常用注解
- Spring MVC 转发和重定向
- Spring Data操作Redis时,发现key值出现 xacxedx00x05tx00tb
- Spring练习,定义三个模块,使用<import>标签完成分模块配置开发,模拟实现学生借书和还书的过程,将结束输出到控制台。
- Spring使用注解开发(@Component)
- [Spring Framework]注解开发②(注解配置scope、生命周期钩子)
- Spring源码分析 之浅谈设计模式
- Java和Spring的跨版本升级
- Java微服务开发指南 -- 使用Spring Boot构建微服务
- 搭建高可用rabbitmq集群及spring boot实现集群配置
- spring boot mvc系列-静态资源配置与MappingHandler拦截器
- Spring Boot中Controller接收对象列表实现
- Spring Boot 最流行的 16 条最佳实践解读!
- SpringBoot Admin监控Spring程序
- Spring Boot自定义Start组件开发
- Spring之002:相关配置, 数据源及注解开发