配置:
@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller=new Jaxb2Marshaller();
String[] packagesToScan = {"com.roytuts.jaxb", };
marshaller.setPackagesToScan(packagesToScan);
return marshaller;
}
服务:
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "patientDateRequest")
@ResponsePayload
public GetMedicationPlanDTOResponse getMedicationPlanDTOResponse(@RequestPayload PatientDateRequest patientDateRequest){
GetMedicationPlanDTOResponse getMedicationPlanDTOResponse = new GetMedicationPlanDTOResponse();
List<MedicationPlanDTO> medicationPlanDTOS;
medicationPlanDTOS = medicationPlanService.readMedicationNotTakeAtTime(patientDateRequest.getPatientId(), xgcToLocalDateTime(patientDateRequest.getDate()));
for(MedicationPlanDTO medicationPlanDTO: medicationPlanDTOS){
getMedicationPlanDTOResponse.getResponseMedicationPlanDTO().add(medicationPlanDTOResponseDTO(medicationPlanDTO));
}
return getMedicationPlanDTOResponse;
}
控制器:
@Autowired
private Jaxb2Marshaller marshaller;
private WebServiceTemplate template;
@GetMapping("/{patientId}")
public GetActivitiesDTOResponse getPatientActivities(@PathVariable long patientId){
String uri;
PatientIdRequest request = new PatientIdRequest();
GetActivitiesDTOResponse response;
template = new WebServiceTemplate(marshaller);
System.out.println("getPatientActivities");
uri = "http://localhost:8080/ws";
request.setPatientId(patientId);
response = (GetActivitiesDTOResponse) template.marshalSendAndReceive(uri, request);
return response;
}
2019-12-04 16:03:04.005警告35072 --- [nio-8080-exec-5] o.s.ws.server.EndpointNotFound:未找到[SaajSoapMessage {http://www.florin.com/gen} PatientIdRequest]的端点映射 2019-12-04 16:03:04.023错误35072-[nio-8080-exec-3] oaccC [。[。[/]。[dispatcherServlet]:Servlet [dispatcherServlet]的Servlet.service()路径[]引发异常[请求处理失败;嵌套的异常是org.springframework.ws.client.WebServiceTransportException:[404]],其根本原因是
org.springframework.ws.client.WebServiceTransportException:[404] 在org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:699)〜[spring-ws-core-3.0.7.RELEASE.jar:na] 在org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:609)〜[spring-ws-core-3.0.7.RELEASE.jar:na] 在org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:555)〜[spring-ws-core-3.0.7.RELEASE.jar:na] 在org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:390)〜[spring-ws-core-3.0.7.RELEASE.jar:na] 在org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:378)〜[spring-ws-core-3.0.7.RELEASE.jar:na] 在onlineMedicationPlatform.controller.ActivityController.getPatientActivities(ActivityController.java:38)〜[classes /:na] 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)〜[na:1.8.0_211] 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:1.8.0_211] 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_211] 在java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_211] 在org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)〜[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)〜[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)〜[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)〜[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)〜[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)〜[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)〜[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)〜[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)〜[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)〜[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在javax.servlet.http.HttpServlet.service(HttpServlet.java:634)〜[tomcat-embed-core-9.0.27.jar:9.0.27] 在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)〜[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在javax.servlet.http.HttpServlet.service(HttpServlet.java:741)〜[tomcat-embed-core-9.0.27.jar:9.0.27] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)〜[tomcat-embed-core-9.0.27.jar:9.0.27] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.27.jar:9.0.27] 在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)〜[tomcat-embed-websocket-9.0.27.jar:9.0.27] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-9.0.27.jar:9.0.27] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.27.jar:9.0.27] 在org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)〜[spring-security-web-5.2.0.RELEASE.jar:5.2.0.RELEASE] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-9.0.27.jar:9.0.27] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.27.jar:9.0.27]