JAVA 1.6 之后,自带的JAX-WS API,这使得我们可以很方便的开发一个基于Java的WebService服务。

基于JAVA的WebService 服务

1、创建服务端WebService服务接口

package com.st.services;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use; @WebService(serviceName="calculator",targetNamespace="com.st.services")
@SOAPBinding(style=Style.RPC,use=Use.LITERAL)
public class CalculatorService { public int sum(int a,int b){
return a+b ;
} }

 

@WebService

此注示用来标明此java类为某个WebService的实现类或者标明此java接口定义了某个WebService的接口。

@WebService有六个参数可以用来配置这个WebService的定义:

  1、endpointInterface:指向一个定义此WebService抽象定义接口的完整类路(如果没有定义接口,直接写的实现类,则该参数不需要)

  2、name:WebService名;默认的port名为"实现类名+Port",binding名为"实现类名+PortBinding",通过指定name的值来替换 实现类名。

  3、portName:指定port名,可以完成替换默认port名,或由上面的"name"指定的port名。

  4、targetNamespace:指定targetNamespace值,默认的值为 "http://包名/",可以通过此变量指定一个自定义的targetNamespace值。(注:如果分别定义和接口和实现,则他们有各自的targetNamespace)

5、serviceName:指定service名

6、wsdlLocation:指向一个预定义的wsdl的文件,替代自动生成的wsdl文件。

!如果不想定义的话,可以直接写一个@WebService ,其他的属性用默认的。

@WebMethod

  1. action:指定此方法对应的action
  2. exclude:true --表示此方法包含在web服务中;false表示排除此方法
  3. operationName:指定方法对应的operation的名字。

!如果你对你的WebService方法没有啥特殊要求的话,该参数可以不写,那将会使你的所有的方法发布出去。

2、发布服务

 public static void main(String[] args) {
Endpoint.publish("http://localhost:8088/calculator",
new CalculatorService());
}

 

这里publish方法需要两个参数:

  • address:服务对外暴露的用于调用服务的地址
  • implementor:服务的实现对象

启动这个Server类,就可以访问服务了。要测试服务有没有启动,可以输入http://localhost:8088/calculator?wsdl,如果一切正常,就可以看到一个wsdl定义内容,表示服务已经成功启动。

3、客户端程序的调用

客户端的代码建议使用wsimport 去生成(前提:在你的电脑上已经配置了JDK的环境变量)

直接在CMD中运行:

wsimport -keep -p com.st.client http://localhost:8088/calculator?wsdl

-p : 定义生成包的包名(可以不写)

然后将生成的java类放到项目中进行调用

!使用java发布WebService,默认是发布到了JDK的WEB容器中了,但在具体的项目中,更多的是有独立WEB容器(eg:Tomcat),所有这里只是对此做个简单的介绍。

JAX-WS 学习一:基于java的最简单的WebService服务的更多相关文章

  1. 基于 Java NIO 实现简单的 HTTP 服务器

    1.简介 本文是上一篇文章实践篇,在上一篇文章中,我分析了选择器 Selector 的原理.本篇文章,我们来说说 Selector 的应用,如标题所示,这里我基于 Java NIO 实现了一个简单的 ...

  2. 基于CXF框架下的SOAP Webservice服务端接口开发

    最近对webservice 进行入门学习,网上也是找了很多的学习资料.总得感觉就是这了解点,那了解点.感觉不够系统,不够容易入门.差不多断断续续看了一个星期了,今天小有成果,把客户端,服务端都搞定了. ...

  3. Netty4.0学习笔记系列之三:构建简单的http服务(转)

    http://blog.csdn.net/u013252773/article/details/21254257 本文主要介绍如何通过Netty构建一个简单的http服务. 想要实现的目的是: 1.C ...

  4. Spark3学习【基于Java】3. Spark-Sql常用API

    学习一门开源技术一般有两种入门方法,一种是去看官网文档,比如Getting Started - Spark 3.2.0 Documentation (apache.org),另一种是去看官网的例子,也 ...

  5. 基于java mail实现简单的QQ邮箱发送邮件

    刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 S ...

  6. 基于java实现的简单区块链

    技术:maven3.0.5 + jdk1.8   概述 区块链是分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实现不同节点之间建立信任.获取权益的 ...

  7. 基于java实现的简单网页日历功能,有兴趣得可以把它转换到前端实现

    之前做项目的时候,因为要用到不同日期显示不同的内容,就自己做了一个日期的显示和选择功能,今天抽空把以前的代码理了一下,顺便就把之前做的日期功能给拿出来回顾一下,大家可以提点意见,帮忙完善下设计.先上一 ...

  8. Vue学习笔记-基于CDN引入方式简单前后端分离项目学习(Vue+Element+Axios)

    一  使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7  (Windows x86- ...

  9. Java完成最简单的WebService创建及使用(REST方式,Jersey框架)

    前言: 一直以来都对WebService感兴趣,但因为难以理解WebService到底是什么,所以了解甚少.周二的时候有个跟我关系比较好的同事想要自己写个WebService的小Demo,希望能够做成 ...

随机推荐

  1. jquery ajax提交json格式的数据,后台接收并显示各个属性

    我的表单如下: <form onsubmit="return false"> <ul> <li><span>用户名</span ...

  2. java 版本SQLHelper

    package com.jack.SQLHelper; import java.sql.*;import java.util.logging.*;import javax.swing.table.*; ...

  3. Arcgis API for Android之GPS定位

    欢迎大家增加Arcgis API for Android的QQ交流群:337469080 先说说写这篇文章的原因吧,在群内讨论的过程中,有人提到了定位的问题,刚好,自己曾经在做相关工作的时候做过相关的 ...

  4. Hash表题目整数hash-HDOJ1425(转载)

      哈希表(散列表)的基本原理:使用一个下标范围比较大的数组来存储元素,一般通过设计一个函数(哈希函数,即散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,然后用该数组单元来存储对应 ...

  5. Android Fragment详解(六):Fragement示例

    把条目添加到动作栏 你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptio ...

  6. VCS仿真 Dump Memory

    VCS仿真 Dump Memory 两种方法 vcs联合verdi生成fsdb文件 vcs生成vpd文件 VCS联合verdi生成fsdb文件 1.testbench中加入如下语句: initial ...

  7. SSH 服务启动时出现如下错误:fatal: Cannot bind any address

    注意:本文相关配置及说明已在 CentOS 6.5 64 位操作系统中进行过测试.其它类型及版本操作系统配置可能有所差异,具体情况请参阅相应操作系统官方文档. 问题描述 云服务器 ECS (Elast ...

  8. Asp.Net中的消息处理---MSMQ系列学习(一)

    刚刚毕业一年,比较浮躁,上次面试被问到消息队列,觉得非常的惭愧因为不知道,所以下定决心一定要学会使用它.以前只是听说过有这么个东西,要说是什么,在什么场景下使用却是无从知晓,因为自己也确实没有在项目中 ...

  9. HashMap陷入死循环的例子

    //使用这个例子可以模拟HashMap陷入死循环的效果,可能需要执行多次才会出现. 1 package com.hanzi; import java.util.HashMap; public clas ...

  10. tableview 分割线置最左边的解决方法

    首先在viewDidLoad方法加入以下代码: if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { [se ...