Web服务描述语言(WSDL)是一种基于XML的人类和机器可读语言,用于描述Web服务。它描述了可用的Web服务方法,消息请求和响应结构,可能的故障以及通信和安全要求。此标记不引用任何名为“wsdl”的工具,例如Microsoft的WSDL.EXE。
我有一个 xsd,其中有一个名为 toc 的元素在 xsd 中两次。它会导致 java 类生成错误。现在,我想编写 xml 绑定来解决这个问题。 我有一个 xsd,其中有一个名为 toc 的元素在 xsd 中两次。它会导致 java 类生成错误。现在,我想编写 xml 绑定来解决这个问题。 <jaxb:bindings schemaLocation="../DMS_Dokument.Versenden_response.xsd"> <jaxb:bindings node="xsd:element[@name='toc']"> <jaxb:factoryMethod name="TOC"/> </jaxb:bindings> </jaxb:bindings> 我得到的错误是 原因:无法解析schema。应该提供错误消息 为了避免 JAXB 从 XSD 生成重复的类,您可以使用本地或外部绑定为生成的类定义不同的名称。 <jaxb:bindings node="XPATH"> <jaxb:class name="YourDistinctName"/> </jaxb:bindings> Java 类名重复的一个原因是在全局绑定中使用 toplevel 作用域。 注意: localScoping 属性的值可以是 nested 或 toplevel。此属性描述嵌套 XML 模式组件与嵌套模式派生的 JAXB 类或顶级模式派生的 JAXB 类的 JAXB 绑定。为了避免嵌套组件之间的命名冲突,该属性的默认值是嵌套的。当模式组件嵌套太深或应用程序不希望使用嵌套类或使用 JPA 时(JPA 第 2.1 节,实体必须是顶级类),开发人员可以将 localScoping 自定义为 toplevel。 例如,下载此演示 (zip) 并考虑其 XML 架构 trilogy.xsd,该架构对 Trilogy 书籍进行建模。它在根 trilogy 元素上定义一个 TOC,并为每个 book 定义另一个 TOC。该架构将每个 TOC 定义为匿名类型,并且每个 TOC 都有不同的用途。第一个目录描述了三本书的标题,但第二个目录是每本书的章节列表。两者具有相同的元素名称 <toc>...</toc>,如该 XML 实例 trilogy.xml 所示,但需要不同的 Java 类定义。 当模式被定制为使用 <jaxb:globalBindings localScoping=”toplevel”/> 时,JAXB 会尝试根据一个元素名称生成两种类型,这会导致名称冲突。 为了解决 Java 类名重复问题,演示使用 HiSrc BasicJAXB 项目中的工具来扫描 XSD 并输出这些建议的绑定:trilogy.xjb。例如,这是书 TOC 的装订: <jaxb:bindings node="//xs:element[@name='trilogy']/xs:complexType/xs:sequence/xs:element[@name='book']/xs:complexType/xs:sequence/xs:element[@name='toc']/xs:complexType"> <jaxb:class name="TrilogyBookTocType"/> </jaxb:bindings> 绑定使用 XPATH 选择目标节点,并将 Java 类名称声明为 TrilogyBookTocType。 演示提供了一个 bash 脚本来运行该工具,但它可以像这样手动运行... java -cp \ $HOME/.m2/repository/org/patrodyne/jvnet/hisrc-basicjaxb-tools/2.1.1/hisrc-basicjaxb-tools-2.1.1.jar \ org.jvnet.basicjaxb.util.CreateToplevelXJBindings \ --nested src/main/resources/trilogy.xsd 该工具将其输出发送到 stdout,您可以在其中将其复制/粘贴到绑定文件或架构中。 执行 该演示是一个独立的 Maven 项目。您可以使用以下命令运行测试: mvn -Ptest clean test mvn -Pexec compile exec:java 方法 hisrc-higherjaxb-maven-plugin 配置为使用提供的 trilogy.xsd 模式和绑定文件 trilogy.xjb 生成 JAXB 类。该模式提供了命名空间 "http://org.example/trilogy",JAXB 使用它来使用自己的命名约定创建 Java package 名称。 作为一个选项,可以使用这些 XJC hisrc-basicjaxb-plugins 生成 Java 内置 Object 方法的更高级实现。特别是,示例项目使用 toString 插件来显示未编组的 Trilogy 对象的人类可读表示。 hisrc-basicjaxb-插件 <args> <arg>-no-header</arg> <arg>-XhashCode</arg> <arg>-Xequals</arg> <arg>-XtoString</arg> </args> 注意: 使用 XJC hisrc-basicjaxb-plugins 时,运行时类路径需要 hisrc-basicjaxb-runtime 依赖。 测试 JUnit 测试类 TrilogyTest.java 扫描示例文件并调用方法 checkSample(File sample) 将每个文件提供给测试人员。对于此项目,创建了一个 JAXBContext,并且 samples 路径中的每个文件都被 unmarshaled 为 Trilogy 对象。成功后,每个对象都会被编组以用于日志记录和您的审查。 示范 具有 main(...) 方法的 Java 标准引擎应用程序位于 org.example.trilogy.Main。该应用程序使用以下命令执行: mvn -Pexec compile exec:java -Dexec.args="src/test/samples/trilogy.xml" 免责声明:我是这些HiSrc项目的维护者。
我正在尝试使用 Zeep 加载 WSDL 文件,但是当我这样做时,我收到以下错误: requests.exceptions.SSLError:HTTPSConnectionPool(主机='api-mte.itespp.org',端口=443):超出最大重试次数
编译 WSDL 文件时出现错误/警告 - 但生成的 Java 源代码正常 -Java17 spring boot 3.0
我的要求 spring boot 3.0 Java 17。我的代码使用 jaxb2 插件适用于 java 1.8 spring boot 2.7.11。我已将插件更新为 jaxb30-maven-plugin。自动生成的java代码就可以了。构建是
我正在尝试在 https url 上使用 wsdl。参考如何告诉 Ruby 的 OpenSSL 库忽略自签名证书错误? 当我尝试这个时: ... OpenSSL::SSL::VERIFY_PEER = 打开...
将带有 XSD 的 WSDL 读取到 org.dom4j.io.SAXReader 中的正确方法是什么?有没有办法使用 ZipInputStream 来做到这一点,这样我就不必将其保存到磁盘?
对我的术语表示歉意,我希望我在这里提供足够的信息。我正在 VB.net 中工作,并加载了一个连接的服务 URL,该 URL 拉入了一个 wsdl 文件。复杂类型对象之一...
如何在一个 WSDL 中创建多个方法并在每个方法中创建唯一的属性?
我不知道如何编写WSDL规范。 我尝试在 Soap UI 中执行此操作。 我不知道如何编写 WSDL 规范。 我尝试在 Soap UI 中执行此操作。 我不知道如何编写 WSDL 规范...
如何在Python中使用zeep在SOAP请求中传递“Any”类型参数
我有一个 WSDL,它在所有 SOAP 操作中使用“any”类型作为核心元素 (Element)。请注意,我已将其缩小,因为它相当大: 我有一个 WSDL,它在所有 SOAP 操作中使用“any”类型作为核心元素 (Element)。请注意,我已将其修剪掉,因为它很大: <?xml version="1.0" encoding="utf-8"?> <definitions targetNamespace="urn:xtk:queryDef" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn:xtk:queryDef" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <types> <s:schema elementFormDefault="qualified" targetNamespace="urn:xtk:queryDef"> <s:complexType name="Element"> <s:sequence> <s:any processContents="lax"/> </s:sequence> </s:complexType> <s:element name="ExecuteQuery"> <s:complexType> <s:sequence> <s:element maxOccurs="1" minOccurs="1" name="sessiontoken" type="s:string" /> <s:element maxOccurs="1" minOccurs="1" name="entity" type="tns:Element" /> </s:sequence> </s:complexType> </s:element> <s:element name="ExecuteQueryResponse"> <s:complexType> <s:sequence> <s:element maxOccurs="1" minOccurs="1" name="pdomOutput" type="tns:Element" /> </s:sequence> </s:complexType> </s:element> </s:schema> </types> <message name="ExecuteQueryIn"> <part element="tns:ExecuteQuery" name="parameters" /> </message> <message name="ExecuteQueryOut"> <part element="tns:ExecuteQueryResponse" name="parameters" /> </message> <portType name="queryDefMethodsSoap"> <operation name="ExecuteQuery"> <input message="tns:ExecuteQueryIn" /> <output message="tns:ExecuteQueryOut" /> </operation> </portType> <binding name="queryDefMethodsSoap" type="tns:queryDefMethodsSoap"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="ExecuteQuery"> <soap:operation soapAction="xtk:queryDef#ExecuteQuery" style="document" /> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" /> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" /> </output> </operation> </binding> <service name="XtkQueryDef"> <port binding="tns:queryDefMethodsSoap" name="queryDefMethodsSoap"> <soap:address location="https://xxxxxxxxxxxxxx/nl/jsp/soaprouter.jsp" /> </port> </service> </definitions> 我想在 Python 3 中使用 zeep 生成此有效负载: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:xtk:queryDef"> <soapenv:Header/> <soapenv:Body> <urn:ExecuteQuery> <urn:sessiontoken>xxxxxxx</urn:sessiontoken> <urn:entity> <queryDef schema="nms:recipient" operation="select"> <select> <node expr="@email"/> <node expr="@lastName+'-'+@firstName"/> <node expr="Year(@birthDate)"/> </select> <orderBy> <node expr="@birthDate" sortDesc="true"/> </orderBy> </queryDef> </urn:entity> </urn:ExecuteQuery> </soapenv:Body> </soapenv:Envelope> 但是我一生都无法弄清楚如何管理 WSDL 中的“Any”类型: <s:complexType name="Element"> <s:sequence> <s:any processContents="lax"/> </s:sequence> </s:complexType> 这就是 XML 中“实体”节点所需的类型。我尝试过的所有操作都会导致 zeep 出现异常。 这是我到目前为止所拥有的: # Executes a query and returns the result set def execute_query(session_token): # Load the WSDL locally - not authorised to get from server wsdl_url = os.path.abspath("querydef_dev.wsdl") history = HistoryPlugin() client = Client(wsdl_url, plugins=[history]) execute_query_type = client.get_element("ns0:ExecuteQuery") entity_type = client.get_type("ns0:Element") any_entity = xsd.AnyObject(entity_type, entity_type(_value_1={'queryDef': [{'schema': 'recipients'}]})) params = execute_query_type(entity=any_entity, sessiontoken=session_token) response = client.service.ExecuteQuery(params) if __name__ == '__main__': execute_query('xxxxxxx') 该代码特别给出了此错误: AttributeError: 'dict' object has no attribute 'value'. Did you mean: 'values'? 我想我已经明白了,使用 xsd.AnyObject 来设置。 我尝试了多种与 get_type、get_element 的组合,并使用 **params 和 params 致电服务。一切都以 client.service.ExecuteQuery() 抛出异常结束。 有什么想法我哪里出错了吗? 我找不到以任何有意义的方式使用 AnyObject 的答案。 但是,我确实通过使用 lxml 手动创建“任何”节点上下文来设法使其正常工作。 因此,对于我上面描述的用例: def execute_query(session_token): # Load the WSDL locally - not authorised to get from server wsdl_url = os.path.abspath("querydef_dev.wsdl") history = HistoryPlugin() client = Client(wsdl_url, plugins=[history]) # Construct the query def query_def_element = etree.Element('query_def') query_def_element.set('schema', 'nms:recipient') query_def_element.set('operation', 'select') select_element = etree.SubElement(query_def_element, 'select') node_element = etree.SubElement(select_element, 'node') node_element.set('expr', '@email') node_element2 = etree.SubElement(select_element, 'node') node_element2.set('expr', '"@lastName+"-""+@firstName"') node_element3 = etree.SubElement(select_element, 'node') node_element3.set('expr', 'Year(@birthDate)') order_element = etree.SubElement(query_def_element, 'orderBy') order_node_element = etree.SubElement(order_element, 'node') order_node_element.set('expr', '"@birthDate"') order_node_element.set('expr', 'sortDesc="true') # Construct the final payload data = { "sessiontoken": session_token, "entity": { "_value_1": query_def_element } } # Call the service response = client.service.ExecuteQuery(**data)```
我用 wsimport java 类生成。我导入的 wsdl 请求身份验证。 我用了这个例子: wsimport -Xauthfile C: uth.txt -keep http://example.com/test?wsdl -s c:\path o\sou...
wsdl 生成的 Web 服务客户端无法与已部署的 Web 服务一起使用
我使用 axis2 java2wsdl 实用程序从 java 类生成了 WSDL,如下所示; java2wsdl -o C: emp -cn com.temenos.webservices.customer.CustomerServiceWS 然后我部署了相同的网络...
如何使用 svcutil 从使用限制来隐藏元素的 Web 服务生成 C# WCF 代理?
我正在创建一个或多或少不受我控制的 Web 服务客户端。以下是该架构的简化示例: 我正在创建一个或多或少不受我控制的 Web 服务客户端。这是该架构的简化示例: <xs:complexType name="A"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="1" name="element1" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" name="element2" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="B"> <xs:complexContent> <xs:restriction base="A"> <xs:sequence> <xs:element minOccurs="1" maxOccurs="1" name="element2" type="xs:string" /> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> 简而言之,我们有一个包含所有元素的对象 A。该服务有多种基于 A 的类型,但有限制,因此继承的类型通常小于基本类型 - 此处以类型 B 为例。 在架构查看器(例如 Visual Studio 2010、SoapUI 等中的查看器)中,这看起来符合预期。 A 有 2 个元素,B 只有 1 个(= 元素 2)。 通过使用 svcutil,我获得了类型 A 和 B 中的完整元素集,或者在使用选项时,我收到错误消息,例如: 错误:无法导入命名空间“http://tempuri.org/XMLSchema.xsd”中的类型“B”。通过限制派生的复杂类型 不支持。更改架构以便类型可以映射到数据协定类型,或者使用 ImportXmlType 或使用 不同的序列化器。 在继承类型中隐藏字段/属性并不是我喜欢的做法/道路,但如果我无法让提供者更改 WSDL,似乎我必须这样做。 是否有 svcutil 的替代方案可以正确处理此问题,或者我是否必须手动编码我的代理? 更新1 正如 John Saunders 所指出的,我没有显示 svcutil 建议的结果。这部分是为了保持帖子简短......但这里是: svcutil schema.xsd /importXmlTypes /datacontractonly 结果: [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] [System.Runtime.Serialization.DataContractAttribute(Name="A", Namespace="http://tempuri.org/XMLSchema.xsd")] public partial class A : object, System.Runtime.Serialization.IExtensibleDataObject { private System.Runtime.Serialization.ExtensionDataObject extensionDataField; private string element1Field; private string element2Field; public System.Runtime.Serialization.ExtensionDataObject ExtensionData { get { return this.extensionDataField; } set { this.extensionDataField = value; } } [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false)] public string element1 { get { return this.element1Field; } set { this.element1Field = value; } } [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false)] public string element2 { get { return this.element2Field; } set { this.element2Field = value; } } } [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] [System.Xml.Serialization.XmlSchemaProviderAttribute("ExportSchema")] [System.Xml.Serialization.XmlRootAttribute(IsNullable=false)] public partial class B : object, System.Xml.Serialization.IXmlSerializable { private System.Xml.XmlNode[] nodesField; private static System.Xml.XmlQualifiedName typeName = new System.Xml.XmlQualifiedName("B", "http://tempuri.org/XMLSchema.xsd"); public System.Xml.XmlNode[] Nodes { get { return this.nodesField; } set { this.nodesField = value; } } public void ReadXml(System.Xml.XmlReader reader) { this.nodesField = System.Runtime.Serialization.XmlSerializableServices.ReadNodes(reader); } public void WriteXml(System.Xml.XmlWriter writer) { System.Runtime.Serialization.XmlSerializableServices.WriteNodes(writer, this.Nodes); } public System.Xml.Schema.XmlSchema GetSchema() { return null; } public static System.Xml.XmlQualifiedName ExportSchema(System.Xml.Schema.XmlSchemaSet schemas) { System.Runtime.Serialization.XmlSerializableServices.AddDefaultSchema(schemas, typeName); return typeName; } } 在 Xml 级别上工作是不可取的,并且会迫使我们编写包装器。从一开始就手动编写代理代码会更容易。 svcutil schema.xsd /serializer:XmlSerializer /datacontractonly 给出以下错误,这就是我要求替代工具的原因。 svcutil schema.xsd /serializer:XmlSerializer /datacontractonly 错误:无法在命名空间“http://tempuri.org/XMLSchema.xsd”中键入“B” 被进口。不支持通过限制派生的复杂类型。 更改架构以便类型可以映射到数据契约 类型或使用 ImportXmlType 或使用不同的序列化程序。 如果您使用 /dataContractOnly 选项导入数据合约 类型并收到此错误消息,请考虑使用 xsd.exe 反而。 xsd.exe 生成的类型可以在 Windows 中使用 申请后的沟通基础 服务合同上的 XmlSerializerFormatAttribute 属性。 或者,考虑使用 /importXmlTypes 选项进行导入 这些类型作为 XML 类型与 DataContractFormatAttribute 一起使用 您的服务合同上的属性。 使用 xsd schema.xsd /c 给出继承 A 的类型 B,而不隐藏 element1: [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/XMLSchema.xsd")] [System.Xml.Serialization.XmlRootAttribute("request", Namespace="http://tempuri.org/XMLSchema.xsd", IsNullable=false)] public partial class B : A { } /// <remarks/> [System.Xml.Serialization.XmlIncludeAttribute(typeof(B))] [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/XMLSchema.xsd")] public partial class A { private string element1Field; private string element2Field; /// <remarks/> public string element1 { get { return this.element1Field; } set { this.element1Field = value; } } /// <remarks/> public string element2 { get { return this.element2Field; } set { this.element2Field = value; } } } 错误消息告诉您要么使用 /importXmlTypes 开关,要么更改为使用 XmlSerializer。来自帮助: /importXmlTypes - 配置数据协定 用于导入非数据协定类型的序列化程序 作为 IXmlSerialized 类型。 和 /serializer:XmlSerializer - 生成使用 XmlSerializer 用于序列化和 反序列化
wsimport 对 jax-ws-catalog.xml 有什么作用?
我在网上找到的有关 wsimport 的所有文档似乎对于使用目录文件 (jax-ws-catalog.xml) 的某个方面都有点模糊。我的问题是: 当我生成 Web 服务cl...
任何人都可以指导我如何使用 3PL Central API 发出 PHP SOAP 请求吗? 我有 3PL KEY、登录名、密码和设施 ID。客户端给出的文件是 WSDL 文件、XML 请求文件、XML
在 laravel 中使用 Laminas SOAP 生成具有复杂子类型的 WSDL
我正在尝试弄清楚如何在我的 Laravel 中使用 Laminas SOAP 生成多级 wsdl.. 我也阅读了文档和 chatgpt.. 但我仍然困惑如何设置,这是链接: https://...
我尝试了有关通过 Spring Boot 使用 SOAP Web 服务的教程(入门 - 使用 SOAP Web 服务)。但运行 Maven 构建时不会生成类。我完全没问题...
WSDL 中的 <binding> 和 <portType> 有什么区别?
和似乎都定义了一个操作及其消息。我不太明白,为什么它们都是必要的?
使用DefaultWsdl11Definition自动生成wsdl
我在使用 DefaultWsdl11Definition 自动生成 wsdl 时遇到问题 联系服务操作.xsd 我在使用 DefaultWsdl11Definition 自动生成 wsdl 时遇到问题 联系服务操作.xsd <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://com/blog/samples/webservices/contactservice" xmlns:Contact="http://webservices.samples.blog.com" targetNamespace="http://com/blog/samples/webservices/Contact" elementFormDefault="qualified"> <xsd:import namespace="http://webservices.samples.blog.com" schemaLocation="Contact.xsd" /> <xsd:element name="ContactRequest"> <xsd:complexType> <xsd:sequence> <xsd:element name="Id" type="xsd:integer" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="ContactResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="Contact" type="Contact:Contact" /> </xsd:sequence> </xsd:complexType> </xsd:element> springapp-servlet.xml <mvc:annotation-driven /> <sws:annotation-driven /> <context:component-scan base-package="*" /> <bean id="ContactService" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition"> <property name="schemaCollection"> <bean class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection"> <property name="inline" value="true" /> <property name="xsds"> <list> <value>/xsd/ContactServiceOperations.xsd</value> </list> </property> </bean> </property> <property name="portTypeName" value="ContactService" /> <property name="locationUri" value="http://localhost:8080/SpringWS/ContactService/" /> </bean> web.xml <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>springapp</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springapp</servlet-name> <url-pattern>/jsp/*</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:*.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>webservices</servlet-name> <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class> <init-param> <param-name>transformWsdlLocations</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>contextConfigLocation</param-name> <param-value></param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>webservices</servlet-name> <url-pattern>*.wsdl</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>webservices</servlet-name> <url-pattern>/ContactService/*</url-pattern> </servlet-mapping> 我可以正常启动 Tomcat。然后,我访问这个网址: http://localhost:8080/SpringWS/ContactService/contactService.wsdl 并且浏览器显示空白页面而不是生成的 wsdl。 也许我的配置有问题。有什么想法可以帮助我吗? 谢谢 更正了这个问题,ContactService.wsdl localhost:8080/SpringWS/ContactService/ContactService.wsdl 问题出在您的 web.xml 文件上。尝试为 DispatcherServlet 和 MessageDispatcherServlet 使用不同的上下文文件。 <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> ...... .... <servlet> <servlet-name>webservices</servlet-name> <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class> <init-param> <param-name>transformWsdlLocations</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springws-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 我在运行 Spring Boot 演示时也有类似的经历。如果您的问题和我的一样,那么它is有效。 Spring 发送带有 xml 标头的 wsdl,即 <?xml version="1.0" encoding="UTF-8" standalone="no"?><wsdl:definitions ... 我使用的是 Firefox,它会在显示空白屏幕之前闪烁 wsdl。因此,查看页面源代码会显示完整的 wsdl 文件。 有一个使用 Spring Boot 注释执行此操作的简单可下载示例: https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-webservices
如何使用 wsimport 从 WSDL 文件中仅获取源文件
当我尝试使用 wsimport http://www.webservicex.net/geoipservice.asmx?WSDL 时,该命令仅生成 .class 文件。 当我尝试使用 wsimport -keep -s 目录 http://www.webservicex.net/
我有两个文件,一个是Web服务描述(wsdl),第二个是Web服务中使用的数据结构(xsd)。我什么都没有了,网络服务还不能工作。我需要将它们合并为一个,因为...
当我尝试通过网络服务提交请求时,出现以下异常。 堆栈跟踪如下: 线程“主”com.sun.xml.internal.ws.client.ClientTransportExcep 中出现异常...