xsd - 是否可以在 org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition 中使用 WSDL?

标签 xsd wsdl spring-ws

我正在尝试在 Spring WS 上设置 SOAP,现在我使用如下文件配置 Spring bean:

 <?xml version="1.0" encoding="UTF-8"?>  
 <beans xmlns="http://www.springframework.org/schema/beans"  
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
           xmlns:context="http://www.springframework.org/schema/context"  
           xmlns:sws="http://www.springframework.org/schema/web-services"  
           xsi:schemaLocation="http://www.springframework.org/schema/beans  
                                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
                                    http://www.springframework.org/schema/web-services  
                                    http://www.springframework.org/schema/web-services/web-services-2.0.xsd  
                                     http://www.springframework.org/schema/context  
                                     http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
       <context:component-scan base-package="com.blog.samples.services" />  
       <sws:annotation-driven />  
       <!--  
            Our test service bean  
       -->  
       <bean id="AccountDetailsService" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition" lazy-init="true">  
      <property name="schemaCollection">  
        <bean class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">  
          <property name="inline" value="true" />  
          <property name="xsds">  
            <list>  
              <value>schemas/AccountDetailsServiceOperations.xsd</value>  
            </list>  
          </property>  
        </bean>  
      </property>  
      <property name="portTypeName" value="AccountDetailsService"/>  
      <property name="serviceName" value="AccountDetailsServices" />  
      <property name="locationUri" value="/endpoints"/>  
    </bean>  
  </beans> 

不幸的是,我没有 xsd,我只有描述我的服务的 wsdl。问题是:我可以在这个 spring 配置文件中以某种方式使用我的 wsdl 吗?如果是 - 如何(使用 wsdl 而不是 wsdl)?我知道我可以从 wsdl 中提取 xsd,但只想使用 wsdl。谢谢你。

最佳答案

您可以使用 SimpleWsdl11Definition 而不是 DefaultWsdl11Definition:

通过 XML:

<sws:static-wsdl id="operations" location="[your_location]/[your_wsdl].wsdl"/>

通过 Java 配置:
@Bean(name = "operations")
public SimpleWsdl11Definition wsdl11Definition() {
    SimpleWsdl11Definition s = new SimpleWsdl11Definition();
    s.setWsdl(new ClassPathResource("[your_location]/[your_wsdl].wsdl"));
    return s;
}

"id"和 bean-name 是关于如何访问您的 .wsdl 的标识符。在上述情况下:
http://[your_server]/[url_mapping_from_message_dispatcher]/operations.wsdl

关于xsd - 是否可以在 org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition 中使用 WSDL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30196031/

相关文章:

java - 使用 Camel+Spring WS 发送 SOAP 附件?

java - Maven+Spring 项目无法加载依赖的 xsd 文件

xsd - 用于描述关系数据库模式的标准数据库中性 XSD

xml - 如何在 XSD 中使用 key 和 keyref?

wcf - 从 WSDL 文件生成 C#.net 类

java - 轻松从 RPC/编码的 WSDL 生成 Spring WS 客户端?

java - 替换 Spring PayloadValidatingInterceptor 中的 XML MessageFormatter

java - JAX-WS - 如何创建类型为 xs :any from server side code? 的元素

java - 从 java 连接到 DotNet Web 服务的最佳方式是什么?

C# 服务引用 Java -> C#