Я создаю веб-приложение с использованием весенней загрузки.Приложение будет принимать учетные данные от клиента (Angular), а затем использовать эти учетные данные, чтобы сделать запрос на мыло, используя следующий код.Однако это не работает, потому что кажется, что вся работа, связанная с настройкой, выполняется сразу после запуска приложения.В то время учетные данные службы мыла равны нулю, поэтому Spring установил учетные данные в нуль в классе HttpComponentsMessageSender
.Когда пользователь вошел в систему через учетные данные, он не использует эти учетные данные, а использует старые учетные данные.
Я выполняю вызов службы мыла со следующим кодом:
Вот код моего контроллера покоя,который вызывает мыльный клиент (в моем случае CustomerRequestClient
):
public class CustomerRequestController {
private final CustomerRequestClient CRClient;
CustomerRequestController(CustomerRequestClient CRClient) {
this.CRClient = CRClient;
}
@RequestMapping(method = RequestMethod.POST, value="/getAllCustomerRequests")
@ResponseBody
List<Object> registerStudent(@RequestBody Login user) {
return CRClient.getAllCustomerRequests(user.getUserName(), user.getPassword());
}
Клиент, который делает мыльный вызов:
public class CustomerRequestClient extends WebServiceGatewaySupport {
private static final Logger log = LoggerFactory.getLogger(CustomerRequestClient.class);
public List<Object> getAllCustomerRequests(String userName, String password) {
//Instantiate Request object
FindAePReqEByDocument aePReq= createAllRequest();
//Soap Service call
WebServiceTemplate template = getWebServiceTemplate();
JAXBElement<AePReqEListType> response = (JAXBElement<AePReqEListType>) template.
marshalSendAndReceive("http://localhost:8086/fmax/ws", aePReq);
//Get AePReqEListType object from jaxb element
AePReqEListType r = (AePReqEListType)response.getValue();
//Business logic come afterwards,,,,
}
private FindAePReqEByDocument createAllRequest() {
FindAePReqEByDocument aePReq = new FindAePReqEByDocument();
AePReqEType aePReqEType = new AePReqEType();
aePReq.setAePReqE(aePReqEType);
SortObjectListType s = new SortObjectListType();
aePReq.setList(s);
return aePReq;
}
}
Класс конфигурациипохоже:
public class CustomerRequestConfig {
@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("my.wsdl");
return marshaller;
}
@Bean
public CustomerRequestClient customerRequestClient(Jaxb2Marshaller marshaller) {
CustomerRequestClient client = new CustomerRequestClient();
client.setDefaultUri(URI);
client.setMessageSender(httpComponentsMessageSender(client));
client.setMarshaller(marshaller);
client.setUnmarshaller(marshaller);
return client;
}
@Bean
public HttpComponentsMessageSender httpComponentsMessageSender(CustomerRequestClient client) {
HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender();
httpComponentsMessageSender.setCredentials(usernamePasswordCredentials(client));
return httpComponentsMessageSender;
}
@Bean
public UsernamePasswordCredentials usernamePasswordCredentials(CustomerRequestClient client) {
System.out.println("Password - " + client.getPassword());
return new UsernamePasswordCredentials(client.getUserName(), client.getPassword());
}
}