WebService分为两种:

1. 基于HTTP协议,REST方式的WebService。

2. 基于SOAP协议(HTTP协议之上),RPC方式的WebService。

通常所说的WebService是指RPC方式的WebService。

Java中有三种WebService规范: JAX-WS(JAX-RPC)、JAX-RS、JAXM&SAAJ。

JAX-WS(Java API For XML-WebService),JDK1.6 自带的版本为JAX-WS2.1,其底层支持为JAXB。早期的JAVA Web服务规范JAX-RPC(Java API ForXML-Remote Procedure Call)目前已经被JAX-WS 规范取代,JAX-WS 是JAX-RPC 的演进版本,但JAX-WS 并不完全向后兼容JAX-RPC。

JAX-RS 是Java针对 REST(Representation State Transfer)风格制定的一套 Web 服务规范,由于推出的较晚,该规范(JSR 311,目前JAX-RS的版本为 1.0)并未随JDK1.6 一起发行,你需要到JCP 上单独下载JAX-RS 规范的接口,其API位于 javax.ws.rs.*包。

JAXM(Java API For XML Message)主要定义了包含了发送和接收消息所需的 API,相当于 Web 服务的服务器端,其 API位于 javax.messaging.*包,它是JAVA EE 的可选包,因此你需要单独下载。 SAAJ(SOAP With Attachment API For Java,JSR 67)是与JAXM搭配使用的API,为构建SOAP 包和解析SOAP 包提供了重要的支持,支持附件传输,它在服务器端、客户端都需要使用。这里还要提到的是SAAJ规范,其API位于 javax.xml.soap.*包。 JAXM&SAAJ与JAX-WS都是基于SOAP的Web服务,相比之下JAXM&SAAJ暴漏了SOAP更多的底层细节,编码比较麻烦,而 JAX-WS 更加抽象,隐藏了更多的细节,更加面向对象,实现起来你基本上不需要关心 SOAP 的任何细节。

服务器端代码:

package com.what21.service.demo01;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebResult;

import javax.jws.WebService;

import javax.jws.soap.SOAPBinding;

import javax.jws.soap.SOAPBinding.Style;

import javax.jws.soap.SOAPBinding.Use;

@WebService(targetNamespace = "/system/", name = "HelloService")

@SOAPBinding(style = Style.RPC, use = Use.LITERAL)

public interface IHello {

@WebMethod(operationName="world", action="urn:world")

@WebResult

public String world(@WebParam(name = "str", partName = "str")String str);

}

package com.what21.service.demo01;

import javax.jws.WebService;

@WebService(targetNamespace="/system/",

endpointInterface="com.what21.service.demo01.IHello",

name="HelloService",portName="HelloService",serviceName="HelloService")

public class HelloImpl implements IHello {

@Override

public String world(String str) {

return str + "===" + str;

}

}

package com.what21.service.demo01;

import javax.xml.ws.Endpoint;

public class PublishMain {

/**

* @param args

*/

public static void main(String[] args) {

Endpoint.publish("http://localhost:9999/HelloService", new HelloImpl());

}

}

Address: http://localhost:9999/HelloService

WSDL: http://localhost:9999/HelloService?wsdl

Implementation class: com.what21.service.demo01.HelloImpl

客户端调用:

F盘新建文件夹webservice,确认Java环境变量已经配置好:

wsimport -d "f:/webservice" http://localhost:9999/HelloService?wsdl

生成jar包:

jar cvf "f:/webservice.jar" -C "f:/webservice/" .

引入生成的jar包进行调用:

package com.what21.service.demo01;

import com.what21.HelloService;

import com.what21.HelloService_Service;

public class ClientTest {

/**

* @param args

*/

public static void main(String[] args) {

HelloService_Service clientService = new HelloService_Service();

System.out.println(clientService.getServiceName());

HelloService service = clientService.getHelloService();

System.out.println(service.world("world"));

}

}

java开发webservice_Java WebService开发详解相关推荐

  1. java lombok 视频_Java开发神器Lombok使用详解

    最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter.构造器方法.字符串输出的ToString方法和Equals/HashCode方法等.甚是浪费时间,也 ...

  2. java me基础教程 pdf_Java ME手机应用开发技术与案例详解 PDF

    资源名称:Java ME手机应用开发技术与案例详解 PDF Java ME手机应用开发技术与案例详解基于Java ME,系统描述了Java ME手机应用开发的各个方面.全书按照Java ME程序的开发 ...

  3. Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3

    Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3 总览 问题 详解 String.intern()的作用 link LeetCode的Two Sum题 ...

  4. Java开发常见面试题详解(JVM)_2

    Java开发常见面试题详解(JVM)_2 JVM 问题 详解 JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots link 你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认 ...

  5. Go 语言快速开发入门(基础语法详解,第一节)

    Go 语言快速开发入门(基础语法详解,第一节) 一.基础语法详解,第一节 1.HelloWorld 1.1.代码编写和解释 1.2.go语言注意事项 2.Go 语言的转义字符&&Go ...

  6. 《Android 网络开发与应用实战详解》——1.3节搭建Android应用开发环境

    本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第1章,第1.3节搭建Android应用开发环境,作者 王东华,更多章节内容可以访问云栖社区"异步社区&qu ...

  7. 《Android 网络开发与应用实战详解》——2.3节Android系统架构

    本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.3节Android系统架构,作者 王东华,更多章节内容可以访问云栖社区"异步社区"公 ...

  8. android开发TextView(文本框)详解

    android开发TextView(文本框)详解 作用 TextView(文本框),用于显示文本的一个控件 属性详解 以该代码段为例 <TextViewandroid:id="@+id ...

  9. 开发工具IDEA使用详解

    开发工具IDEA使用详解 1. IntelliJ IDEA的下载与安装 2. IDEA配置jdk开发环境 3. 隐藏.idea文件夹和.iml等文件 4. IDEA创建Java工程 5. 修改编写代码 ...

最新文章

  1. ajax传递数组 php,jQuery.ajax向后台传递数组问题如何解决
  2. SPOJ - PHRASES Relevant Phrases of Annihilation —— 后缀数组 出现于所有字符串中两次且不重叠的最长公共子串...
  3. LeetCode--Excel Sheet Column Number
  4. Clean Master中文版
  5. 【JSON】数据格式
  6. JDK9的新特性:JPMS模块化
  7. input在iOS里的兼容性
  8. update和delete操作忘加where条件导致全表更新的处理方法
  9. mysql-表记录之增删改操作
  10. 心心念特斯拉Cybertruck?现在可以下单了,订金1000块
  11. 一步到位,用SQL检索ElasticSearch
  12. php将日期转为时间戳,php将指定日期转换为时间戳的方法
  13. Linux编程:获取时间戳
  14. B站有哪些程序员大牛up主?
  15. 关于BFS和dijkstra(2019.04.20)
  16. MBUS CJ/T 188水表协议 Meter-Bus总线
  17. window10环境下tensorflow-gpu-2.7.0安装
  18. 计算机毕业答辩程序无法运行,计算机专业毕业答辩程序
  19. Sunday 算法详解
  20. 申请美国博士生全免学费

热门文章

  1. 双十二自动刷淘宝能量,这个脚本你值得拥有
  2. Java 读写Properties配置文件
  3. Java面向对象----封装概念
  4. MySQL数据库-错误1166 - Incorrect column name 'xxx' 的解决方法
  5. checkstyle安装使用
  6. Linux命令(30):tar命令-归档工具
  7. MySQL主从同步问题集
  8. 苹果向求职者抛出的8大难题
  9. 指针05 - 零基础入门学习C语言45
  10. java ftp下载文件源码_java实现ftp文件下载的源代码