package org.jeecg.modules.wms.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.cxf.endpoint.Client; import org.apache.cxf.frontend.ClientProxy; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.apache.cxf.transport.http.HTTPConduit; import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.WMSWebService; import org.jeecg.modules.wms.dto.WSResponse; import org.jeecg.modules.wms.request.ReceiveWMSScanItemList; import org.jeecg.modules.wms.service.MESWebServiceSoap; import org.jeecg.modules.wms.service.WebServiceSoap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Api(tags = "WMS集成测试") @RestController @RequestMapping("/wms/client") @Slf4j public class WMSTestController { @Value("${webservice.url}") private String url; @Autowired private WMSWebService webService; private final static String localUrl = "http://localhost:9989/jeecg-boot/webservice/ReceiveWMSScanItemList?wsdl"; @ApiOperation(value = "WMS集成测试-接收WMS移库结果", notes = "WMS集成测试-接收WMS移库结果") @PostMapping("/testReceiveWMSScanItemList") public Result testReceiveWMSScanItemList() { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setAddress(localUrl); factory.setServiceClass(MESWebServiceSoap.class); MESWebServiceSoap service = (MESWebServiceSoap) factory.create(); ReceiveWMSScanItemList request = new ReceiveWMSScanItemList(); WSResponse response = service.receiveWMSScanItemList(request); return Result.ok(response); } @ApiOperation(value = "WMS集成测试-HelloWord测试", notes = "WMS集成测试-HelloWord测试") @PostMapping("/testHelloWorld") public Result testHelloWorld() { // JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); // factory.setAddress(url); // factory.setServiceClass(WebServiceSoap.class); // WebServiceSoap service = (WebServiceSoap) factory.create(); // String response = service.helloWorld(); // return Result.ok(response); WebServiceSoap port = webService.getWebServiceSoap12(); // 2. 获取 CXF 底层 Client 对象 Client client = ClientProxy.getClient(port); // 3. 获取 HTTPConduit 并设置超时 HTTPConduit http = (HTTPConduit) client.getConduit(); HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); httpClientPolicy.setConnectionTimeout(10 * 1000); // 连接超时 10 秒 httpClientPolicy.setReceiveTimeout(300 * 1000); // 读取超时 60 秒(重点!) http.setClient(httpClientPolicy); String result = port.helloWorld(); return Result.ok(result); } }