Webservice接口开发

CXF+Spring 发布WebService 简单的服务端+客户端

第一次进行WebService的开发,都是看网上的文章自己摸索着做的,在这个过程不可避免的遇到很多问题。第一次写文章记录一下大致的过程,同时也希望可以给他人一些参考。

一、 下载cxf

下载地址
选择二进制文件下载
在这里插入图片描述

设置系统环境变量
新增系统变量CXF_HOME,变量值为存放解压的cxf包的地址
在这里插入图片描述

编辑系统变量Path,在变量值后面添加 %CXF_HOME%\bin;
在这里插入图片描述

在cmd里面运行wsdl2java,可以运行则说明cxf的系统变量配置成功
在这里插入图片描述

二、 导入cxf包

在项目中导入所需要的包(究竟具体导入哪一些jar包,可以参考一下
https://blog.csdn.net/dwarcheng/article/details/52449199)
在网上看了很多cxf所需的包都不一样,所以我最后选择将lib下全部的jar包都导进去
右击项目名->build path->configure build path->Add Library(绿色框的是我做的时候已经导进去的)
在这里插入图片描述

->CXF Runtime->点击configure installed runtimes(绿色框的是我之前已经导进去的,没到进去之前点击configure installed runtimes后选择cxf所在的路径就可以了)
在这里插入图片描述
在这里插入图片描述

这样就完成了包的导入(如果不需要这么多的jar包,可以在导入之前在cxf的lib的目录下只保留所需要的包)

在这里插入图片描述

三、 编写服务端接口类、实现类

编辑测试的接口类

package service;

import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public interface ISurveyService {
	public String IWebService(@WebParam(name="str")String str);
}

实现类

package service;


import javax.jws.WebService;
import service.ISurveyService;

public class SurveyServiceImpl implements ISurveyService{
	public String IWebService(String str) {
		str="Hello"+str+"第一个WebService!";
		return str;
	}
}

四、 配置环境

在项目src目录下随便位置新建cxf-servlet.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"
	xmlns:soap="http://cxf.apache.org/bindings/soap"
	xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
	<!-- 发布一个简单服务(不带接口类型),address:请求的url, implementor:被发布的类 ,需要加注解@WebService,否则所有的方法将不对外暴露,亦不报错 -->
<!-- 	<jaxws:endpoint id="helloServiceCXFForConfig"
		implementor="com.service.cxf.config.HelloServiceForCXFConfig" address="/hello">
		请求消息拦截器
		<jaxws:inInterceptors>
			<bean id="inInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
		</jaxws:inInterceptors>
		相应消息拦截器
		<jaxws:outInterceptors>
			<bean id="outInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
		</jaxws:outInterceptors>
	</jaxws:endpoint> -->
 
	<!-- 第二种方式发布(带接口类型) -->
	<!-- serviceClass:必须是接口类型,该接口类型必须加注解@WebService address:请求的url -->
	<jaxws:server id="myService"
		serviceClass="service.ISurveyService" address="http://localhost:8282/surveyService">
		<!-- serviceBean:服务实例,必须是serviceClass的实现类 -->
		<jaxws:serviceBean>
			<bean class="service.SurveyServiceImpl"></bean>
		</jaxws:serviceBean>
		<!-- 请求消息拦截器 -->
		<jaxws:inInterceptors>
			<bean id="inInterceptor2" class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
		</jaxws:inInterceptors>
		<!-- 相应消息拦截器 -->
		<jaxws:outInterceptors>
			<bean id="outInterceptor2" class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
		</jaxws:outInterceptors>
	</jaxws:server>
</beans>

在项目WebContext->WEB-INF目录下配置web.xml文件

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:com/service/cxf/config/cxf-servlet.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>cxf</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>cxf</servlet-name>
    <url-pattern>/service/*</url-pattern>
</servlet-mapping>

注意这里的classpath根据要自己项目的cxf-servlet.xml文件的路径

在这里插入图片描述

五、 发布

配置完之后,就可以运行了。我是在Tomcat下运行项目,然后在浏览器上查看运行效果,地址为http://localhost:8282/surveyService?wsdl(这个地址是项目中cxf-servlet.xml文件中自己设置的address)

出现如下界面则说明发布成功
在这里插入图片描述

六、 编写客户端
public static void main(String[] args) {
		ISurveyService service=new ISurveyServiceService().getISurveyServicePort();
		System.out.println(service.iWebService("2020.10.12 09:43"));
	}

在这里插入图片描述

具体的操作可以参考原博主的文章,非常感谢原博主,这篇文章给了我非常大的帮助。
文章链接

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值