wsdl文件,wsdlreader:Xml parser fail at的报错怎么解决?
wsdl文件,wsdlreader:Xml parser fail at的报错怎么解决?详细介绍
本文目录一览: 怎么生成wsdl文件
以soapui软件为例,生成wsdl文件的方法为:
1、首先打开soapui软件,点击“file”。
2、然后选择“NewSOAPProject”选项,点击“Brower”。
3、接着进入计算机窗口选择文件夹。
4、随后点击“OK”按钮即可。
soapUI是一个开源测试工具,通过soaphttp来检查、调用、实现WebService的功能、负载、符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans和intellij中使用。把一个或多个测试套件组织成项目,每个测试套件包含一个或多个测试用例,每个测试用例包含一个或多个测试步骤,包括发送请求、接受响应、分析结果、改变测试执行流程等。
wsdlreader:Xml parser fail at的报错怎么解决?
wsdlreader:Xml parser fail at是WSDL解析过程中的错误报告。这个错误通常发生在SOAP客户端试图解析WSDL文档并创建SOAP消息时。要解决这个问题,我们可以尝试以下步骤:
检查WSDL文件的语法和结构是否正确。请确保WSDL文件的语法正确,并且符合WSDL规范和约定。特别是,请检查命名空间、服务、端点、操作、消息等元素是否正确声明和定义。
检查网络连接和权限是否正常。请确保网络连接正常,并且您具有访问WSDL文件所在位置的权限。如果WSDL文件托管在远程服务器上,则需要检查网络连接是否正常,并且您是否具有足够的权限下载该文件。
使用其他工具进行WSDL解析和SOAP消息创建。如果上述步骤无法解决问题,则可能需要考虑使用其他工具进行WSDL解析和SOAP消息创建。例如,您可以尝试使用其他SOAP客户端库(如Apache CXF、Spring Web Services等)来处理WSDL文档和SOAP消息。
请注意,某些SOAP客户端库(例如.NET Framework自带的WCF客户端)可能存在与WSDL文件格式或内容不兼容的问题。在这种情况下,您可能需要手动编辑WSDL文件或调整SOAP客户端库的配置,以使其与WSDL文件兼容。
总之,要解决wsdlreader:Xml parser fail at的报错问题,我们需要仔细检查WSDL文件的语法和结构,确保网络连接和权限正常,并使用其他工具进行WSDL解析和SOAP消息创建。同时,我们还应该注意一些SOAP客户端库存在的与WSDL文件格式或内容不兼容的问题。
Spring-ws 自动生成wsdl 修改请求默认Request后缀的问题
Spring关于webservice的框架
可以实现配置化自动生成wsdl文件与基于注解的自动序列化和反序列化
出现的问题:
1、想利用自动生成正确的wsdl文件
满足条件:默认的请求与响应的结尾Request与Response
Spring一贯的约定大于配置,约定的soap请求报文需要以Request结尾,soap响应报文需要以Response结尾,这是在给的spring-ws中硬编码实现的
如果想生成自定义的soap报文格式需要重写覆盖spring-ws的默认配置 DefaultWsdl11Definition
同时重写SuffixBasedMessagesProvider与SuffixBasedPortTypesProvider,关于后缀的问题
配置类
@EnableWs
@Configuration
public class WebServiceConfig {
? ??????@Bean(name ="Invoke")
????????public Wsdl11Definition defaultWsdl11Definition(XsdSchema srmSchema) {
? ? ? ? ? ? ? ? //未解决默认请求后缀为Request才能正确生成wsdl文件的问题,
? ? ? ? ? ? ? ? // 重写WSDL生成的实现类,覆盖默认的DefaultWsdl11Definition
? ? ? ? ? ? ? ? //总体在于xml关键标签元素的渲染判断
? ? ? ? ? ? ? ? MyWsdl11Definition definition =new MyWsdl11Definition();
? ? ? ? ? ? ? ? definition.setPortTypeName("InvokePort");
? ? ? ? ? ? ? ? definition.setTargetNamespace(Constant.NAMESPACE_BOI);
? ? ? ? ? ? ? ? definition.setLocationUri("/ws");
????????????????definition.setSchema(srmSchema);
????????????????definition.setRequestSuffix("");//后缀修改,可以为空,而不是默认的Request
????????????????return definition;
????????}
}
2. 访问spring-ws的wsdl,默认url.wsdl而不是习惯用的url?wsdl
当然需要修改也可以实现
WSDL文件出错?
该common.xsd文件可能包含WSDL中使用的类型定义.尝试手动下载文件(URL应该在WSDL中),然后将文件保存在WSDL文件旁边.
WSDL文件是什么?
wsdl是一个接口描述 主要是给用户生成客户端用的 依据wsdl的描述 (参数 ,服务名之类) 在客户端生成调用服务器接口的方法 wsdl只是一个接口服务描述
Web service描述语言(WSDL)。
当程序员坐到电脑前,想要使用Web service的时候,其的工具(如Visual Studio)无法给其提供任何帮助,因为这些工具根本就不了解Web service。
解决方法是:
用机器能阅读的方式提供一个正式的描述文档.Web service描述语言(WSDL)
就是这样一个基于XML的语言,用于描述Web service及其函数、参数和返回值.因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
这将是一个很大的好处.一些最新的开发工具 既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码。
WSDL用来提供对服务的描述 ,它的主要构成要素有五个:
1)Types:定义WSDL定义中所用到的数据类型,即XML Schema Types。
2)Message :对一组消息的输入和输出参数的定义。
JAX-WS用什么命令从JAVA代码生成WSDL文档?
你好,使用java自带的wsgen命令生成wsdl文件,前提是需要开发机器上安装并配置好了java环境变量。
操作步骤如下:
在cmd下,切换到项目(wsproject)目录下,输入如下命令:D:\wsproject>wsgen -cp WebRoot/WEB-INF/classes/ -r WebRoot/WEB-INF/wsdl -s src -d WebRoot/WEB-INF/classes -wsdl name.zeal.service.MySrv
执行完毕后,会在WebRoot/WEB-INF/wsdl下生成两个文件:MySrvService.wsdl和MySrvService_schema1.xsd
如果接口客户端只能用一个wsdl文件,那就得使用内嵌模式的WSDL文件命令生成单个文件了。示例:D:\wsproject>wsgen -cp WebRoot\WEB-INF\classes\ -r WebRoot/WEB-INF/wsdl -s src -d WebRoot/WEB-INF/classes -wsdl -inlineSchemas name.zeal.service.MySrv
注意事项:如果要用到wsgen,则必须需要对Service实现的Java代码进行标注注解,否则wsgen无法识别到这是一个WebService
如何打开wsdl文件
webservice的发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。
注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的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 = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
//直接引用远程的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("http://192.168.0.100:8080/ca3/services/caSynrochnized");
} 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();
}
}
}
什么是wsdl
你可能会自己写一套文档,
你甚至可能会口头上告诉需要使用你的Web
service的人。这些非正式的方法至少都有一个严重的问题:
当程序员坐到电脑前,想要使用你的Web
service的时候,他们的工具(如Visual
Studio)无法给他们提供任何帮助,
因为这些工具根本就不了解你的Web
service。解决方法是:
用机器能阅读的方式提供一个正式的描述文档。Web
service描述语言(WSDL)
就是这样一个基于XML的语言,用于描述Web
service及其函数、参数和返回值。因为是基于XML的,
所以WSDL既是机器可阅读的,又是人可阅读的,
这将是一个很大的好处。一些最新的开发工具
既能根据你的Web
service生成WSDL文档,又能导入WSDL文档,
生成调用相应Web
service的代码。
==============================
==============================
====================================WSDL用来提供对服务的描述
,它的主要构成要素有五个:
1)Types:
定义WSDL定义中所用到的数据类型,即XML
Schema
Types
2)Message
:
对一组消息的输入和输出参数的定义
wsdl是一个接口描述 主要是给用户生成客户端用的 依据wsdl的描述 (参数 ,服务名之类) 在客户端生成调用服务器接口的方法 wsdl只是一个接口服务描述
读懂WSDL
1. WSDL 是什么
WSDL 指网络服务描述语言 (Web Services Description Language)。 是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。
2. WSDL 文档结构
WSDL 文档是利用这些主要的元素来描述某个 web service 的:
元素
定义
最重要的 WSDL 元素,它可描述一个 web service可被执行的操作以及相关的消息。
可以把
元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。
用于描述一个操作的数据元素。每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。
web service 使用的数据类型定义。为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。
web service 使用的通信协议元素。为每个端口定义消息格式和协议细节。
一个 WSDL 文档的主要结构
l 抽象定义
Types 独立与机器和语言的类型定义
Messages 包括函数参数(输入与输出分开)或文档描述
PortTypes 引用消息部分中消息定义来描述函数签名(操作名、输入参数、输出参数)
2 具体定义
Bindings PortTypes部分的每一操作在此绑定实现
Services 确定每一绑定的端口地址
文档形式为:
definition of types........
definition of a message....
definition of a port.......
definition of a binding....
WSDL 文档可包含其它的元素,比如 extension 元素,以及一个 service 元素,此元素可把若干个 web services 的定义组合在一个单一的 WSDL 文档中。
2.1.WSDL文档实例
欢迎光临DIY部落,点击这里查看更多文章教程......
参考地址:http://www.diybl.com/course/3_program/java/javajs/2008315/104672.html
WSDL概述
WSDL就是描述XML Web服务的标准XML格式,WSDL由Ariba、Intel、IBM和微软等开发商提出。它用一种和具体语言无关的抽象方式定义了给定Web服务收发的有关操作和消息。就其定义来说,你还不能把WSDL当作一种对象接口定义语言,例如,CORBA或COM等应用程序体系结构就会用到对象接口定义语言。 WSDL保持协议中立,但它确实内建了绑定SOAP的支持,从而同SOAP建立了不可分割的联系。所以,当我在这篇文章中讨论WSDL的时候,我会假定你把SOAP作为了你的通讯协议。
————————————————————————————
WSDL协议已经被提交给了Internet标准组织W3C审批,目前还处于“确认提交”状态。W3C维持着正规的标准化系统同时提交提案必须经过确定的一套批准过程才能最终成为官方协议。在这种情况下,WSDL的地位,照外行看,至少标准组织在考虑让其成为将来可能标准中的一部分。如果你对这方面的情况感兴趣,或碰巧是一位特关心结果的“失眠症患者”,那么你不妨到W3C网站上去读读有关的建议标准。
用WSDL说明服务
作为一种基于XML的标准,如果你对XML具有一定的了解,那么WSDL的结构对你就不会陌生了。WSDL文档由服务用来描述数据类型的一组元素、服务可以收到的“消息”以及关联每条消息的SOAP绑定组成。
清单A就是一份简单的WSDL文档,该文档同W3C网站公布的WSDL示范文本是一样的,它说明了一种股票行情服务(这也是相当标准的一种Web服务)。
再仔细阅读清单A,你可以看到,文档首先以标准的XML头开头,其中包含了一个版本标识,而文档的根元素则被称为definitions。
Definitions元素可以采用若干种可选属性,这些属性说明文档同时定义文档其余部分使用的名称空间(namespace)。在这种情况下,定义被分配了一个名字(StockQuote),某些名称空间定义是根据以下常规前缀缩写制定的:
tns—“this namespace”的缩写,包含被定义服务的主名称空间
xsdl—XML Schema (XSD)名称空间,用于定义文档中的类型
soap—SOAP绑定采用的名称空间
接下来,为了定义服务的接口需要在type元素内定义所需要的任何复杂类型。这里你必须注意使用标准的XSD句法(属性),它是创造数据类型定义最为适合的方法。不过,如果你愿意,WSDL也能扩展使用不同的类型定义系统。
消息概述
按WSDL的用法,消息可以是传递给某一服务公布对象上的方法的任何参数或者方法被调用之后的任何返回结果。为了继续使用股票行情这个Web服务例子,单一定义方法多半如以下伪代码所示:
floatgetLastTradePrice(string tickerSymbol)
这样,就像你从清单A所看到的那样,文档中定义了两条消息,一条代表方法的输入参数tickerSymbol(GetLastTradePriceInput消息)另一条代表该方法的返回值(GetLastTradePriceResult消息)——最新的股票价格。
操作把消息组织到一起而且抽象地代表方法定义。在我们的例子中,这两条消息都在 GetLastTradePrice操作元素下的getLastTradePrice对象方法定义中组织起来。在一个 WSDL文件中的所有操作又都挨个在portType元素内分组。
WSDL文档的余下部分采用服务器上的侦听端点(binding 元素)绑定消息同时把端口定义同单一服务实体(service元素)组合起来。清单A的例子就定义了通过SOAP采用服务所需要的绑定。
WSDL工具
你可以手工创建WSDL文件,不过,你还可以采用相当多的工具通过WSDL来为你自动处理和定义Web服务。推荐工具软件如下:
Omniopera—一图形用户界面的WSDL、XML和XSD编辑器
Microsoft的SOAP Toolkit—一种工具包,其中包括根据WSDL定义创建COM接口的向导程序,还包括根据COM接口创建WSDL的向导程序
IBM的Web Services Toolkit—一种工具包,其中包括产生WSDL和SOAP部署说明的向导程序
参考网址:
http://iask.sina.com.cn/b/11632650.html
java中wsdl文件怎么生成
原则上,你可以先把JAVA生成.net的文件,然后根据以下其中一个方法,转变为WSDL
在.NET中有三种方式生成WSDL:
1.在Web Service的URL后面加上WDSL需求,如下:
http://localhost/webExamples/simpleService.asmx?WSDL
2.使用disco.exe。在命令行中写下如下的命令:
disco http://localhost/webExamples/simpleService.asmx
3.使用System.Web.Services.Description命名空间下提供的类
每个 WSDL 文件的根元素都是
,必须在其中提供服务的完整描述。首先,必须在
元素中提供各种名称空间的声明。
元素包含一个或多个 < portType > 元素,每个元素都是一系列 operation。可以将单个portType元素看作是将各种方法组成类的一个逻辑分组。应该将每个Types称为服务,因此整个 WSDL 文件将成为一个服务集合。
在每个服务内可以有几个方法或者 operation,WSDL 通过
元素来引用它们。
下面是一个最简单的WSDL例子
<definitions name="MobilePhoneService"
targetNamespace="www.mobilephoneservice.com/MobilePhoneService-interface"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.mobilephoneservice.com/MobilePhoneService"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
.......
.......
.......
.......
java webservice怎么生成wsdl文件
在大多数情况下我们都需要为我们的服务提供一个WSDL文件,而 Axis2's Java2WSDL 是专门用来生成WSDL文件的D专用工具,如果你要在命令行模式下进行生成WSDL文件,首先需要保证你的环境变量AXIS2_HOME是否已经配置OK,同时还要保证把%AXIS2_HOME%\bin加入到你的path环境中,要生成 WSDL文件,首先要保证你的class能够编译成功,而且已经编译成功,然后进入class文件编译后的根目录(在JBuilder中是classes,在Eclipse中是bin目录)这时,生成WSDL文件的准备工作已经OK。\x0d\x0a\x0d\x0a下面是生成WSDL文件时的可选参数和参数说明:\x0d\x0a---------------------------------------------------------------------------------\x0d\x0aUsage java2wsdl -cn : class file name\x0d\x0a-o : output file location\x0d\x0a\x0d\x0a-cp : list of classpath entries - (urls)\x0d\x0a\x0d\x0a-tn : target namespace\x0d\x0a\x0d\x0a-tp : target namespace prefix\x0d\x0a\x0d\x0a-stn : target namespace for schema\x0d\x0a\x0d\x0a-stp : target namespace prefix for schema\x0d\x0a\x0d\x0a-sn : service name\x0d\x0a\x0d\x0a-of : output file name for the WSDL\x0d\x0a\x0d\x0a-st : style for the WSDL\x0d\x0a\x0d\x0a-u : use for the WSDL\x0d\x0a\x0d\x0a-l : address of the port for the WSDL\x0d\x0a\x0d\x0a-nsg : fully qualified name of the class that implements NamespaceGenerator\x0d\x0a\x0d\x0a-p2n [,,] ...\x0d\x0a\x0d\x0a-efd : Setting for elementFormDefault (defaults to qualified)\x0d\x0a\x0d\x0a-afd : Setting for attributeFormDefault (defaults to qualified)\x0d\x0a\x0d\x0a-xc : Extra class for which schematype must be generated.\x0d\x0aUse as : -xc class1 -xc class2 ...\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a典型地,进入你的工程的二进制编译根目录,执行命令模板如下:\x0d\x0ajava2wsdl -cp . -cn [PACKAGENAME].[CLASSNAME]-of [FILENAME].wsdl\x0d\x0a\x0d\x0a现在我们假设在samples.helloworld.service.axiom;包下面有个HelloWorldService类,工程的类文件编译后存放在build\classes目录下,那么,首先进入该目录中,然后执行以下命令:\x0d\x0ajava2wsdl -cp . -cn samples.helloworld.service.axiom.HelloWorldService -of HelloWorldService.wsdl\x0d\x0a\x0d\x0a执行后的CMD提示如下说明已经成功执行了:\x0d\x0a\x0d\x0aUsing AXIS2_HOME: D:\axis2-1.1.1\x0d\x0aUsing JAVA_HOME: C:\Program Files\Java\jdk1.5.0_06