在Hybris中配置Soap Web服务的步骤。

时间:2019-03-07 18:02:37

标签: web-services soap hybris

有人可以帮助您在Hybris中配置SOAP Web服务的步骤吗? 我们已经收到一个要求,其中业务用户希望使用SOAP Web服务。他们不支持REST Web服务。

1 个答案:

答案 0 :(得分:1)

Hybris不提供与基于SOAP的Web服务的集成。我们使用XJC在Hybris中与SOAP Web服务进行了类似的集成。要配置SOAP Web服务,您需要执行以下操作:

1。创建一个自定义扩展,并在您的external-dependencies.xml中定义以下依赖关系,以在自定义扩展库中下载以下JAR:

  • jaxb-api
  • jaxb-xjc
  • jaxws-api
  • jaxws工具

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);

希望这会有所帮助!