有人可以帮助您在Hybris中配置SOAP Web服务的步骤。我们收到了一个要求,其中企业用户想要消费肥皂Web服务。他们不支持REST Web服务。
Hybris不提供与基于SOAP的Web服务的集成。我们使用XJC与Hybris中的SOAP WebService进行了类似的集成。要配置SOAP Web服务,您将需要执行以下操作:
1。创建一个自定义扩展名并在外部依赖性中定义以下依赖项。xml下载以下jar'sin'sin's自定义扩展库:
- jaxb-api
- jaxb-xjc
- jaxws-api
- jaxws-tools
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。创建一个自定义集成服务类,并注入 weberviceTemplate .。将任何模板方法称为元帅,发送并接收响应。
wrappedResponse = (JAXBElement<CustomRequestDTO>) webServiceTemplate.marshalSendAndReceive(defaultCustSearchURI, wrappedResponse);
希望这会有所帮助!