我是Spring MVC的初学者。我想从SOAP Web服务获得响应。但是我收到了一条错误消息。
这是我的源代码。
private static final String GET_DOCUMENT_SOAP_ACTION = "apvx:bus:ReportGenerator:{1D81BEDF-3894-45b2-99C9-95E50B1B9494}/Document_Get";
@Autowired
protected PathCentralWSTemplateFactory webServiceTemplateFactory;
public DocumentGetResponse documentGet(DocumentGet request) {
try {
return (DocumentGetResponse) webServiceTemplateFactory.getClient().marshalSendAndReceive(request,
getCallback(GET_DOCUMENT_SOAP_ACTION));
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
PathCentralWSTemplateFactoryImpl
public PathCentralWSTemplateFactoryImpl() throws SOAPException {
marshaller = new Jaxb2Marshaller();
messageFactory = new SaajSoapMessageFactory();
MessageFactory obj = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
if(obj != null){
((SaajSoapMessageFactory) messageFactory).setMessageFactory(obj);
}
((SaajSoapMessageFactory) messageFactory).setSoapVersion(org.springframework.ws.soap.SoapVersion.SOAP_11);
url = "https://www.mypathcentral.net/...";
}
@Override
public WebServiceTemplate getClient() {
WebServiceTemplate webServiceTemplate = new WebServiceTemplate(messageFactory);
webServiceTemplate.setMarshaller(marshaller);
webServiceTemplate.setUnmarshaller((Unmarshaller) marshaller);
webServiceTemplate.setDefaultUri(url);
webServiceTemplate.setMessageSender(getMessageSender());
return webServiceTemplate;
}
答案 0 :(得分:0)
我不熟悉您在此处所遇到的框架,但我知道您的代码有什么问题。您收到一条消息,指出没有对象引用。我相信这是因为您将GET_DOCUMENT_SOAP_ACTION声明为静态final。 static关键字使系统在堆外部分配与任何对象分开的静态内存。我认为如果你将字符串声明为标准对象,这可能会解决这个问题,但我不确定这是否会导致代码的其余部分出现问题。