在Hybris中配置SOAP Web服务的步骤



有人可以帮助您在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);

希望这会有所帮助!

相关内容

  • 没有找到相关文章

最新更新