2015-05-12 108 views
1

我试图建立SOAP春WS现在我配置Spring豆文件是这样的:可以在org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition中使用WSDL吗?

<?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。问题是:我可以在这个春天的配置文件中以某种方式使用我的wsdl吗?如果是 - 如何(使用wsdl而不是wsdl)?我知道我可以从wsdl中提取xsd,但只想使用wsdl。谢谢。

回答

0

你可以使用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” 分别豆的名字是如何识别你的.wsdl可以被访问。在上述情况下:

http://[your_server]/[url_mapping_from_message_dispatcher]/operations.wsdl 
相关问题