标签: wsdl

Jax-ws wsgen生成一个引用公共模式的wsdl

我们正在开发一个具有几十个服务接口的相当大的应用程序.对于每个服务,使用wsgen生成wsdl(使用jaxws-maven-plugin maven插件).对于每个服务,在wsdl中使用不同的命名空间.

服务接口共享一组公共bean(主要是DTO).现在,每个wsdl的XSD中定义了这些公共类的定义,重复了很多信息,这给我们在客户端造成了问题(大量编译时,类不兼容).

首先,我尝试使用schemagen为公共类创建模式,但无法将其传递给wsgen.有没有办法将一个(或多个)常见XSD传递给wsgen并让生成的wsdl(s)引用这些?

我还尝试使用指定自定义命名空间的@XmlRootElement来注释公共类:这次wsgen识别了自定义命名空间,并为每个wsdl生成了一个XSD,但没有在任何地方包含单个(公共)xsd.

有人能指出我这个问题的解决方案吗?

java wsdl jax-ws wsgen

5
推荐指数
0
解决办法
1509
查看次数

使用多个XSD验证针对WSDL的SOAP消息

我一直在网上寻找好几个小时,试图找到一种简单的方法来验证针对WSDL的完整SOAP消息.我知道有很多方法可以使用各种Web服务框架来实现这一点,但我不想这样做,因为要求只是验证一段XML.我可以验证模式,虽然我遇到的问题是有很多模式导入到WSDL中,我不知道应该验证哪一个模式.我可以编写一些实用程序来首先处理WSDL和响应以确定要对哪个XSD进行验证,但我认为这可以使用已建立的库作为单行程完成!

有没有人知道在给定WSDL和多个XSD的情况下验证XML文档的相对简单的方法?

xml validation soap wsdl

5
推荐指数
1
解决办法
1万
查看次数

如何生成wcf服务库项目的wsdl文件?

我的解决方案中有一些Wcf服务库项目(不是Wcf服务应用程序).我必须将项目的.wsdl文件提供给我的同事,他们将使用这些服务.

我怎样才能做到这一点?

提前致谢,

wcf wsdl visual-studio-2010

5
推荐指数
1
解决办法
3万
查看次数

wsdl2java客户端存根仅用于wsdl支持的某些操作?

使用Axis2 Wsdl2Java:有没有办法从wsdl生成相关的客户端代码,但只能用于wsdl中受支持的操作的子集.

也就是说,如果wsdl说过一个有争议的操作,那么只能为一个或两个感兴趣的操作生成客户端存根代码?

我已经为客户WSDL生成了客户端存根,并且生成的存根和支持代码对于我的目的来说太大了> 75MB.

我使用了带有-U选项的Axis2 Wsdl2Java来解压缩绑定,并且由于在尝试使用ADB时出现解析错误,我还必须使用XML bean绑定.

谢谢,

由于我没有收到太多关于此的反馈:我将编辑这个来重述问题,(因为我真的不关心解决方案是如何得出的).

基本上我真正的问题是我正在生成一个相当大的WAR文件,该文件在Tomcat7.0中使用客户端并且它消耗了大量内存.

也许,我不需要/不应该在WAR中捆绑所有生成的类.但在我看来,这些是Stub生成的不可或缺的部分,我相信有一个更优雅的解决方案,而不是我手动挑选出来的东西?

所以我想以另一种方式重述问题:Axis2正在生成一个非常大的WAR文件,它消耗了大量的Tomcat资源.如何缩小此WAR以使其更小/"更轻量级"WAR.

谢谢,

wsdl axis2 wsdl2java xmlbeans

5
推荐指数
1
解决办法
1173
查看次数

如何使用Java调用Web Service

我是Web服务的新手.我需要调用一个Web服务,其定义在http://api.search.live.net/search.wsdl中.我需要使用此Web服务搜索任何关键字.我在网上搜索但找不到任何解决方案.知道如何调用Web服务.我需要使用Java.

java wsdl web-services webservice-client

5
推荐指数
1
解决办法
1361
查看次数

如何在没有访问服务的情况下将WCF WSDL和XSD共享给客户端?

我尝试生成WSDL,然后使用客户端手动在WSDL中找到每个XSD.该服务目前只在我的本地主机上,尚未发布.

客户端收到以下错误:

该文件已被理解,但无法处理.WSDL文档包含无法解析的链接.下载'http:// localhost:xxxx/MyService.svc?xsd = xsd0'时出错.无法连接到远程服务器无法建立连接,因为目标计算机主动拒绝它127.0.0.1:xxxx

如何生成和共享服务WSDL和XSD,以便他们可以开始编写客户端(无需访问服务atm?

编辑 WSDL/XSD中与这些问题相关的问题

WSDL

<xsd:schema targetNamespace="http://tempuri.org/Imports">
    <xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd0" 
           namespace="http://tempuri.org/"/>
    <xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd1"  
           namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
    <xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd2" 
           namespace="**MYNAMESPACE**"/>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

XSD

<xs:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd1" 
  namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
Run Code Online (Sandbox Code Playgroud)

编辑2: 感谢@The Indian Programmmer我能够生成一个代理类来使用此命令进行编程:

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\svcutil.exe" -noconfig -namespace:*,SERVICE.INTERFACE.NAMESPACE -serializer:datacontractserializer https://My-PC/SvrLocation/MyService.svc?wsdl (托管在本地IIS中)

c# wcf xsd wsdl

5
推荐指数
1
解决办法
2万
查看次数

javax.xml.ws.WebServiceException:未定义的端口类型Java Struts SOAP WSDL

好吧,我有一个奇怪的问题,我今天在谷歌和雅虎寻找解决方案近4个小时.我拼命寻找解决方案.

public static String [] checkCardAccount(String cardNumber, String cardIssuer, String securityNumber){

        URL url = null;
        try {
            url = new URL("http://localhost:8999/bankcard?wsdl");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        QName qname = new QName("http://server.bcard.soap.com/","BankCardImplService");

        Service service = Service.create(url,qname);

        BankCard bankcard = service.getPort(BankCard.class);

        return bankcard.getCardClientData(cardNumber, cardIssuer);
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码是我访问SOAP服务的客户端,它确实可以在一个独立的java应用程序中运行,但是当我将它嵌入到我的Java Struts应用程序时,它会在下面显示以下错误

javax.xml.ws.WebServiceException:未定义的端口类型:com.com的com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:349)上的{http://bankcard.api.com/}BankCard位于com.api.bankcard.BankCardClient.checkCardAccount(BankCardClient)的javax.xml.ws.Service.getPort(Service.java:161)中的.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:355) .java:25)在org.apache.struts的org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)的com.action.CardregAction.execute(CardregAction.java:18).在org.apache.commons.chain.impl.ChainBase.execute中的org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)上的chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) ChainBase.java:191)在org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)位于org.apache.smons.chain.ComposableRequestProcessor的org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191).位于org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)的进程(ComposableRequestProcessor.java:283)位于javax.servlet的org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) .http.HttpServlet.service(HttpServlet.java:637),位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)的javax.servlet.http.HttpServlet.service(HttpServlet.java:717) Org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)at org.apache.catalina.valves.ErrorReportValve .invoke(ErrorReportValve.java:102)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)org. apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)at org.apache.tomcat.util.net.JIoEndpoint $ java.lang.Thread.run上的Worker.run(JIoEndpoint.java:489)(Thread.java:662)apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)at org.apache.coyote.http11 .http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)atg.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)at java.lang.Thread.run(Thread.java:662 )apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)at org.apache.coyote.http11 .http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)atg.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)at java.lang.Thread.run(Thread.java:662 )org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)上的StandardEngineValve.invoke(StandardEngineValve.java:109)位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)org …

java soap wsdl struts

5
推荐指数
1
解决办法
1万
查看次数

在Windows 8中使用WSDL Web服务存储C#应用程序:无法解析基类或接口

我在Eclipse中用Java编写了一个简单的WSDL Web服务.以下是该服务的Java代码原型:

public static String vriteAnnouncement(String title, String body){
    ...
}
Run Code Online (Sandbox Code Playgroud)

我使用Microsoft wsdl.exe工具为此WSDL服务生成了一个代理类,并使用Developer Command Prompt Visual Studio 2012中的以下命令将其设为dll:

wsdl /l:CS /protocol:SOAP WriteAnnouncement.wsdl
csc /t:library /r:System.Web.Services.dll /r:System.Xml.dll WriteAnnouncementService.cs
Run Code Online (Sandbox Code Playgroud)

在我的Windows 8商店应用程序中,我添加了对此dll的引用,然后在MainPage.xaml.cs中添加了以下代码:

WriteAnnouncementService was = new WriteAnnouncementService();
Run Code Online (Sandbox Code Playgroud)

当我尝试运行该应用程序时,我收到此错误:

类型'System.Web.Services.Protocols.SoapHttpClientProtocol'在未引用的程序集中定义.
您必须添加对程序集'System.Web.Services,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.
C:\ Users ...\MainPage.xaml.cs第27行第13列

然后我添加了对System.Web.Service的引用并重新构建了应用程序.现在我收到以下错误:

无法解析类型为"System.Web.Services.Protocols.WebClientProtocol"的程序集"System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"中的基类或接口"System.ComponentModel.Component" :\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Web.Services.dll

c# wsdl windows-store-apps

5
推荐指数
1
解决办法
3609
查看次数

DHL trackShipmentRequest - WDSL - PHP - SOAP

第一篇文章,请原谅任何违反论坛规则的行为等.我正在尝试使用DHL api来跟踪货件.

这是我目前的代码

$client = new SoapClient("https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl");
    //$header     = new SoapHeader("https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl", "APICredentials", $auth, false); 
    //$client->__setLocation('https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl');

    $header_part = '<soapenv:Envelope xmlns:rat="https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl"
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header>
    <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-
    secext-1.0.xsd">
    <wsse:UsernameToken wsu:Id="UsernameToken-5" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
    wss-wssecurity-utility-1.0.xsd">
    <wsse:Username>myusername</wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-
    1.0#PasswordText">mypassword</wsse:Password>
    <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-
    1.0#Base64Binary">eUYebYfsjztETJ4Urt8AJw==</wsse:Nonce>
    <wsu:Created>2010-02-12T17:40:39.124Z</wsu:Created>
    </wsse:UsernameToken>
    </wsse:Security>
    </soapenv:Header>';




$soap_var_header = new SoapVar( $header_part, XSD_ANYXML, null, null, null );
$soap_header = new SoapHeader( 'https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack', 'wsse', $soap_var_header, true );
$client->__setSoapHeaders($soap_header);
Run Code Online (Sandbox Code Playgroud)

如果我做

后续代码var_dump($客户 - > __ getFunctions())

我得到以下内容:

array(1) { [0]=> string(83) "trackShipmentRequestResponse trackShipmentRequest(trackShipmentRequest $parameters)" }
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有人知道如何格式化trackShipmentRequest

$client->trackShipmentRequest(what goes here);
Run Code Online (Sandbox Code Playgroud)

这是DHL给我用于soapui的xml的一个例子 …

php soap wsdl

5
推荐指数
1
解决办法
5247
查看次数

WSDL导入'location'属性-vs- XSD导入'schemaLocation'属性

之间的关系是什么:

......特别是location前者的schemaLocation属性与后者的属性之间的关系?

虽然我可以使用目录文件(在JAX-WS/wsimport工具链中)来"覆盖" 元素的schemaLocation属性,xsd:import但似乎我不能locationwsdl:import语句的属性执行相同的操作.

xsd wsdl jax-ws wsimport

5
推荐指数
1
解决办法
7920
查看次数