java实现webservice 自定义实体参数_基于 Spring 实现 Web Services 通信。

↑ 点击上面 “时代Java”关注我们, 关注新技术,学习新知识!

什么是Web Services?

  • Web Services 是应用程序组件

  • Web Services 使用开放协议进行通信

  • Web Services 是独立的(self-contained)并可自我描述

  • Web Services 可通过使用UDDI来发现

  • Web Services 可被其他应用程序使用

  • XML 是 Web Services 的基础

它如何工作?

基础的 Web Services 平台是 XML + HTTP。

HTTP 协议是最常用的因特网协议。

XML 提供了一种可用于不同的平台和编程语言之间的语言。

一、Spring整合CXF实现Web Services

Web Services只是一套接口规范,实际运用中实现Web Services的方法有很多种,Java本身在jdk1.7之后也对webservice有了默认的实现(Oracle JAX-WS RI),但是在我们实际开发中一般还是会使用框架来,比如这里所提到的CXF就有着广泛的应用。
CXF单独发布就不说了,直接讲Spring整合CXF,毕竟现在的JavaEE开发是离不开Spring了。

1.1 maven配置

加入maven依赖

<dependency>    <groupId>org.apache.cxfgroupId>    <artifactId>cxf-rt-frontend-jaxwsartifactId>    <version>3.1.6version>dependency><dependency>    <groupId>org.apache.cxfgroupId>    <artifactId>cxf-rt-transports-httpartifactId>    <version>3.1.6version>dependency>

1.2 配置 web.xml

<servlet>    <servlet-name>CXFServletservlet-name>    <servlet-class>org.apache.cxf.transport.servlet.CXFServletservlet-class>servlet><servlet-mapping>    <servlet-name>CXFServletservlet-name>    <url-pattern>/webservice/*url-pattern>servlet-mapping>

1.3 写一个WS接口及其实现

非常简洁的接口和实现
接口:HelloWorld.java

package com.nowjava.cxf;import javax.jws.WebService;@WebServicepublic interface HelloWorld {    public String say(String str);}

实现:HelloWorldImpl.java

package com.nowjava.cxf.impl;import com.nowjava.cxf.HelloWorld;import org.springframework.stereotype.Component;import javax.jws.WebService;@Component("helloWorld")@WebServicepublic class HelloWorldImpl implements HelloWorld {    public String say(String str) {        return "Hello"+str;    }}

1.4 修改Spring配置文件

在spring主配置文件spring.xml中添加引入spring-cxf.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:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd">     <context:component-scan base-package="com.erictao"/>        <import resource="spring-cxf.xml"/>beans>

并且创建配置文件spring-cxf.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/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsd">         <jaxws:endpoint implementor="#helloWorld" address="/HelloWorld"> beans>

更加具体的配置可以查看官方给出的文档:http://cxf.apache.org/docs/how-do-i-develop-a-service.html。#helloWorld指的是我们在HelloWorldImpl类中所自定义的名字,即@Component("helloWorld")定义的bean id,/HelloWorld则是我们定义的接口地址。

二、运行发布WS

之后我们运行项目输入该地址:http://127.0.0.1:8080/ssm/webservice/HelloWorld?wsdl如果出现如下界面:

0ad38dfd7c5b5158d3b0392482431040.png

则说明我们的webservice发布成功了。接下来只需要通过客户端调用这个接口即可获得返回结果了。

附:客户端代码生成

客户端的代码可以直接使用工具生成,可参考下面说明:

环境准备

1、JDK环境 
2、下载apache-cxf发布包,目前最新版本为3.1.7,解压发布包,设置CXF_HOME,并添加%CXF_HOME %/bin到path环境变量。 
3、CMD命令行输入wsdl2java -help,有正常提示说明环境已经正确配置。 084c3801e8a2dcfe8d212450366e5e53.png

命令使用

此命令主要是生成webservice的客户端代码,服务端可以是自行开发的服务,也可以是需要对接的服务接口,最简单的命令如下: 
wsdl2java wsdlurl 
其中wsdlurl为服务发布的访问地址,未写参数默认生成的是客户端的代码,其中用得最多的是-encoding 参数,是指定Java代码的编码格式,例如: 
wsdl2java -encoding wsdlurl

其他详细的参数及说明可以用wsdl2java -help或wsdl2java -h获取,根据实际的需求设置相应的参数即可。

常用接口:IP地址来源搜索 WEB 服务 

1、生成客户端代码 
WSDL地址: 
http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl 
使用wsdl2java工具将客户端代码直接生成在eclipse的工程里,eclipse工程地址为:E:\workspace\webservice,命令如下:

wsdl2java -encoding utf-8 -d E:/workspace/webservice/src http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl1

-encoding表示生成的Java文件编码格式为utf8,-d表示代码生成路径为E:/workspace/webservice/src。 
执行完毕,没有报任何错误,说明执行成功 45b9ac47c343deaf7a6a96dd6dd552cf.png

可以看到在eclipse下面已经生成了相应的代码: 4e1ec9ba6ce301811542fdbff116ab23.png

2、客户端代码调用服务 
写一个小demo,调用发布的IP查询服务

package com.nowjava.ipservice;import java.util.Iterator;import java.util.List;import cn.com.webxml.ArrayOfString;import cn.com.webxml.IpAddressSearchWebService;import cn.com.webxml.IpAddressSearchWebServiceSoap;public class IPServiceDemo {public static void main(String[] args) {    IpAddressSearchWebService service2 = new IpAddressSearchWebService();    IpAddressSearchWebServiceSoap serviceSoap = service2.getIpAddressSearchWebServiceSoap();    ArrayOfString cityByip = serviceSoap.getCountryCityByIp("58.60.251.188");    List<String> ips = cityByip.getString();        for (Iterator<String> ite = ips.iterator(); ite.hasNext();) {        String ip = (String) ite.next();        System.out.println(ip);    }}

得到的结果为: 
信息: Creating Service {http://WebXml.com.cn/}IpAddressSearchWebService from WSDL:http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl 
58.60.251.188
广东省深圳市 电信

总结

以上就是一个简单的Web Services入门实例,更多的关于CXF拦截器,客户端调用就没有做过多介绍,后续有时间的话再接着更新,明白了Web Service服务端和客户端怎么构建,后续只需要当做普通接口编写业务代码即可。

本文节选自:

Web Services 教程

https://nowjava.com/book/web-services

--

知识分享,时代前行!

~~ 时代Java

还有更多好文章……

请查看历史文章和官网,

↓有分享,有收获~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值