使用Spring

时间:2015-10-20 13:41:09

标签: java spring web-services spring-mvc soap

您好我已经将此link称为使用SOAP Web服务。 但我不确定如何调用客户端方法。

请在下面找到我的代码: ClientConfig.java

package com.exclusively.unicommerce.service;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;

@Configuration
public class ClientConfig {

@Bean
public Jaxb2Marshaller marshaller() 
{
    Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
    marshaller.setContextPath("com.unicommerce.wsdl");
    return marshaller;
}

@Bean
public SaleOrderClient saleorderclient(Jaxb2Marshaller marshaller) {
    SaleOrderClient client = new SaleOrderClient();
    client.setDefaultUri("https://link.com/services/soap/?version=1.6");
    client.setMarshaller(marshaller);
    client.setUnmarshaller(marshaller);
    return client;
}


}

SaleOrderClient.java

public class SaleOrderClient extends WebServiceGatewaySupport{

private static final String uri = "https://link.com/services/soap/?version=1.6";

public String createSaleOrder(Suborder suborder)
{
    SaleOrder saleorder = new SaleOrder();
    saleorder = setSaleOrderObject(suborder);
    CreateSaleOrderRequest request = new CreateSaleOrderRequest();
    request.setSaleOrder(saleorder);

    //PLEASE NOTE THIS Line of CODE.
    this.getWebServiceTemplate().marshalSendAndReceive(uri,request);
    return "Pushed to Unicommerce";
}

public SaleOrder setSaleOrderObject(Suborder suborder)
{
    SaleOrder saleorder = new SaleOrder();
    saleorder.setAdditionalInfo(null);
    saleorder.setAddresses(null);
    saleorder.setCashOnDelivery(null);
    saleorder.setCFormProvided(null);
    saleorder.setChannel(null);
    saleorder.setCode(null);
    saleorder.setCurrencyCode(null);
    saleorder.setCustomerCode(null);
    saleorder.setDisplayOrderCode(null);
    saleorder.setNotificationEmail(null);
    saleorder.setNotificationMobile(null);
    saleorder.setVerificationRequired(null);
    return saleorder;
}
}

SuborderController.java

@Controller
public class SuborderController {

private String currentStatus, finalStatus,status,response;

@Autowired
private SuborderService suborderservice;

@RequestMapping(value = "/orders/add", method = RequestMethod.POST)
@ResponseBody
public String addOrders(@RequestBody Suborder order) {
    if(order.getSuborderId() ==  null ||   order.getSuborderId().isEmpty())
        return "BAD REQUEST";
    suborderservice.addOrders(order);
    //**CALL To createSaleorder(order)**
    //response = saleorderclient.createSaleorder(order);
    return response;
}

需要注意的是,webservice提供了请求类但没有响应类。第二次我试过

  @Autowired
  SaleOrderClient saleorderclient;

但是它没有发现bean的异常。

我无法理解如何访问此方法。 请帮忙。 TIA。

1 个答案:

答案 0 :(得分:0)

我通过在SuborderController.java

中添加下面提到的行来解决我的问题
{{1}}