有人可以帮助您在Hybris中配置SOAP Web服务的步骤吗? 我们已经收到一个要求,其中业务用户希望使用SOAP Web服务。他们不支持REST Web服务。
答案 0 :(得分:1)
Hybris不提供与基于SOAP的Web服务的集成。我们使用XJC在Hybris中与SOAP Web服务进行了类似的集成。要配置SOAP Web服务,您需要执行以下操作:
1。创建一个自定义扩展,并在您的external-dependencies.xml中定义以下依赖关系,以在自定义扩展库中下载以下JAR:
2.在自定义扩展的buildcallback.xml中定义一个XJC任务,以从WSDL中生成Java类。
<xjc schema="${CustomPathToWsdl}/custom.wsdl" destdir="${customExtensionBaseDir}/gensrc/" extension="true" package="com.mycustomextension.ws.dto" removeOldOutput="no">
<arg value="-wsdl" />
<produces dir="${CustomFolder}/custom" includes="**/*" />
</xjc>
3。生成Java类后,可以使用 ObjectFactory 类创建请求DTO,然后使用设置器设置请求属性。
4。在自定义扩展spring.xml中配置WebServiceTemplate。
<bean id="clientMessageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />
<bean id="customJaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="***package.name.of.generated.dtos***" />
</bean>
<bean id="customWsMessageSender" class="org.springframework.ws.transport.http.CommonsHttpMessageSender">
<property name="credentials">
<bean class="org.apache.commons.httpclient.UsernamePasswordCredentials">
<constructor-arg value="${custom.username}" />
<constructor-arg value="${custom.password}" />
</bean>
</property>
<property name="connectionTimeout" value="30" />
<property name="readTimeout" value="30" />
</bean>
<bean id="customWebServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<constructor-arg ref="clientMessageFactory" />
<property name="defaultUri" value="**custom webservice URI**" />
<property name="marshaller" ref="customJaxbMarshaller" />
<property name="unmarshaller" ref="customJaxbMarshaller" />
<property name="messageSender" ref="customWsMessageSender" />
</bean>
5。创建一个自定义的集成服务类并注入 WebServiceTemplate 。调用任何模板方法来封送,发送和接收响应。
wrappedResponse = (JAXBElement<CustomRequestDTO>) webServiceTemplate.marshalSendAndReceive(defaultCustSearchURI, wrappedResponse);
希望这会有所帮助!