当前位置: 首页 > news >正文

java编写webservice(使用Springboot框架)

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。 

Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

简而言之,Web Service作为中间件技术被广泛应用。下面使用springboot框架开发一个简单的Web Service。

1、pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>公司名</groupId><artifactId>项目名</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.8.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--WerbService CXF依赖 --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.1.12</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId><version>3.1.12</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.5</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.41</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

2、model的User.java

/*** */
package com.dbgo.webservicedemo.Model;import java.io.Serializable;
import java.util.Date;public class User implements Serializable {private static final long serialVersionUID = -5939599230753662529L;private String              userId;private String            username;private String            age;private Date              updateTime;public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public Date getUpdateTime() {return updateTime;}public void setUpdateTime(Date updateTime) {this.updateTime = updateTime;}
}

3、service的UserService.java

/*** */
package com.dbgo.webservicedemo.service;import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;@WebService
public interface UserService {@WebMethodString getName(@WebParam(name = "userId") String userId);@WebMethodString getUser(String userId);@WebMethodString getAlLUser();
}

4、service的UserServiceImpl.java

/*** */
package com.dbgo.webservicedemo.service;import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;import javax.jws.WebService;import com.alibaba.fastjson.JSON;
import com.dbgo.webservicedemo.Model.User;@WebService(targetNamespace="http://service.webservicedemo.dbgo.com/",endpointInterface = "com.dbgo.webservicedemo.service.UserService")
public class UserServiceImpl implements UserService {private Map<String, User> userMap = new HashMap<String, User>();public UserServiceImpl() {System.out.println("向实体类插入数据");User user = new User();user.setUserId("411001");user.setUsername("zhansan");user.setAge("20");user.setUpdateTime(new Date());userMap.put(user.getUserId(), user);user = new User();user.setUserId("411002");user.setUsername("lisi");user.setAge("30");user.setUpdateTime(new Date());userMap.put(user.getUserId(), user);user = new User();user.setUserId("411003");user.setUsername("wangwu");user.setAge("40");user.setUpdateTime(new Date());userMap.put(user.getUserId(), user);}@Overridepublic String getName(String userId) {return userMap.get(userId).getUsername();}@Overridepublic String getUser(String userId) {User user= userMap.get(userId);String json = JSON.toJSONString(user);return json;}@Overridepublic String getAlLUser() {ArrayList<User> users=new ArrayList<>();userMap.forEach((key,value)->{users.add(value);});String json = JSON.toJSONString(users);return json;}
}

5、配置类WebServiceConfig.java

/*** */
package com.dbgo.webservicedemo;import com.dbgo.webservicedemo.service.UserService;
import com.dbgo.webservicedemo.service.UserServiceImpl;
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;@Configuration
public class WebServiceConfig {@Beanpublic ServletRegistrationBean dispatcherServlet(){return new ServletRegistrationBean(new CXFServlet(),"/service/*");//发布服务名称}@Bean(name = Bus.DEFAULT_BUS_ID)public SpringBus springBus(){return  new SpringBus();}@Beanpublic UserService userService(){return  new UserServiceImpl();}@Beanpublic Endpoint endpoint() {EndpointImpl endpoint=new EndpointImpl(springBus(), userService());//绑定要发布的服务endpoint.publish("/user"); //显示要发布的名称return endpoint;}
}

6、启动类AppStart.java

/*** */
package com.dbgo.webservicedemo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class AppStart {public static void main(String[] args) {SpringApplication.run(AppStart.class, args);}
}

7、一个简单的测试类

/*** */
package com.dbgo.webservicedemo;import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.junit.Test;public class WebTest {@Testpublic void test() throws Exception {String address = "http://localhost:8080/service/user?wsdl";JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();  Client client = dcf.createClient(address);  //设置连接参数String userId = "411003";Object[] res = client.invoke("getUser",userId); String responseStr = res[0].toString();System.out.println(responseStr);}@Testpublic void testAll() throws Exception {String address = "http://localhost:8080/service/user?wsdl";JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();  Client client = dcf.createClient(address);  Object[] res = client.invoke("getAlLUser",""); String responseStr = res[0].toString();System.out.println(responseStr);}
}

写的比较简单,主要是作者记忆力比较不好,记下来遇到类似的问题可以参考一下。

http://www.xdnf.cn/news/801397.html

相关文章:

  • 说一说windows7引导故障的解决
  • 【大模型:知识图谱】--3.py2neo连接图数据库neo4j
  • 堆栈平衡的说明
  • 【spark 大数据处理技术】 - “Hello world”
  • 论坛网址大全
  • 完整图解 Tomcat 5.0.28 安装笔记
  • 如何突破局域网限制
  • 分享24个网页游戏源代码,总有一个是你想要的
  • e63 安装java_如何从电脑上下载游戏到诺基亚E63手机上?
  • YAHOO的YUI框架
  • web网页设计:基于HTML+CSS+JavaScript我的学校设计毕业论文源码
  • ARP安全
  • 45种方法攻入后台
  • www.wljx.net/forum.php,齐博CMS:主页被黑,不知漏洞在哪?
  • 案例分析---2014年1月21日全国DNS污染始末以及分析
  • CIO:撞上“山寨OA” 险些败走麦城
  • HTML+JS樱花飘落特效+鼠标点击特效
  • 网词解释耽美术语
  • CentOS 停服!我们有哪些顶流的国产操作系统
  • 基于嵌入式微处理器EP9315的二次开发技术
  • 方维团购系统二次开发,项目经验
  • galaxy tab p1000 升级android,三星Galaxy Tab P1000 简朴的刷机教程(附rom包下载地址)...
  • 差距几何 Vista与XP系统性能对比测试(下)
  • 各个学习网站网址
  • 名词:broken pipe
  • cocos2d-x-触屏(Touch)事件详解
  • css代码添加背景图片常用代码
  • Maemo系统介绍
  • ASP.NET概述
  • 华表Cell应用 - 在IE中使用华表Cell插件 | #华表Cell #报表