go语言如何使用wsdl,go语言入门

java web项目怎么使用wsdl文件

webservice的发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都做网站、皋兰网络推广、小程序设计、皋兰网络营销、皋兰企业策划、皋兰品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供皋兰建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的Axis相差很大,最好以apache网站上的例子为准,这里仅仅用于说明其基本用法。

1,直接AXIS调用远程的web service,直接调用模式如下:

import java.util.Date;

import java.text.DateFormat;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import javax.xml.namespace.QName;

import java.lang.Integer;

import javax.xml.rpc.ParameterMode;

public class caClient {

public static void main(String[] args) {

try {

String endpoint = "";

//直接引用远程的wsdl文件

//以下都是套路

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(endpoint);

call.setOperationName("addUser");//WSDL里面描述的接口名称

call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,

javax.xml.rpc.ParameterMode.IN);//接口的参数

call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型

String temp = "测试人员";

String result = (String)call.invoke(new Object[]{temp});

//给方法传递参数,并且调用方法

System.out.println("result is "+result);

}

catch (Exception e) {

System.err.println(e.toString());

}

}

}

2,直接SOAP调用远程的webservice ,这种模式很少用,但是网络上有人贴出来,也转过来 :

import org.apache.soap.util.xml.*;

import org.apache.soap.*;

import org.apache.soap.rpc.*;

import java.io.*;

import java.net.*;

import java.util.Vector;

public class caService{

public static String getService(String user) {

URL url = null;

try {

url=new URL("");

} catch (MalformedURLException mue) {

return mue.getMessage();

}

// This is the main SOAP object

Call soapCall = new Call();

// Use SOAP encoding

soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

// This is the remote object we're asking for the price

soapCall.setTargetObjectURI("urn:xmethods-caSynrochnized");

// This is the name of the method on the above object

soapCall.setMethodName("getUser");

// We need to send the ISBN number as an input parameter to the method

Vector soapParams = new Vector();

// name, type, value, encoding style

Parameter isbnParam = new Parameter("userName", String.class, user, null);

soapParams.addElement(isbnParam);

soapCall.setParams(soapParams);

try {

// Invoke the remote method on the object

Response soapResponse = soapCall.invoke(url,"");

// Check to see if there is an error, return "N/A"

if (soapResponse.generatedFault()) {

Fault fault = soapResponse.getFault();

String f = fault.getFaultString();

return f;

} else {

// read result

Parameter soapResult = soapResponse.getReturnValue ();

// get a string from the result

return soapResult.getValue().toString();

}

} catch (SOAPException se) {

return se.getMessage();

}

}

}

如何使用Web Service进行WSDL逆向生成服务端

使用Web Service进行WSDL逆向生成服务端步骤:

在Eclipse中新建一个WSDL文件

改个名字为“manager.wsdl”。下一步,定义命名空间和协议等信息,默认即行

finish后,会在主工作区出现

这是manager.wsdl的图形化形式,点击“Source”会可查看到源代码

这是默认生成的wsdl,我们要根据我们的项目需要,首先对方法名进行修改。修改之后,右边的input和output也跟着修改了,这两个就是定义plus的输入和输出。 点击input参数“plus”右边的提示箭头

就在这里定义输入参数和和参数类型等信息,因为我们plus(float x, float y)方法中有两个参数x和y,故我们将上图改成两个参数的序列,对比一下方法plus(float x, float y)

返回manager.wsdl视图,选择output参数右边的箭头。设置float plus(float x, float y)方法的返回值及其类型,因其返回值只有一个,我们只须把上面的out的类型改成我们方法中用的float。点击左上角的图标。

回到manager.wsdl,在源代码视图里右键选“Validate”,对xml文档进行检验,如果有错误的,就根据需要修改。

图形化编写的wsdl文档完成了,顺便说一下,方法是可以定义多个的

为简单起见,我们就先以刚才做定义的那个方法为例,看看,如何根据wsdl文件,自动生成Web Service的服务器端

我们New一个Web Service。在Web Service type中选择“Top down Java Bean Web Service”。在Service definition中找到刚才写的那个manager.wsdl文件

Web Service对话框,将服务类型的滑块调到“Develop service”处。接下来,就next – next –- finish就行。它会自动生成Web Service服务端的接口和类,在类中,可找到我们定义的方法,我们只要修改方法plus的方法体,以实现我们要实现的功能即行。

如何写一个简单的Web Service

本Guide利用Eclipse以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程:

1.系统条件:

Eclipse Java EE IDE for Web Developers

Java SE 6

Windows XP

2.基本环境搭建:

1)Java SE6 JDK的安装:下载Java SE6 JDK,双击,安装默认选项进行安装即可。

2)Eclipse的安装与配置:

安装时直接解压。

配置处有两点,WindowPreferencesJavaInstalled JREs确保如下设置:

安装路径可能略有不同。

WindowPreferencesJavaCompiler 确保如下设置:

3.建立Server端工程和相关包与类:

创建一个Java Project,命名为wsServerHelloWorld:

在这个项目下建立包:org.gnuhpc.wsServer

在这个包下边建立类:SayHello

在SayHello.java文件中输入以下代码:

package org.gnuhpc.wsServer;

import javax.jws.WebService;

@WebService

public class SayHello {

private static final String SALUTATION = "Hello";

public String getGreeting(String name) {

return SALUTATION + " " + name;

}

}

其中注意到@WebService ,这个称作annotation或者metadata,Java SE 5中的Web Services Metadata Specification引入的。Java SE 6中对于Web Services规范的升级以及JAX-WS(Java API for XML Web Services)2.0规范,这些升级使得我们Web Services的创建和调用变得更加容易。使用这些新功能,我们可以仅仅使用简单的Annotations注释从一个Java类创建Web Services。开发者将其类和方法之前用该annotations指定,类告诉runtime engine以Web Service的方式和操作来使能该类和方法。这个annotations可以产生一个可布署的Web Service,是一个WSDL映射annotations,将Java源代码与代表Web Service的WSDL元素连接在了一起。

4.使用Ant产生Server端代码:

首先在项目中新建一个文件:build.xml,然后使用OpenWithAntEditor打开,输入以下脚本代码:

project default="wsgen"

target name="wsgen"

exec executable="wsgen"

arg line="-cp ./bin -keep -s ./src -d ./bin

org.gnuhpc.wsServer.SayHello"/

/exec

/target

/project

default指定了默认执行的Target为wsgen,wsgen可以创建一个能够使用WebService的类,它生成所有用于WebService发布的源代码文件和经过编译过的二进制类文件。它还生成WSDL和符合规范的该类的WebService。

Target名称为wsgen,具体执行的命令的参数:

-cp 为类路径

-keep后产生的java文件

-s 产生的源文件放在哪

-d 产生的输出问价放在哪

然后使用Ant Build选项运行:

在成功执行的提示后,我们刷新一下Project

我们在Project区域可以看到,结果如下:

5.分布Web Service

org.gnuhpc.wsServer下建立一个类RunService:

package org.gnuhpc.wsServer;

import javax.xml.ws.Endpoint;

public class RunService {

/**

*@paramargs

*/

public static void main(String[] args) {

System.out.println("SayHello Web Service started.");

Endpoint.publish("" ,

new SayHello());

}

}

运行Run AsJava Application。我们得到结果,说明这个web service的Server端已经启动。

6.查看WSDL:

WindowShow ViewOtherGeneralInternal Web Browser,在其中输入:

你可以看看到底WSDL都记录了哪些信息。看完后可以停止该Server。

7.监测Server

我们创建完Server可以用过Eclipse Web Services Explorer监测Server,

WindowOpen PerspectiveOther JavaEE

打开Eclipse Web Services Explorer

点击右上角的WSDL Page按钮:

单击WSDL Main,在URL中输入: 按Go按钮后出现一下视图:

我们可以触发一个Web Service操作:点击getGreetings,添加一个参数,比如gnuhpc,然后点击Go按钮:

8.创建Client端 工程和相关包与类:

创建一个Java Project,命名为wsClientHelloWorld,在这个项目下建立包:org.gnuhpc.wsClient

9.使用Ant产生Client代码框架:

编写Web service时,可以使用工具来利用WSDL生成进行调用的客户端桩;或者也可以使用底层API来手动编写Web service。前者方便,后者灵活,现在我们通过前者做说明:

新建文件build.xml

NewFilebuild.xml

project default="wsimport"

target name="wsimport"

exec executable="wsimport"

arg line="-keep -s ./src -p org.gnuhpc.wsClient

-d ./bin "/

/exec

/target

/project

注意:wsgen 支持从 Java class 创建 Web services,wsimport 支持从 WSDL 创建 Web services,分别对应于 JAX-RPC 方式下的 Java2WSDL 和 WSDL2Java。要根据发布的WSDL进行创建,这也就是为什么要先运行RunServer的原因了。

运行Server的RunService : Run AsJava Application

运行该Ant脚本,产生Client代码:Run AsAnt Build

运行成功的提示如下:

生成的代码如下:

这一步读取WSDL并生成客户端桩。这些桩是将为我们的代码所用的Java类和接口。这些桩给服务器端功能提供了一个客户端接口。例如,如果我们的服务器提供一个Maths服务,该服务带有一个叫做add的方法。我们的客户端代码将调用桩上的一个方法,而桩实现将对该方法使用参数封装,把Java方法调用变为Webservice请求。这个请求将基于HTTP发送给服务器,而且将使用SOAP作为RPC协议。监听服务器接收该SOAP消息,然后(十有八九)将其转换为服务器处的一次方法调用。

如何使用wsdl 描述rest服务

1. SOAP与WSDL

SOAP(Simple Object Access Protocol)简单对象访问协议,是基于HTTP的传输协议,用来访问远程服务。

区别是SOAP传输的内容是SOAP数据(XML格式),HTTP传输的是HTTP数据。

即,SOAP请求和应答有自己的规范,也就是传输XML文档,XML中定义了操作,数据等。

WSDL是对WebService请求格式的描述,包括方法,参数。

WSDL基于XML,与平台语言无关。

WSDL可以基于SOAP,也可以基于其他传输协议,比如HTTP,FTP,SMTP等。


网页名称:go语言如何使用wsdl,go语言入门
文章地址:http://hbruida.cn/article/hchhep.html