我正在尝试在 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/