java开发webservice_Java WebService开发详解
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开发详解相关推荐
- java lombok 视频_Java开发神器Lombok使用详解
最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter.构造器方法.字符串输出的ToString方法和Equals/HashCode方法等.甚是浪费时间,也 ...
- java me基础教程 pdf_Java ME手机应用开发技术与案例详解 PDF
资源名称:Java ME手机应用开发技术与案例详解 PDF Java ME手机应用开发技术与案例详解基于Java ME,系统描述了Java ME手机应用开发的各个方面.全书按照Java ME程序的开发 ...
- Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3
Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3 总览 问题 详解 String.intern()的作用 link LeetCode的Two Sum题 ...
- Java开发常见面试题详解(JVM)_2
Java开发常见面试题详解(JVM)_2 JVM 问题 详解 JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots link 你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认 ...
- Go 语言快速开发入门(基础语法详解,第一节)
Go 语言快速开发入门(基础语法详解,第一节) 一.基础语法详解,第一节 1.HelloWorld 1.1.代码编写和解释 1.2.go语言注意事项 2.Go 语言的转义字符&&Go ...
- 《Android 网络开发与应用实战详解》——1.3节搭建Android应用开发环境
本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第1章,第1.3节搭建Android应用开发环境,作者 王东华,更多章节内容可以访问云栖社区"异步社区&qu ...
- 《Android 网络开发与应用实战详解》——2.3节Android系统架构
本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.3节Android系统架构,作者 王东华,更多章节内容可以访问云栖社区"异步社区"公 ...
- android开发TextView(文本框)详解
android开发TextView(文本框)详解 作用 TextView(文本框),用于显示文本的一个控件 属性详解 以该代码段为例 <TextViewandroid:id="@+id ...
- 开发工具IDEA使用详解
开发工具IDEA使用详解 1. IntelliJ IDEA的下载与安装 2. IDEA配置jdk开发环境 3. 隐藏.idea文件夹和.iml等文件 4. IDEA创建Java工程 5. 修改编写代码 ...
最新文章
- ajax传递数组 php,jQuery.ajax向后台传递数组问题如何解决
- SPOJ - PHRASES Relevant Phrases of Annihilation —— 后缀数组 出现于所有字符串中两次且不重叠的最长公共子串...
- LeetCode--Excel Sheet Column Number
- Clean Master中文版
- 【JSON】数据格式
- JDK9的新特性:JPMS模块化
- input在iOS里的兼容性
- update和delete操作忘加where条件导致全表更新的处理方法
- mysql-表记录之增删改操作
- 心心念特斯拉Cybertruck?现在可以下单了,订金1000块
- 一步到位,用SQL检索ElasticSearch
- php将日期转为时间戳,php将指定日期转换为时间戳的方法
- Linux编程:获取时间戳
- B站有哪些程序员大牛up主?
- 关于BFS和dijkstra(2019.04.20)
- MBUS CJ/T 188水表协议 Meter-Bus总线
- window10环境下tensorflow-gpu-2.7.0安装
- 计算机毕业答辩程序无法运行,计算机专业毕业答辩程序
- Sunday 算法详解
- 申请美国博士生全免学费