java详解soap+webservice_cfx实例
javawebservice接口调用实例

Java Web Service 是一种轻量级的、基于标准的 Web 协议进行通讯的服务。
它允许在异构系统之间进行交互,并支持跨评台。
在本篇文章中,我们将介绍如何在 Java 中使用 Web Service 接口进行调用的实例。
1. 确定 Web Service 接口我们需要确定要调用的 Web Service 接口。
通常情况下,我们可以通过 WSDL(Web Services Description Language)文档来获取接口的相关信息,包括接口的位置区域、方法名以及参数列表等。
2. 创建 Java 项目在 Eclipse 或者其他 Java 开发环境中,我们可以创建一个新的 Java 项目。
在项目中,我们需要引入相关的 Web Service 库,以便在代码中进行调用。
3. 生成客户端代码通过 WSDL 文档,我们可以使用工具来生成客户端代码。
这些工具通常包括 wsimport(用于生成客户端代码)等。
生成的客户端代码将包含接口的相关信息,以便我们在代码中进行调用。
4. 编写调用代码在生成客户端代码之后,我们可以编写调用代码来实现对 Web Service 接口的调用。
在代码中,我们需要首先创建对应的 WebService 客户端实例,然后通过该实例来调用接口中的方法。
5. 编译和运行完成代码编写之后,我们需要对代码进行编译,并运行相应的测试。
在运行的过程中,我们可以观察接口的调用情况,以及调用结果。
6. 处理异常情况在实际的调用过程中,我们经常会遇到各种异常情况,比如网络连接失败、接口调用超时等。
我们需要在代码中添加相应的异常处理逻辑,以保证程序的稳定性和可靠性。
通过以上步骤,我们可以实现在Java 中对Web Service 接口的调用。
通过这种方式,我们可以实现不同系统之间的数据交互,实现数据共享和系统集成。
我们也可以利用 Web Service 在不同评台之间实现数据的传输和处理,为企业的信息化建设提供更多的可能性。
java webservice几种调用方式

java webservice几种调用方式Java Web Service是一种流行的技术,用于通过网络在不同系统之间实现通讯和集成。
在Java中,有多种方式可以调用Web Service。
下面将介绍几种常用的调用方式。
1.使用SOAP(Simple Object Access Protocol)协议SOAP是一种基于XML的通讯协议,可以在网络上使用HTTP、SMTP等协议发送和接收消息。
在Java中,可以使用SOAP协议调用Web Service。
SOAP使用WSDL(Web Services Description Language)来描述Web Service的接口和功能。
可以使用轻量级的SOAP框架Apache CXF或Metro来创建和调用SOAP Web Service。
调用方式主要包括以下几步:-创建一个Java类来表示Web Service的接口,并使用注解来定义接口的操作。
-使用工具,如Apache CXF或Metro,将该类生成WSDL文档。
-使用WSDL文档生成客户端代码,以便在调用Web Service时使用。
-创建一个客户端程序,通过调用生成的客户端代码来调用Web Service的方法。
2.使用JAX-WS(Java API for XML Web Services)标准JAX-WS是一种Java的Web Service规范,它提供了一种简单的方式来创建和调用Web Service。
JAX-WS提供了注解,用于将Java类转换为Web Service,并且可以使用Java的代理类来调用Web Service 的方法。
调用方式包括以下几步:-创建一个Java类,并用@WebService注解来标记它作为一个Web Service的实现。
-在该类中定义Web Service的操作,并使用@WebMethod注解来标记这些方法。
-使用工具,如JDK的wsimport命令或Eclipse的WebService工具来生成客户端代码。
Java发送SOAP请求调用WebService,解析SOAP报文

Java发送SOAP请求调⽤WebService,解析SOAP报⽂https:///Peng_Hong_fu/article/details/80113196记录测试代码SoapUI调⽤路径http://localhost:8082/*/webservices/**Service?wsdlimport ng.StringUtils;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.xpath.DefaultXPath;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import .HttpURLConnection;import .URL;import java.util.Base64;import java.util.Collections;import java.util.List;/*** 模拟soapUI调⽤WebService,解析返回报⽂* Created by PengHongfu 2018-04-26 15:36*/public class TestSoap {//测试环境地址public static String INVOICE_WS_URL = "http://localhost:8082/*/webservices/**Service";public static void main(String[] args) throws Exception {String sid = "SID值";String content = "报⽂内容,jOSN格式";String tranSeq = "UUID";String tranReqDate = "2018-04-24";StringBuffer stringBuffer = testWebService(sid, content, tranSeq, tranReqDate);// 打印HTTP响应数据System.out.println(stringBuffer);//处理返回数据String xmlResult = stringBuffer.toString().replace("<", "<");String rtnCode = getXmlMessageByName(xmlResult, "rtnCode");//报⽂返回状态码,0表⽰正常,3表⽰错误String message = getXmlMessageByName(xmlResult, "message");//返回信息,主要是状态码不正常时抛出String body = getXmlMessageByName(xmlResult, "body");//返回正⽂数据,需要base64解密if ("0".equals(rtnCode)) {//查询成功if (StringUtils.isNotBlank(body)) {//解密base64加密数据Base64.Decoder decoder = Base64.getDecoder();byte[] encodedText = body.getBytes();String decrypt = new String(decoder.decode(encodedText), "UTF-8");System.out.println(decrypt);}} else {//查询失败}}// 调⽤WSprivate static StringBuffer testWebService(String sid, String content, String tranSeq, String tranReqDate) throws Exception {//拼接请求报⽂String sendMsg = appendXmlContext(sid, content, tranSeq, tranReqDate);// 开启HTTP连接InputStreamReader isr = null;BufferedReader inReader = null;StringBuffer result = null;OutputStream outObject = null;try {URL url = new URL(INVOICE_WS_URL);HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();// 设置HTTP请求相关信息httpConn.setRequestProperty("Content-Length",String.valueOf(sendMsg.getBytes().length));httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");httpConn.setRequestMethod("POST");httpConn.setDoOutput(true);httpConn.setDoInput(true);// 进⾏HTTP请求outObject = httpConn.getOutputStream();outObject.write(sendMsg.getBytes());if (200 != (httpConn.getResponseCode())) {throw new Exception("HTTP Request is not success, Response code is " + httpConn.getResponseCode());}// 获取HTTP响应数据isr = new InputStreamReader(httpConn.getInputStream(), "utf-8");inReader = new BufferedReader(isr);result = new StringBuffer();String inputLine;while ((inputLine = inReader.readLine()) != null) {result.append(inputLine);}return result;} catch (IOException e) {throw e;} finally {// 关闭输⼊流if (inReader != null) {inReader.close();}if (isr != null) {isr.close();}// 关闭输出流if (outObject != null) {outObject.close();}}}//拼接请求报⽂private static String appendXmlContext(String sid, String content, String tranSeq, String tranReqDate) {// 构建请求报⽂StringBuffer stringBuffer = new StringBuffer("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +"<soapenv:Envelope xmlns:soapenv=\"/soap/envelope/\" xmlns:com=\"http://com.foresee.top.service/\">\n" +" <soapenv:Body>\n" +" <ns1:doService xmlns:ns1=\".chinatax.gt3nf.nfzcpt.service/\">\n" +" <reqXml><![CDATA[<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +"<tiripPackage xmlns:xsi=\"/2001/XMLSchema\" version=\"1.0\" xsi:type=\"tiripPackage\">\n" +" <sessionId/>\n" +" <service>\n" +" <sid>" + sid + "</sid>\n" +" <version>1.0</version>\n" +" <tranSeq>+" + tranSeq + "</tranSeq>\n" +" <tranReqDate>" + tranReqDate + "</tranReqDate>\n" +" </service>\n" +" <bizContent>\n" +" <content>" + content + "</content>\n" +" <paramList>\n" +" <param>\n" +" <name>docType</name>\n" +" <value>json</value>\n" +" </param>\n" +" <param>\n" +" <name>className</name>\n" +" <value>GGG</value>\n" +" </param>\n" +" </paramList>\n" +" </bizContent>\n" +"</tiripPackage>\n" +"]]></reqXml>\n" +" </ns1:doService>\n" +" </soapenv:Body>\n" +"</soapenv:Envelope>");return stringBuffer.toString();}//解析报⽂,根据末节点名称获取值private static String getXmlMessageByName(String xmlResult, String nodeName) throws DocumentException {Document doc = DocumentHelper.parseText(xmlResult);DefaultXPath xPath = new DefaultXPath("//" + nodeName);xPath.setNamespaceURIs(Collections.singletonMap("ns1", ".chinatax.gt3nf.nfzcpt.service/"));List list = xPath.selectNodes(doc);if (!list.isEmpty() && list.size() > 0) {Element node = (Element) list.get(0);return node.getText();}return "";}}针对下⾯的报⽂格式,取节点值:<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="/soap/envelope/"><soap:Body><ns1:doServiceResponse xmlns:ns1=".chinatax.gt3nf.nfzcpt.service/"><return><
WebService接口说明文档文档说明本文档主要讲述如何用C Sharp创建一个简单的Web Service接口,并使用Java调用这个Web Service接口。
准备工作系统环境:安装JDK1.6或更新版本开发工具:Microsoft Visual Studio 2012、MyEclipse 10.5、axis2-1.6.2C Sharp服务端1.首先,创建一个Web Service项目。
依次点击:文件—新建—项目,在弹出的新建项目窗口中选择Web下的 空 Web 应用程序。
如下图:2.接下来我们需要创建我们的Web Service接口实现文件。
鼠标右击我们的项目,依次点击:添加—新建项,在弹出窗口中选择Web 服务。
可修改新建项的文件名,注意文件名后缀后.asmx。
如下图:新建完成后我们的项目结构如下:3.打开我们新建的MyService.asmx下的MyService.asmx.cs文件,可以看到其中已经有默认的HelloWorld方法。
我们可以直接运行查看下运行的效果,效果如下图:点击HelloWorld,再点击调用可以看到页面返回:4.接下来我们完善我们的Web Service接口功能。
主要对Web Service接口进行参数类型的测试,文本型、布尔型、数值型、类(Class)等。
新增Add()等运算方法:新增strcat()连接字符串方法:新增GetBool()返回布尔值方法:新增GetTest()返回测试类,并新增Test类运行我们的项目,可以看到我们的结果如下图:点击add方法测试:输入add的参数i和j点击调用按钮,可以看到返回计算结果:5.到此为止我们C Sharp创建的Web Service程序完成。
接下来看Java如何调用我们的Web Service接口。
Java调用Web Service准备对于一个Web Service接口我们当前只知道访问的地址,我们如何用Java去访问接口呢?已知Web Service接口地址:http://localhost:11766/MyService.asmx?WSDLJava调用Web Service的方式有以下1.使用HttpClient2.使用Xfire3.使用axis2本文档示例选择的是axis2,首先到axis2网站下载axis2,网址:/axis2/java/core/download.cgi当前最新版本1.6.2。
java调用sap pi webservice实例

要调用SAP PI的Web服务,您需要使用Java的Web服务客户端。
以下是一个简单的示例,演示如何使用Java调用SAP PI 的Web服务。
首先,您需要使用Java的`wsimport`工具从WSDL文件生成Java类。
假设您的WSDL文件名为`MyService.wsdl`,则可以使用以下命令生成Java类:```shellwsimport -keep MyService.wsdl```这将生成一个名为`MyService`的Java类,其中包含Web服务的所有端点。
接下来,您可以使用以下代码调用SAP PI的Web服务:```javaimport com.sap.aii. PI_Service_URL;import com.sap.aii.pi.ws.*;import com.sap.aii.pi.ws.soap.WS_HTTP_SOAP;public class SAP_PI_Client {public static void main(String[] args) throws Exception {WS_HTTP_SOAP wsHttpSoap = new WS_HTTP_SOAP();wsHttpSoap.setServiceURL(PI_Service_URL.getPIInstance(" your_pi_instance"));MyService myService = new MyService();MyPortType myPort = myService.getMyPort();String result = myPort.myMethod("param1", "param2"); System.out.println(result);}}```在此示例中,我们首先创建一个`WS_HTTP_SOAP`对象,并将其服务URL设置为SAP PI实例的URL。
java webservice调用方式及解析

java webservice调用方式及解析摘要:一、Java WebService简介二、Java WebService调用方式1.基于HTTP的调用2.基于SOAP的调用3.基于REST的调用三、Java WebService解析1.WSDL文件解析2.SOAP消息解析3.XML消息解析正文:一、Java WebService简介Java WebService是一种基于Java技术的Web服务,它允许不同平台、不同编程语言的应用程序相互通信。
Java WebService遵循JAX-WS(Java API for XML Web Services)规范,利用XML、SOAP、WSDL等技术来实现服务的发布、发现和调用。
二、Java WebService调用方式1.基于HTTP的调用基于HTTP的调用是指使用HTTP协议传输XML数据来进行WebService调用。
这种方式简单、易实现,但不够灵活。
优点是兼容性较好,可以跨平台、跨语言。
2.基于SOAP的调用基于SOAP(Simple Object Access Protocol)的调用是一种更复杂的WebService调用方式。
它使用XML文档来表示消息,并通过HTTP传输。
SOAP消息包含三个部分:Header、Body和Footer。
Header用于传递消息的元数据,如消息版本、编码方式等;Body是消息的主体,包含具体的方法调用和参数;Footer用于传递消息的额外信息。
3.基于REST的调用基于REST(Representational State Transfer)的调用是一种基于HTTP 协议的调用方式。
它将WebService暴露为一系列资源(Resource),并通过HTTP动词(GET、POST、PUT、DELETE)进行操作。
RESTful WebService 具有较好的可读性和实用性,易于理解和开发。
三、Java WebService解析1.WSDL文件解析WSDL(Web Services Description Language)文件是描述WebService接口和消息格式的一种XML文档。
java-调用Webservice接口

java 调用webservice的各种方法总结现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!!由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和大家一起来研究研究webservice的各种使用方法。
一、利用jdk web服务api实现,这里使用基于SOAP message 的Web 服务1.首先建立一个Web services EndPoint:package Hello;import javax.jws.WebService;import javax.jws.WebMethod;import javax.xml.ws.Endpoint;@WebServicepublic class Hello {@WebMethodpublic String hello(String name) {return "Hello, " + name + "\n";}public static void main(String[] args) {// create and publish an endpointHello hello = new Hello();Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", hello);}}2.使用apt 编译Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,会生成jaws目录3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示4.使用wsimport 生成客户端使用如下:wsimport -p . -keep http://localhost:8080/hello?wsdl这时,会在当前目录中生成如下文件:5.客户端程序:1class HelloClient{2public static void main(String args[]) {3 HelloService service = new HelloService();4 Hello helloProxy = service.getHelloPort();5 String hello = helloProxy.hello("你好");6 System.out.println(hello);7 }8}9以上方法还稍显繁琐,还有更加简单的方法二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的利用xfire开发WebService,可以有三种方法:1一种是从javabean 中生成;2 一种是从wsdl文件中生成;3 还有一种是自己建立webservice步骤如下:用myeclipse建立webservice工程,目录结构如下:首先建立webservice接口,代码如下:1package com.myeclipse.wsExample;2//Generated by MyEclipse34public interface IHelloWorldService {56 public String example(String message);78} 接着实现这个借口:1package com.myeclipse.wsExample; 2//Generated by MyEclipse34public class HelloWorldServiceImpl implements IHelloWorldService { 56 public String example(String message) {7 return message;8 }910} 修改service.xml 文件,加入以下代码:1<service>2 <name>HelloWorldService</name>3 <serviceClass>4 com.myeclipse.wsExample.IHelloWorldService5 </serviceClass>6 <implementationClass>7 com.myeclipse.wsExample.HelloWorldServiceImpl8 </implementationClass>9 <style>wrapped</style>10 <use>literal</use>11 <scope>application</scope>12 </service> 把整个项目部署到tomcat服务器中,打开浏览器,输入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl,可以看到如下:然后再展开HelloWorldService后面的wsdl可以看到:客户端实现如下:1package com.myeclipse.wsExample.client;23import .MalformedURLException;4import .URL;56import org.codehaus.xfire.XFireFactory;7import org.codehaus.xfire.client.Client;8import org.codehaus.xfire.client.XFireProxyFactory;9import org.codehaus.xfire.service.Service;10import org.codehaus.xfire.service.binding.ObjectServiceFactory;1112import com.myeclipse.wsExample.IHelloWorldService;1314public class HelloWorldClient {15public static void main(String[] args) throws MalformedURLException, Exception {16// TODO Auto-generated method stub17Service s=new ObjectServiceFactory().create(IHelloWorldService.class);18XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());19String url="http://localhost:8989/HelloWorld/services/HelloWorldService";2021 try22 {2324 IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);25 String st=hs.example("zhangjin");26 System.out.print(st);27 }28 catch(Exception e)29 {30 e.printStackTrace();31 }32 }3334}35 这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net 做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:1public static void main(String[] args) throws MalformedURLException, Exception {2 // TODO Auto-generated method stub3 Service s=new ObjectServiceFactory().create(IHelloWorldService.class);4 XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire()); 567//远程调用.net开发的webservice8Client c=new Client(new URL("/webservices/qqOnlineWebService.asmx?wsdl"));9 Object[] o=c.invoke("qqCheckOnline", new String[]{"531086641","591284436"});1011//调用.net本机开发的webservice12Client c1=new Client(new URL("http://localhost/zj/Service.asmx?wsdl"));13Object[] o1=c1.invoke("HelloWorld",new String[]{});1415}三、使用axis1.4调用webservice方法前提条件:下载axis1.4包和tomcat服务器,并将axis文件夹复制到tomcat服务器的webapp文件夹中这里我就说一下最简单的方法:首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入http://localhost:8989/axis/HelloWorld.jws?wsdl,就会得到一个wsdl文件,其客户端调用方法如下:1import javax.xml.rpc.Service;2import javax.xml.rpc.ServiceException;3import javax.xml.rpc.ServiceFactory;45import .MalformedURLException;6import .URL;7import java.rmi.RemoteException;89import space.QName;1011public class TestHelloWorld {121314 public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {15 // TODO Auto-generated method stub1617 String wsdlUrl ="http://localhost:8989/axis/HelloWorld.jws?wsdl";18 String nameSpaceUri ="http://localhost:8989/axis/HelloWorld.jws";19 String serviceName = "HelloWorldService";20 String portName = "HelloWorld";2122 ServiceFactory serviceFactory = ServiceFactory.newInstance();23 Service afService =serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, serviceName));24 HelloWorldInterface proxy = (HelloWorldInterface)afService.getPort(new QName(nameSpaceUri, portName),HelloWorldInterface.class);25 System.out.println("return value is "+proxy.getName("john") ) ;2627 }2829}30四、使用axis2开发webservice(这里首先感谢李宁老师)使用axis2 需要先下载axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip/axis2/同理,也需要将axis2复制到webapp目录中在axis2中部署webservice有两种方法,第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明下面分别说明使用方法:1.pojo方式:在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。
java webservice接口调用案例

角色:文章写手文章主题:Java WebService接口调用案例尊敬的客户,在您指定的主题下,我将为您撰写一篇关于Java WebService接口调用案例的文章。
文章将从基础知识入手,逐步深入,以确保您能全面理解和灵活应用这一主题。
一、Java WebService基础知识1.1 什么是Web ServiceWeb Service是一种基于XML标准来进行网络服务的应用程序接口(API)。
它允许不同的应用程序在网络上互相通信,实现远程程序调用(RPC)。
1.2 Java中的Web Service在Java中,可以使用JAX-WS(Java API for XML Web Services)来创建和调用Web Service。
通过JAX-WS,可以方便地构建和部署基于XML的Web服务,实现跨评台、跨语言的通信。
二、Java WebService接口调用实例2.1 创建Web Service客户端在Java项目中引入WebService客户端的依赖包,并生成客户端代码。
可以创建一个Java类作为WebService的客户端,调用WebService 提供的接口方法。
2.2 实现WebService接口调用在客户端类中,可以实例化WebService的服务类,并通过该实例调用WebService提供的方法。
可以通过传递参数来调用WebService接口,获取返回结果,并进行相应的处理和展示。
2.3 错误处理和异常处理在进行WebService接口调用时,需要注意错误处理和异常处理。
可以通过try-catch-finally语句来捕获异常,并进行适当的处理,以确保程序的稳定性和健壮性。
三、个人观点和总结在我看来,Java WebService接口调用是一项非常重要和有价值的技能。
它可以帮助我们实现不同系统之间的通信和数据交换,实现业务逻辑的解耦和扩展。
通过学习和掌握Java WebService接口调用,我们可以更好地应用和拓展在实际项目开发中,提高系统的可维护性和扩展性。
java webservice xml soap 方法名

java webservice xml soap 方法名一、Java Web Service简介Java Web Service是一种基于Java技术的Web服务,它可以使用XML、SOAP和其他协议与其他应用程序进行通信。
Java Web Service使用Java SE平台或Java EE平台实现,可以通过Java开发工具包(JDK)或Java EE开发工具包(J2EE)创建。
二、XML SOAP简介XML(可扩展标记语言)是一种用于描述数据结构和文档结构的标记语言。
SOAP(简单对象访问协议)是一种基于XML的协议,用于在分布式系统中交换信息。
SOAP消息由四个部分组成:XML声明、DOCTYPE声明、根元素和嵌套元素。
三、创建Java Web Service1.安装和配置Java开发环境(JDK或J2EE)。
2.使用Java IDE(如Eclipse、IntelliJ IDEA等)创建一个新的Java Web Service项目。
3.在项目中添加必要的库和依赖。
4.编写Java Web Service代码,实现方法签名、端点接口等。
四、编写SOAP请求和响应1.创建一个SOAP请求:使用XML编辑器(如Notepad、XMLSpy等)编写一个包含请求方法、参数和消息体的SOAP请求。
2.创建一个SOAP响应:在Java Web Service中编写方法,接收SOAP请求并返回SOAP响应。
五、调用Java Web Service1.使用SOAP客户端库:在客户端应用程序中,使用Java SOAP客户端库(如Apache Axis、JAX-WS等)发送SOAP请求。
2.使用HTTP请求:通过HTTP POST请求向Java Web Service发送数据。
六、示例:Java Web Service实现与调用1.创建一个简单的Java Web Service,如CalculatorService,包含方法:add、subtract、multiply 和divide。
soap调用webservice接口 java 代码

soap调用webservice接口 java 代码SOAP(Simple Object Access Protocol)是一种基于XML的协议,在Web服务中用于在不同的应用程序之间进行通信。
在Java中,可以使用Java的标准库和一些开源工具来调用SOAP Web服务接口。
下面是一个使用Java代码调用SOAP Web服务接口的参考内容:1. 导入所需的库和类:```javaimport javax.xml.soap.*;import java.io.ByteArrayOutputStream;import java.io.InputStream;import .HttpURLConnection;import .URL;```2. 创建SOAP消息,并设置消息的内容:```java// 创建SOAP消息工厂MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage soapMessage = messageFactory.createMessage(); // 创建SOAP消息的部分SOAPPart soapPart = soapMessage.getSOAPPart();// 创建SOAP消息的EnvelopeSOAPEnvelope envelope = soapPart.getEnvelope();// 创建SOAP消息的BodySOAPBody body = envelope.getBody();// 在Body中添加要调用的方法和参数QualifiedName qualifiedName = new QName("<命名空间>", "<方法名>");SOAPBodyElement bodyElement =body.addBodyElement(qualifiedName);// 如果需要添加参数值,可以使用以下方式://bodyElement.addChildElement("参数名").addTextNode("参数值");```3. 创建SOAP连接,并发送SOAP消息:```java// 创建SOAP连接SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();SOAPConnection connection =connectionFactory.createConnection();// 设置目标SOAP Web服务的URLURL url = new URL("<Web服务的URL>");// 发送SOAP消息,并接收响应SOAPMessage response = connection.call(soapMessage, url);```4. 解析SOAP响应,并获取返回的数据:```java// 获取SOAP响应的Body部分SOAPBody responseBody = response.getSOAPBody();// 获取返回结果的值// 可以根据需要来解析和处理返回的数据NodeList nodeList = responseBody.getElementsByTagName("<元素名>");String result = nodeList.item(0).getTextContent();```5. 关闭SOAP连接:```javaconnection.close();```以上是一个基本的SOAP调用的参考代码,实际使用时,需要根据具体的SOAP接口定义和要调用的方法及参数进行调整。
WebserviceSOAP传输序列化总结以及webservice之序列化以及反序列化实例

WebserviceSOAP传输序列化总结以及webservice之序列化以及反序列化实例一、所有Webservice中传递的对象都必须能够序列化,这个是作为在网络之间传输的必要条件。
XML WebService和SOAP标准支持的数据类型如下:1.基本数据类型.标准类型,如:int float bool DateTime string等基本数据类型2.枚举.支持枚举Enum定义的类型3.自定义对象.可以传递任意基于自定义类或结构创建的对象。
但要注意一点:它只能传输数据成员(变量和属性).如果定义了方法,则方法不能进行序列化传输,序列化后只剩下数据成员.4.DataSet对象支持DataSet,切记:不支持DataTable和DataRow,DataSet已经是XML Webservice能够支持的最小的可序列化对象.5.XmlNode对象基于XmlNode的对象可以表示XML文档的一部分.6.数组和集合可以使用任何被支持的类型的数组和简单集合,包括: DataSet对象/XmlNode对象和自定义对象.二、webservice传输过程中常遇到的问题 (1)在调用WebService并给一个方法传递了一个DataRow参数时,运行时会抛出异常: "没法将参数序列化!",如果把DataRow加入到DataSet中,并将DataSet作为参数 传递再运行就O 能对DataRow对象类型进行XML序列化造成的错误.因此了解一下 XML WebService支持序列化的基本数据类型是比较重要的. (2)除了上述的基本类型以外,Webservice服务不能完成直接序列化传输,但是大部分数据结构借助序列化,仍然可以在Webservice上传输。
例如: 在将一个自定义类序列化到文件时,出现如下错误提示: System.Reflection.TargetInvocationException: 调用的目标发生了异常。
SAP和Java系统的Webservice实例

SAP和Java系统的Webservice实例关于Webservice的概念和原理,简单来讲,Webservice是一种基于SOAP传输协议,用WSDL描述,用XML封装数据的接口技术。
由于其跨平台、跨防火墙、开发成本低、开发周期短等优势而被广泛应用,但也有局限性,包括传输负载大、没有统一的实现模型等。
对于Webservice在SAP中的应用,多被用在系统同步要求高,数据传输负载小的接口开发上。
下面以SAP系统和外部系统的交互为例,SAP ECC系统两个、外部系统一个(Java EJB3 Jboss5),分别讲述从SAP到SAP,SAP到Java,Java到Java,Java到SAP的Webservice实例。
一、SAP系统间的Webservice调用SE37创建函数z_calculate,类型要设置为RFC类型,参数都设置为传值:function z_calculate.*"----------------------------------------------------------------------*"*"Local interface:*" IMPORTING*" VALUE(NUMBER1) TYPE STRING*" VALUE(NUMBER2) TYPE STRING*" VALUE(OPERATOR) TYPE STRING*" EXPORTING*" VALUE(RESULT) TYPE STRING*"----------------------------------------------------------------------try .case operator.when '+'.result = number1 + number2.when '-'.result = number1 - number2.when '*'.result = number1 * number2.when '/'.result = number1 / number2.when others.result = 'Not supported!'.endcase.catch cx_root.result = 'Not supported!'.endtry.condense result.endfunction.把函数发布成Webservice其他一路下来默认,完成后服务已经创建;接下来到SOAMANAGER中去找WSDL的URL,进入到Web service Administration界面,Apply selection => Overview => Displayselected Binding's WSDL URL,在右边可以看到了。
java使用soap获取webservice实例

1. 介绍SOAP和Web服务1.1 SOAP是一种基于XML的信息交换协议,用于在计算机网络上交换信息。
它通常用于Web服务,以便不同的应用程序能够相互通信。
1.2 Web服务是一种基于网络的软件系统,它使用标准化的XML消息来交换数据。
1.3 Java是一种支持Web服务开发的编程语言,它提供了丰富的工具和库来简化SOAP和Web服务的使用。
2. 使用Java获取SOAP Web服务实例2.1 导入相关的Java库和工具在Java中,我们可以使用JAX-WS(Java API for XML Web Services)来方便地创建和访问SOAP Web服务。
2.2 创建SOAP客户端我们可以使用JAX-WS提供的工具来生成一个SOAP客户端,用于与Web服务进行交互。
2.3 调用Web服务方法通过SOAP客户端,我们可以调用Web服务提供的方法,并传递相应的参数来获取所需的数据。
2.4 处理Web服务返回的数据在收到Web服务返回的数据后,我们需要对其进行解析和处理,以便在Java应用程序中进行后续操作。
3. 个人观点和理解3.1 在实际的开发中,Java提供了强大且易用的工具和库来处理Web服务和SOAP协议,开发人员可以方便地使用这些工具来与其他应用程序进行通信。
3.2 通过使用Java获取SOAP Web服务实例,开发人员可以更高效地进行应用程序的开发,并且能够借助于Web服务的弹性和可扩展性。
4. 总结4.1 本文介绍了SOAP和Web服务的概念,以及如何在Java中使用SOAP来获取Web服务实例。
4.2 我们讨论了创建SOAP客户端、调用Web服务方法和处理返回数据的步骤。
4.3 我们共享了对使用Java获取SOAP Web服务实例的个人观点和理解,以及Java在Web服务开发中的价值。
通过以上介绍,希望你能更深入地了解如何使用Java来获取SOAP Web服务实例,并在实际开发中运用这些知识。
cfx调用webservice原理

cfx调用webservice原理CFX调用Web服务原理Web服务是一种基于互联网技术的分布式计算模型,它通过使用标准化的通信协议和编程接口,使得应用程序能够在不同的平台、语言和操作系统之间进行交互。
CFX(Component Object Framework,组件对象框架)是一种用于构建软件组件的开发框架,它提供了一套用于组件之间通信的机制和规范。
CFX调用Web服务的原理是通过使用SOAP(Simple Object Access Protocol,简单对象访问协议)进行通信。
SOAP是一种基于XML的消息传输协议,它定义了一种规范的数据格式和消息交换模式,使得不同的系统能够在网络上进行通信。
下面将详细介绍CFX调用Web服务的原理:1. 生成代理类在CFX中,首先需要生成一个用于访问Web服务的代理类。
代理类是一个包含了Web服务方法的本地类,它通过调用Web服务方法来实现与远程服务的通信。
2. 构建SOAP消息CFX通过构建SOAP消息来向Web服务发送请求,并接收响应。
SOAP消息由多个部分组成,包括SOAP头、SOAP体和SOAP标头等。
在构建SOAP消息时,需要根据Web服务的接口定义和参数要求来设置相应的消息结构和内容。
3. 封装SOAP消息CFX将构建好的SOAP消息封装为HTTP请求,并发送给Web服务。
在封装SOAP消息时,需要指定Web服务的URL地址和使用的HTTP方法。
4. 发送请求CFX利用HTTP协议发送封装好的SOAP消息给Web服务。
请求被发送到Web服务的URL地址上,并由Web服务解析和处理。
5. 接收响应Web服务接收到请求后,根据请求内容进行处理,并生成相应的响应消息。
响应消息包含了请求的执行结果和返回值等。
6. 解析响应CFX接收到Web服务的响应后,需要对响应消息进行解析,提取出所需的数据和结果。
解析响应消息需要根据SOAP消息的结构和规范来进行。
java用XFire调用webservice例子

java用XFire开发调用webService例子XFire 概述XFire 是codeHaus 组织提供的一个开源框架,它构建了POJO 和SOA 之间的桥梁,主要特性就是支持将POJO 通过非常简单的方式发布成Web 服务,这种处理方式不仅充分发挥了POJO 的作用,简化了Java 应用转化为Web 服务的步骤和过程,也直接降低了SOA 的实现难度,为企业转向SOA 架构提供了一种简单可行的方式。
XFire 目前最新的版本是1.2.2,目前支持的特性主要包括:支持将Web 服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0 和Castor;支持基于HTTP、JMS、XMPP 等多种协议访问Web 服务;支持多种Web 服务业界重要标准如SOAP、WSDL、Web 服务寻址(WS-Addressing)、Web 服务安全(WS-Security)等;支持JSR181,可以通过JDK5 配置Web 服务;高性能的SOAP 实现;服务器端、客户端代码辅助生成;对Spring、Pico、Plexus 等项目的支持等。
XFire 安装包XFire 框架目前的最新版本是1.2.6,可以访问 下载XFire 框架的安装包,下载时请选择“全部二进制发布包(Binary Distribution in zip package)”,而不仅仅是“XFire jar 文件(Jar of all XFire modules)”。
下载完成后,我们可以将下载的.zip 文件解压缩到任意的文件夹中(后面的章节中使用% XFIRE_HOME % 表示XFire 框架的安装目录),解压缩后形成的文件目录结构如下:api(目录)api 目录中是XFire 框架中所有类(class)对应的API 文档,为开发者使用XFire 完成应用开发提供帮助。
examples(目录)examples 目录中包含了所有随XFire 二进制包发布的实例,包括这些实例的源代码和相关Web 应用配置内容。
soap协议 java实例

soap协议 java实例SOAP(简单对象访问协议)是一种用于在Web服务之间进行通信的协议。
它使用XML作为其消息格式,可以在不同的平台和编程语言之间进行交互。
在Java中,可以使用Java API for XML Web Services(JAX-WS)来实现SOAP协议。
下面是一个使用JAX-WS实现SOAP协议的简单示例。
1. 创建一个Java Web Service首先,我们需要创建一个Java Web Service。
可以使用Eclipse 或其他Java IDE来创建一个新的Web项目。
在项目中创建一个Java 类,并用@WebService注解标记它。
例如,以下是一个简单的Java Web Service类:```import javax.jws.WebService;@WebServicepublic class HelloWorldService {public String sayHello(String name) {return 'Hello ' + name + '!';}}```在这个示例中,我们创建了一个名为HelloWorldService的Web 服务类,并在其中定义了一个名为sayHello的方法,该方法接受一个名为name的字符串参数,并返回一个带有“ Hello”前缀的字符串。
2. 发布Web Service接下来,我们需要将Web服务发布到服务器上,以便客户端可以访问它。
可以使用Endpoint类来发布Web服务。
例如,以下是一个简单的发布代码:```import javax.xml.ws.Endpoint;public class HelloWorldPublisher {public static void main(String[] args) {Endpoint.publish('http://localhost:8080/hello', new HelloWorldService());}}```在这个示例中,我们使用Endpoint.publish方法将HelloWorldService发布到URL http://localhost:8080/hello。
Java编写WebService实例

利用Java编写简单的WebService实例使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService。
下面是一个从编写测试例子到发布WebService,以及编写测试代码的过程介绍。
本例子的WebService提供了两个方法,分别是sayHello和sayHelloToPerson,第一个只是返回一个"Hello"字符串,没有参数,第二个函数接受一个字符串作为参数,返回"Hello 参数值",该例子比较简单,但是清楚的说明了从编写代码到发布为WebService以及测试编写好的WebService全过程。
编写服务代码服务代码提供了两个函数,分别为sayHello和sayHelloToPerson,源代码如下:/** File name: HelloService.java** Version: v1.0** Created on Aug 2, 2008 9:40:20 AM** Designed by Stephen** (c)Copyright 2008*/package com.sinosoft.webservice;/*** @author Stephen** Test web service*/public class HelloService {/*** 不带参数的函数** @return返回Hello字符串*/public String sayHello() {return "Hello";}/*** 带参数的函数** @param name* 名称* @return返回加上名称的欢迎词*/public String sayHelloToPerson(String name) {if (name == null || name.equals("")) {name = "nobody";}return "Hello " + name;}}发布WebService要将上边写的HelloService类发布为WebService,需要先搭建Web应用。
webservice 接口写法 java

webservice 接口写法java全文共四篇示例,供读者参考第一篇示例:WebService是一种基于Web的服务架构,用于使不同的应用程序通过网络进行通信。
在Java中,编写WebService接口是一个很常见的需求,本文将介绍WebService接口的写法以及一些常见的技巧。
一、WebService接口的定义在Java中,可以使用JAX-WS(Java API for XML Web Services)来定义WebService接口。
通过JAX-WS,可以很方便地将Java类转换为Web服务,并使用SOAP(Simple Object Access Protocol)进行通信。
需要在Java类上添加@WebService注解,以标识这个类是一个WebService接口。
接着,需要在方法上添加@WebMethod注解,以标识这个方法是一个WebService操作。
```@WebServicepublic class HelloWorld {@WebMethodpublic String sayHello(String name) {return "Hello, " + name + "!";}}```上面的例子定义了一个简单的WebService接口,包含一个sayHello方法用于返回打招呼的字符串。
要发布一个WebService接口,需要使用Endpoint类来绑定WebService接口的实现类,并指定WebService的访问地址。
上面的例子使用Endpoint.publish方法发布了HelloWorld这个WebService接口,并指定了访问地址为http://localhost:8080/helloWorld。
要调用一个已发布的WebService接口,可以使用JAX-WS提供的工具来生成客户端代码。
生成客户端代码后,就可以像调用本地方法一样调用WebService方法。
详解java开发webservice的几种方式

详解java开发webservice的⼏种⽅式webservice的应⽤已经越来越⼴泛了,下⾯介绍⼏种在Java体系中开发webservice的⽅式,相当于做个记录。
1.Axis2Axis是apache下⼀个开源的webservice开发组件,出现的算是⽐较早了,也⽐较成熟。
这⾥主要介绍Axis+eclipse开发webservice,当然不⽤eclipse也可以开发和发布webservice,只是⽤eclipse会⽐较⽅便。
(3)下载eclipse的axis2插件(4)eclipse安装axis2插件1)在任意⽬录下新建⼀个Axis2⽂件夹,在该⽂件夹下新建eclipse⽬录,在eclipse⽬录中新建plugins⽬录和features⽬录,例如:D:\programSoftware\eclipse-SVN\Axis2\eclipse;2)把下载的axis2插件解压,并把解压的⽂件放到新建的eclipse的plugins⽬录下;3)在%eclipse_home%的⽬录下新建links⽬录,并在links⽬录下新建axis2.link⽂件,内容为:path=D:\programSoftware\eclipse-SVN\Axis2;4)重启eclipse,点击·file-new-other,如果看到Axis2 Wizards,则表明插件安装成功。
(5)安装axis2(6)使⽤eclipse新建web⼯程,创建⼀个普通java类,⾄少包含⼀个⽅法。
(7)发布webservice1)点击eclipse的File-New-other,打开Axis2 Wizards,选择Axis2 Service Archiver,然后Next;2)选择Class File Location,也就是类⽂件存放路径,注意:只选到classes⽬录,不要包括包⽂件夹,然后Next;3)选择Skip WSDL,然后Next4)⼀路Next到Select the Service XML file to be included in the Service archive,勾选Generate theservice xml automatically;5)Service Name-填写你的service名称,Class Name-填写类名称,要包括包名,然后点击load,然后点击Finish,这时webservice就发布成功了;6)然后到%TOMCAT_HOME%/webapps/axis2/WEB-INF/services 看看是否多了⼀个.aar的⽂件;2.Apche CXFCXF开发webservice也是⽐较⽅便和简单的,它和spring的集成可以说是⾮常地好。
java请求webservice 案例

我们需要理解什么是Java请求WebService,以及它在实际应用中的案例和使用场景。
在深入讨论之前,让我们先来回顾一下WebService的基本概念和Java在Web服务中的作用。
一、WebService基本概念WebService是一种通过网络对外提供特定功能的应用程序接口(API),可通过HTTP协议进行访问。
它通常使用XML语言进行数据交互,可以在不同的操作系统和编程语言之间进行通信。
WebService可以被多个不同的客户端访问,实现了跨评台、跨语言的特性。
二、Java在Web服务中的作用Java作为一种广泛应用的编程语言,在Web服务中有着重要的作用。
Java提供了丰富的API和工具,可以方便地创建和使用WebService。
通过Java的相关技术,我们可以轻松实现与WebService的交互和调用,从而实现各种功能和业务需求。
三、Java请求WebService的案例和使用场景下面我们将结合实际案例,介绍Java请求WebService的使用场景和相关技术:1. 场景一:调用天气预报WebService假设我们需要开发一个天气预报功能,可以通过调用第三方的天气预报WebService来实现。
我们可以使用Java编写客户端程序,通过HTTP协议向天气预报WebService发送请求,并获取返回的天气数据,然后在前端页面上展示给用户。
这种场景下,Java请求WebService是非常常见且实用的。
在这个案例中,我们可以使用Java的相关类库和工具,比如HttpURLConnection类、HttpClient库等,来发送HTTP请求和处理响应数据。
通过这些工具,我们可以方便地与天气预报WebService进行交互,并将获取到的天气信息用于自己的应用程序中。
2. 场景二:集成支付接口WebService另外一个典型的案例是集成第三方支付接口的WebService。
比如我们想在自己的电商评台上实现在线支付功能,就可以通过调用支付接口的WebService来实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PortType具体定义了一种服务访问入口的类型,何谓访问入口的类型呢?就是传入/传出消息的模式及其格式。一个PortType可以包含若干个 Operation,而一个Operation则是指访问入口支持的一种类型的调用。在WSDL里面支持四种访问入口调用的模式:
1. 单请求;
WSDL 是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服务访问点。相关的具体部署的服务访问点通过组合就成为抽象的Web服务。
factory.create();
};
public static void main(String[] args) throws InterruptedException{
//启动服务端
new Server();
System.out.println("Server ready ");
WSDL 文档将Web服务定义为服务访问点或端口的集合。在 WSDL 中,由于服务访问点和消息的抽象定义已从具体的服务部署或数据格式绑定中分离出来,因此可以对抽象定义进行再次使用:消息,指对交换数据的抽象描述;而端口类型,指操作的抽象集合。用于特定端口类型的具体协议和数据格式规范构成了可以再次使用的绑定。将Web访问地址与可再次使用的绑定相关联,可以定义一个端口,而端口的集合则定义为服务。因此,WSDL 文档在Web服务的定义中使用下列元素:
* Service - 相关服务访问点的集合。
大家可以参考下图,来理解一下WSDL文档的结构组织:
其中,Types是一个数据类型定义的容器,包含了所有在消息定义中需要的XML元素的类型定义,我将在今后的文章中结合XML Schema来详细说明如何进行类型定义。
Message具体定义了在通信中使用的消息的数据结构,Message元素包含了一组Part元素,每个Part元素都是最终消息的一个组成部分,每个 Part都会引用一个DataType来表示它的结构。Part元素不支持嵌套(可以使用DataType来完成这方面的需要),都是并列出现。
IHelloWorld iHelloWorld = (IHelloWorld)factory.create();
System.out.println("invoke webservice");
System.out.println("message context is:"+iHelloWorld.sayHi("Josen"));
其中,一个可以使用的Web服务应当按照需要选用若干层次的功能,而无需所有的特性。但是无论如何为了实现一个一般意义上的Web服务,具备Web服务的基础特性:跨平台调用和接口可机器识别,那么必需使用WSDL和SOAP。SOAP是用来最终完成Web服务调用的,而WSDL则是用于描述如何使用 SOAP来调用Web服务的。
WSDL文档示例
下例是一个提供股票报价的简单Web服务的 WSDL 定义。该服务支持名为 GetLastTradePrice 的单一操作,这个操作是通过在 HTTP 上运行 SOAP 1.1 协议来实现的。该请求接受一个类型为字符串的 tickerSymbol,并返回类型为浮点数的价格。
//注册WebService接口
factory.setServiceClass(HelloWorld.class);
//设置WebService地址
factory.setAddress("http://localhost:9000/HelloWorld");
本文介绍了通过cfx_2.3.2的原理,和spring整合的过程,以及webservice的基本认证,客户端代码的调用,xml传递对象。入门的不错教程哦,绝对值得一看。
第一步:新建一个webservice接口
@WebService
public interface IHelloWorld {
private Client(){};
public static void main(StringFra bibliotek] args){
//创建WebService客户端代理工厂
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
System.exit(0);
}
}
首先,运行服务端程序
其次,打开浏览器,在地址栏中输入http://localhost:9000/HelloWorld?wsdl(因为cxf自带了一个jetty服务器),查看接口是否发布成功,如里浏览器页面显示下面内容,证明接口发布成功
//发布接口
factory.setAddress("http://localhost:9000/HelloWorld");
factory.setServiceBean(helloWorld);
//创建WebService
Service描述的是一个具体的被部署的Web服务所提供的所有访问入口的部署细节,一个Service往往会包含多个服务访问入口,而每个访问入口都会使用一个Port元素来描述。
Port描述的是一个服务访问入口的部署细节,包括通过哪个Web地址(URL)来访问,应当使用怎样的消息调用模式来访问等。其中消息调用模式则是使用Binding结构来表示。
* Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。
* Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。
* Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
//@WebParam给参数命名,提高可代码可读性。此项可选
public String sayHi(@WebParam(name="text") String text);
}
通过注解@WebService申明为webservice接口
第二步,实现WebService接口
本文所引用的资源主要包括两类,一类是Web服务的技术资源网站,包含了大量Web服务的技术信息,另一类是Web服务“stack"系列技术规范,他们是一个整体的技术体系,包括UDDI、SOAP、WSDL、XML等。本文的最后给出了这些资源的链接,有兴趣的读者可以通过这些资源链接找到所需的内容。
以上三种结构描述了调用Web服务的抽象定义,这三部分与具体Web服务部署细节无关,是可复用的描述(每个层次都可以复用)。如果与一般的对象语言做比较的话,这部分可以堪称是IDL描述的对象,描述了对象的接口标准,但是到底对象是用哪种语言实现,遵从哪种平台的细节规范,被部署在哪台机器上则是后面的元素所描述的。
其中,绿色部分是先前已经定义好的并且广泛使用的传输层和网络层的标准:IP、HTTP、SMTP等。而蓝色部分是目前开发的Web服务的相关标准协议,包括服务调用协议SOAP、服务描述协议WSDL和服务发现/集成协议UDDI,以及服务工作流描述语言WSFL。而橙色部分描述的是更高层的待开发的关于路由、可靠性以及事务等方面的协议。黄色部分是各个协议层的公用机制,这些机制一般由外部的正交机制来完成。
2. 单响应;
3. 请求/响应;
4. 响应/请求。
在这里请求指的是从客户端到Web服务端,而响应指的是从Web服务端到客户端。PortType的定义中会引用消息定义部分的一个到两个消息,作为请求或响应消息的格式。比如,一个股票查询的访问入口可能就会支持两种请求消息,一种请求消息中指明股票代码,而另一种请求消息中则会指明股票的名称,响应消息可能都是股票的价格等等。
//休眠一分钟,便于测试
Thread.sleep(1000*60);
System.out.println("Server exit ");
System.exit(0);
}
}
第四步,创建客户端
public class Client {
return "Hello " + name;
}
}
第三步,创建服务端
public class Server {
private Server(){
IHelloWorld helloWorld = new HelloWorldImpl();
@WebService
public class HelloWorldImpl implements IHelloWorld {
public String sayHi(String name) {
System.out.println("sayHello is called by " + name);
Binding结构定义了某个PortType与某一种具体的网络传输协议或消息传输协议相绑定,从这一层次开始,描述的内容就与具体服务的部署相关了。比如可以将PortType与SOAP/HTTP绑定,也可以将PortType与MIME/SMTP相绑定等。
在介绍了WSDL的主要元素之后,大家会发现,WSDL的设计理念完全继承了以XML为基础的当代Web技术标准的一贯设计理念:开放。WSDL允许通过扩展使用其他的类型定义语言(不光是XML Schema),允许使用多种网络传输协议和消息格式(不光是在规范中定义的这些:SOAP/HTTP,HTTP-GET/POST以及MIME等)。同时WSDL也应用了当代软件工程中的复用理念,分离了抽象定义层和具体部署层,使得抽象定义层的复用性大大增加。比如我们可以先使用抽象定义层为一类 Web服务进行抽象定义(比如UDDI Registry,抽象定义肯定是完全一致的遵循了UDDI规范),而不同的运营公司可以采用不同的具体部署层的描述结合抽象定义完成其自身的Web服务的描述。