步骤一:spring项目(java web项目)引入CXF jar包

步骤二:创建webservice服务器

1)创建一个服务接口

 package com.buss.app.login;

 import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService; /**
* @author Administrator
* 备注:targetNamespace为命名空间 默认http://package倒序/
*/
@WebService(targetNamespace = "http://login.app.buss.com/")
public interface LoginServiceI
{
@WebMethod(operationName="login")
@WebResult(name="ReturnInfo")
public String login(@WebParam(name="phone") String phone, @WebParam(name="pwd")String pwd);
}

2)是接口实现类

有一点注意:CXF不支持复杂类型返回值,现在流行的做法有两种:

返回XML格式或者JSON格式字符串,在客户端使用DOM工具类或者json工具类转换解析,相对于直接返回对象或者集合等复杂数据结构需要客户端引入相应工具库  比较省事

 package com.buss.app.login;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebService;
import org.jeecgframework.core.util.LogUtil;
import com.buss.app.common.ReturnInfo;
import com.buss.app.login.entity.Student;
import com.google.gson.Gson; @WebService(serviceName = "LoginServiceImpl")
public class LoginServiceImpl implements LoginServiceI
{
public String login(String phone,String pwd)
{
LogUtil.info("登录手机号:"+phone+",密码:"+pwd);
Gson gson = new Gson();
List<Student> list = new ArrayList<Student>();
Student s = new Student();
s.setAddusername("测试");
s.setJob("科长");
s.setOrgname("省院");
Student s1 = new Student();
s1.setAddusername("测试");
s1.setJob("科长");
s1.setOrgname("省院");
list.add(s);
list.add(s1);
ReturnInfo rt = new ReturnInfo();
rt.setResult(list);
String json = gson.toJson(rt);
LogUtil.info("返回对象集合:"+json);
return json;
}
}

3)创建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"
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" />
<!-- 登录验证服务 -->
<jaxws:endpoint id="LoginServiceI" implementor="com.buss.app.login.LoginServiceImpl" address="/LoginService" />
</beans>

在spring-mvc.xml中添加引入cxf配置

<!--集成cxf webservice接口-->
<import resource="classpath:cxf-servlet.xml" />

4)在web.xml中加入cxf servlet

<servlet>
<description>Apache CXF Endpoint</description>
<display-name>cxf</display-name>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/cxf/*</url-pattern>
</servlet-mapping>

至此,web service服务器就创建好了

在浏览器中访问: http://localhost:8080/test/cxf/LoginService?wsdl ,(test是项目名称) 如果出现类似如下信息就配置成功了。

备注:常用注解

@WebService 必须,(name=&quot;UserService&quot;)可选,配置Service的名称,默认为类名。targetNamespace可选,默认为http:// package的倒序,可在一个自己的Constants里定义统一的namespace. 
默认接口的所有方法均输出为WebService。 
@WebResult 可选,配置方法的返回值在WSDL的名称,CXF默认为result。 
@WebParam 可选,配置参数在WSDL的名称,CX比较笨,不会反射,默认为arg0,arg1.... 
@WebMethod 可选,有一个方法有此注释,则其他无注释的方法非WebService。

步骤三:创建客户端(根据客户端不同  调用手段也不同,如安卓端、Java端、C#端等)

不同客户端可以百度一下相应的调用方法。

步骤四:测试,使用工具SopeUI测试即可

另外:一种常见的应用场景:Java WEB项目与其他系统整合,java web项目作为客户端调用其他系统。

1、不导包,拼装soap消息,  调用HttpClient 发送get或者post请求服务方的web service ,然后使用dom解析返回soap消息;(常用)

2、一种是导包+wsdl2java 生成客户端,但这样会引入过多jar  重量级

需要配置远程web service代理:

其中自动注入远程ws代理的配置有两种方式:

(1)bean方式,使用factory

<!-- WebService 客户端 spring 配置文件cxf与Spring集成,cxf里提供了一个工厂类org.apache.cxf.jaxws.JaxWsProxyFactoryBean,
可以方便实现的调用WebService。serviceClass属性是接口类,address是webService的路径在其他bean里如果要调用webservice,
只要将client这个bean注入到需要使用的bean里。-->
<bean id="client" class="com.exp.service.outer.HelloWorld" factory-bean="clientFactory" factory-method="create" />
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.exp.service.outer.HelloWorld" />
<property name="address" value="http://localhost:8080/demo/webservice/HelloWorld" />
</bean>

(2)jaxws:client

WebService学习之三:spring+cxf整合的更多相关文章

  1. Spring+CXF整合来管理webservice(服务器启动发布webservice)

    Spring+CXF整合来管理webservice    实现步骤:      1. 添加cxf.jar 包(集成了Spring.jar.servlet.jar ),spring.jar包 ,serv ...

  2. WebService之Spring+CXF整合示例

    一.Spring+CXF整合示例 WebService是一种跨编程语言.跨操作系统平台的远程调用技术,它是指一个应用程序向外界暴露一个能通过Web调用的API接口,我们把调用这个WebService的 ...

  3. Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档

    0 引言 在做服务端开发的时候,难免会涉及到API 接口文档的编写,可以经历过手写API 文档的过程,就会发现,一个自动生成API文档可以提高多少的效率. 以下列举几个手写API 文档的痛点: 文档需 ...

  4. Elasticsearch学习(3) spring boot整合Elasticsearch的原生方式

    前面我们已经介绍了spring boot整合Elasticsearch的jpa方式,这种方式虽然简便,但是依旧无法解决我们较为复杂的业务,所以原生的实现方式学习能够解决这些问题,而原生的学习方式也是E ...

  5. 【Java Web开发学习】Spring MVC整合WebSocket通信

    Spring MVC整合WebSocket通信 目录 ========================================================================= ...

  6. Elasticsearch学习(1) Spring boot整合Elasticsearch

    本文的Spring Boot版本为1.5.9,Elasticsearch版本为2.4.4,话不多说,直接上代码. 一.启动Elasticsearch 在官网上下载Elasticsearch后,打开bi ...

  7. Elasticsearch学习(4) spring boot整合Elasticsearch的聚合操作

    之前已将spring boot原生方式介绍了,接下将结介绍的是Elasticsearch聚合操作.聚合操作一般来说是解决一下复杂的业务,比如mysql中的求和和分组,由于博主踩的坑比较多,所以博客可能 ...

  8. day63-webservice 11.cxf整合spring

    如果我们有Spring配置文件,怎么把WebService整合到Spring里面,用Ioc容器来管理这个Bean. 做项目的时候一般都是分层:Dao层.Service层.Service层要调Dao层, ...

  9. WebService 学习记录

    -------------------------------------------PS:这个WebService 服务必须一直开着,关闭就没法访问了 Web Service 教程 一.webser ...

随机推荐

  1. Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.

    在部署的时候出现Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server ...

  2. NodeJS常用库说明

    underscore:1.合并json async:1.异步编程同步化

  3. Python模块整理(三):子进程模块subprocess

    文章 原始出处 http://ipseek.blog.51cto.com/1041109/807513. 本来收集整理网络上相关资料后整理: 从python2.4版本开始,可以用subprocess这 ...

  4. BZOJ3759: Hungergame

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3759 题解:只想到了两种情况必胜,没有推广T_T 先说一下我想到了两种情况: 1)异或和为0  ...

  5. HTML空格符号 &nbsp / &ensp / &emsp

      半角的不断行的空白格(推荐使用)    半角的空格    全角的空格

  6. git - 搭建git仓库

    1. 更新git版本: http://codelife.me/blog/2013/06/25/upgrade-git-on-centos-6-4/ 2. 建立git仓库: git init --bar ...

  7. hdu 1211 RSA

    // 表示题目意思我是理解了蛮久 英语太水了 //首先这是解密公式 m=c^d mod n// 给你 p q e 然后 n=p*q fn=(p-1)*(q-1)// 给你 e,根据公式 e*d mod ...

  8. CentOS SVN服务器安装配置小记

    SVN的安装 安装很简单,尤其对于CentOS这种,直接: # yum install subversion# yum install mod_dav_svn 不同发行版的Package安装方法参见h ...

  9. 【转】【Android】对话框 AlertDialog -- 不错不错

    原文网址:http://blog.csdn.net/feng88724/article/details/6171450 本讲介绍一下Android基本组件:对话框AlertDialog. API: j ...

  10. asp.net MVC 应用程序的生命周期(上)

    首先我们知道http是一种无状态的请求,他的生命周期就是从客户端浏览器发出请求开始,到得到响应结束.那么MVC应用程序从发出请求到获得响应,都做了些什么呢? 本文我们会详细讨论MVC应用程序一个请求的 ...