【WebService】快速构建WebService示例

 1 package com.slp.webservice;
 2
 3 import javax.jws.WebService;
 4
 5 /**
 6  * Created by sanglp on 2017/2/25.
 7  * 接口
 8  */
 9 @WebService
10 public interface IMyService {
11     public int add(int a,int b);
12     public  int minus(int a,int b);
13 }
package com.slp.webservice;

import javax.jws.WebService;

/**
 * Created by sanglp on 2017/2/25.
 * 实现
 */
@WebService(endpointInterface = "com.slp.webservice.IMyService")
public class MyServiceImpl implements IMyService {
    @Override
    public int add(int a, int b) {
        System.out.println(a+"+"+b+"="+(a+b));
        return a+b;
    }

    @Override
    public int minus(int a, int b) {
        System.out.println(a+"-"+b+"="+(a-b));
        return a-b;
    }
}
package com.slp.webservice;

import javax.xml.ws.Endpoint;

/**
 * Created by sanglp on 2017/2/25.
 * 服务
 */
public class MyServer {
    public static void main(String [] args){
        String address="http://localhost:8888/ns";
        Endpoint.publish(address,new MyServiceImpl());

    }
}

访问http://localhost:8888/ns?wsdl得到的页面

<?xml version="1.0" encoding="UTF-8"?>
<!-- Published by JAX-WS RI (http://jax-ws.java.net). RI‘s version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. -->
<!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI‘s version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. -->
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" name="MyServiceImplService" targetNamespace="http://webservice.slp.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservice.slp.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<types>
<xsd:schema>
<xsd:import schemaLocation="http://localhost:8888/ns?xsd=1" namespace="http://webservice.slp.com/"/>
</xsd:schema>
</types>
<message name="add">
<part name="parameters" element="tns:add"/>
</message>
<message name="addResponse">
<part name="parameters" element="tns:addResponse"/>
</message>
<message name="minus">
<part name="parameters" element="tns:minus"/>
</message>
<message name="minusResponse">
<part name="parameters" element="tns:minusResponse"/>
</message>
<portType name="IMyService">
<operation name="add">
<input message="tns:add" wsam:Action="http://webservice.slp.com/IMyService/addRequest"/>
<output message="tns:addResponse" wsam:Action="http://webservice.slp.com/IMyService/addResponse"/>
</operation>
<operation name="minus">
<input message="tns:minus" wsam:Action="http://webservice.slp.com/IMyService/minusRequest"/>
<output message="tns:minusResponse" wsam:Action="http://webservice.slp.com/IMyService/minusResponse"/>
</operation>
</portType>
<binding type="tns:IMyService" name="MyServiceImplPortBinding">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="add">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="minus">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="MyServiceImplService">
<port name="MyServiceImplPort" binding="tns:MyServiceImplPortBinding">
<soap:address location="http://localhost:8888/ns"/>
</port>
</service>
</definitions>
package com.slp.webservice;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * Created by sanglp on 2017/2/25.
 */
public class TestClient {
    public static void main(String [] args) throws MalformedURLException {
       //创建访问wsdl服务地址的url
        URL url = new URL("http://localhost:8888/ns?wsdl");
        //通过QName指明服务的具体消息
        QName sname = new QName("http://webservice.slp.com/","MyServiceImplService");
        //创建服务
        Service service = Service.create(url,sname);
        //实现接口
        IMyService ms=service.getPort(IMyService.class);
        System.out.println(ms.add(12,33));
        //以上服务有问题,依然依赖于IMyService接口
    }
}

webService三要素:

SOAP,WSDL,UDDI.soap用来描述传递消息的格式,wsdl用来描述如何访问具体的接口,uudi用来管理,分发,查询webservice.

SOAP=RPC+HTTP+XML

SOAP简单的理解就是这样的一个开放协议:采用HTTP作为底层通讯协议

RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。RPC的描叙可能不大准确,因为SOAP一开始构思就是要实现平台与环境的无关性和独立性,每一个通过网络的远程调用都可以通过SOAP封装起来,包括DCE(Distributed Computing Environment ) RPC CALLS,COM/DCOM CALLS, CORBA CALLS, JAVA CALLS,etc。

SOAP 使用 HTTP 传送 XML,尽管HTTP 不是有效率的通讯协议,而且 XML 还需要额外的文件解析(parse),两者使得交易的速度大大低于其它方案。但是XML 是一个开放、健全、有语义的讯息机制,而 HTTP 是一个广泛又能避免许多关于防火墙的问题,从而使SOAP得到了广泛的应用。但是如果效率对你来说很重要,那么你应该多考虑其它的方式,而不要用 SOAP。

wsdl讲解:
types:定义访问的类型
message:SOAP
portType:指明服务器的接口,并且通过operation绑定相应的消息,其中in表示参数,out表示返回值
binding:指定传递消息所用的格式
service:指定服务所发布的名称

时间: 2024-10-15 04:41:09

【WebService】快速构建WebService示例的相关文章

使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuery 快速构建强大的 mashup

http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/ 简介 Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许

SpringBoot | 第三十四章:CXF构建WebService服务

前言 上一章节,讲解了如何使用Spring-WS构建WebService服务.其实,创建WebService的方式有很多的,今天来看看如何使用apache cxf来构建及调用WebService服务. 前言 一点知识 何为Apache-CXF 关于JAX-WS规范 常用注解介绍 SpringBoot整合CXF实例 服务端构建 客户端调用 异常捕获 自定义拦截器 服务端拦截器 客户端拦截器 参考资料 总结 最后 老生常谈 一点知识 何为Apache-CXF Apache CXF是一个开源的Serv

Webservice 快速开发

WebService 快速开发指南 1. 根据endpoint下载内容,生成wsdl 2. 3. 4. Service definition Browse 选择wsdl文件 5.书写main 函数. 6.可打包成jar使用.

JBoss 系列九十九:Rest WebService jBPM 6 集成示例

概述 jBPM 6 提供 Rest API 供第三方应用整合使用 jBPM 6,本文演示如果通过 Rest API: 启动流程 获取流程实例信息 启动 User Task 完成 User Task jBPM 6 中使用 RestEasy 实现 Rest WebService ,所以我们通过 Rest 客户端 API 与 jBPM 6 所提供的 Rest API 交互. 本文所使用的流程如下 如上流程只有一个 User Task 节点,User Task 执行开始和执行结束都输出相关提示.流程 I

【webservice】使用命令wsimport构建WebService客户端

wsimport命令介绍 在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方.该工具可以用于非Java的服务器,如:用C#编写的WebService,通过wsimport则生成Java的客户端实现.对于命令的使用方法,我们以开放的中文简体字与繁体字转换Web Service接口为例,如下: 在命令提示符中使用如下命令: wsimport -keep -p com.zhj2f

Linux安装Axis C构建WebService服务

在安装Axis C++之前有两个组件是必须安装的,分别是Apache HTTP Server以及用于处理XML的程序Xerces:为了编译Axis以及Apache HTTPD,你的Linux机器还应该装有gcc编译器. 3个部件的都采用源码安装,它们都有类似的步骤: 上传并解压安装包 设置环境变量 利用configure生成Makefile 编译安装到usr/local/对应目录下 本文部署路径为apache安装在/usr/local/apache2,Axis2C 1.6 安装到/usr/loc

xfire构建webservice项目步骤以及使用

简单搭建xfire开源软件的webservice开发及其步骤: 1.创建好一个web工程,引入xfire下的jar包,注意lib下的和xfire-all.jar 2.定义接口: Java代码   package com.iteye.webservice; public interface IHelloService { public String sayHelleWorld(String inputStr); }3.接口实现: Java代码   package com.iteye.webserv

cxf构建webservice的两种方式

一.简介 对于基于soap传输协议的webservice有两种开发模式,代码优先和契约优先的模式.代码优先的模式是通过编写服务器端的代码,使用代码生成wsdl:契约优先模式首先编写wsdl,再通过wsdl生成服务器端的代码.对于代码优先的模式在使用cxf构建webservice 一文中已经做出介绍,这里主要介绍第二种方式. 二.wsdl文件结束 一般wsdl文件结构如下: <?xml version='1.0' encoding='UTF-8'?> <wsdl:definitions x

[开源]WebApi 快速构建示例

实现代码:MasterChief.DotNet.ProjectTemplate.WebApi Demo Code:https://github.com/YanZhiwei/MasterChief.ProjectTemplate.WebApiSample Nuget : Install-Package MasterChief.DotNet.ProjectTemplate.WebApi 实现WebApi开发中诸如授权验证,缓存,参数验证,异常处理等,方便快速构建项目而无需过多关心技术细节: 欢迎St