无法使用WebServiceTemplate

如何解决无法使用WebServiceTemplate

我必须使用一个尚未部署的肥皂网络服务,但是我正在使用SoapUI对其进行存根并从Java应用程序中调用它,这是配置类:

@Configuration
public class ClientConfig {

    @Value("${external-services.uri}")
    String Uri;

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

    @Bean
    public EnablerClient soapConnector(Jaxb2Marshaller marshaller) {
        EnablerClient client = new EnablerClient ();
        client.setDefaultUri(Uri);
        client.setMarshaller(marshaller);
        client.setUnmarshaller(marshaller);
        return client;
    }
}

这也是用于调用soap服务的客户端:

@Slf4j
public class EnablerClient extends WebServiceGatewaySupport {

    public void delete(String url,Object request) {
        try {
            getwebservicetemplate().marshalSendAndReceive(url,request);
        } catch (InvalidXmlException exception) {
            log.error(exception.getClass().getName());
            throw exception;

        }

    }

}

并且我得到以下错误stacktrace:

dispatcherServlet] in context with path [] threw exception [Request processing Failed; nested exception is org.springframework.ws.InvalidXmlException: Could not parse XML; nested exception is org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file.] with root cause

org.xml.sax.SAXParseException: Premature end of file.
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1243) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635) ~[na:na]
    at java.xml/org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357) ~[na:na]
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:687) ~[na:na]
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:774) ~[na:na]
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:370) ~[na:na]
    at com.sun.xml.messaging.saaj.util.transform.EfficientStreamingTransformer.transform(EfficientStreamingTransformer.java:396) ~[saaj-impl-1.5.2.jar:1.5.2]
    at com.sun.xml.messaging.saaj.soap.EnvelopeFactory.parseEnvelopeSax(EnvelopeFactory.java:174) ~[saaj-impl-1.5.2.jar:1.5.2]
    at com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:92) ~[saaj-impl-1.5.2.jar:1.5.2]
    at com.sun.xml.messaging.saaj.soap.ver1_1.soAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:55) ~[saaj-impl-1.5.2.jar:1.5.2]
    at com.sun.xml.messaging.saaj.soap.soAPPartImpl.getEnvelope(SOAPPartImpl.java:142) ~[saaj-impl-1.5.2.jar:1.5.2]
    at org.springframework.ws.soap.saaj.saajSoapMessageFactory.createWebServiceMessage(saajSoapMessageFactory.java:191) ~[spring-ws-core-3.0.9.RELEASE.jar:na]
    at org.springframework.ws.soap.saaj.saajSoapMessageFactory.createWebServiceMessage(saajSoapMessageFactory.java:62) ~[spring-ws-core-3.0.9.RELEASE.jar:na]
    at org.springframework.ws.transport.AbstractWebServiceConnection.receive(AbstractWebServiceConnection.java:92) ~[spring-ws-core-3.0.9.RELEASE.jar:na]
    at org.springframework.ws.client.core.webservicetemplate.doSendAndReceive(webservicetemplate.java:611) ~[spring-ws-core-3.0.9.RELEASE.jar:na]
    at org.springframework.ws.client.core.webservicetemplate.sendAndReceive(webservicetemplate.java:555) ~[spring-ws-core-3.0.9.RELEASE.jar:na]
    at org.springframework.ws.client.core.webservicetemplate.marshalSendAndReceive(webservicetemplate.java:390) ~[spring-ws-core-3.0.9.RELEASE.jar:na]
    at org.springframework.ws.client.core.webservicetemplate.marshalSendAndReceive(webservicetemplate.java:378) ~[spring-ws-core-3.0.9.RELEASE.jar:na]
    at com.orange.aliasnumbers.ospconsumer.components.ospconsumer.clients.OSPClient.delete(OSPClient.java:32) ~[classes/:na]
    at com.orange.aliasnumbers.ospconsumer.controller.TESTCONTROLLER.delete(TESTCONTROLLER.java:55) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:190) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:138) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1040) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:943) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at brave.servlet.TracingFilter.doFilter(TracingFilter.java:68) ~[brave-instrumentation-servlet-5.12.3.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at brave.servlet.TracingFilter.doFilter(TracingFilter.java:87) ~[brave-instrumentation-servlet-5.12.3.jar:na]
    at org.springframework.cloud.sleuth.instrument.web.LazyTracingFilter.doFilter(TraceWebServletAutoConfiguration.java:139) ~[spring-cloud-sleuth-core-2.2.3.RELEASE.jar:2.2.3.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.springframework.boot.actuate.metrics.web.servlet.WebMvcmetricsFilter.doFilterInternal(WebMvcmetricsFilter.java:109) ~[spring-boot-actuator-2.2.8.RELEASE.jar:2.2.8.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
    at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

我也尝试过此解决方案,但也失败了

getwebservicetemplate().sendAndReceive(url,new WebServiceMessageCallback() {
                        @Override
                        public void doWithMessage(WebServiceMessage webServiceMessage) throws IOException,TransformerException {

                            log.error("----> ");
                            Jaxb2Marshaller marshallerRq = new Jaxb2Marshaller();

                            marshallerRq.setcontextpath("com.orange.aliasnumbers.ospconsumer.components.ospconsumer.wsdl");
                            MarshallingUtils.marshal(marshallerRq,request,webServiceMessage);
                        }
                    },TransformerException {
                            log.error("----> ");
                            Unmarshaller unmarshaller=new Unmarshaller() {
                                @Override
                                public Object unmarshal(File f) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public Object unmarshal(InputStream is) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public Object unmarshal(Reader reader) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public Object unmarshal(URL url) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public Object unmarshal(InputSource source) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public Object unmarshal(Node node) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public <T> JAXBElement<T> unmarshal(Node node,Class<T> declaredType) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public Object unmarshal(Source source) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public <T> JAXBElement<T> unmarshal(Source source,Class<T> declaredType) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public Object unmarshal(XMLStreamReader reader) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public <T> JAXBElement<T> unmarshal(XMLStreamReader reader,Class<T> declaredType) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public Object unmarshal(XMLEventReader reader) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public <T> JAXBElement<T> unmarshal(XMLEventReader reader,Class<T> declaredType) throws JAXBException {
                                    return null;
                                }

                                @Override
                                public UnmarshallerHandler getUnmarshallerHandler() {
                                    return null;
                                }

                                @Override
                                public void setValidating(boolean validating) throws JAXBException {

                                }

                                @Override
                                public boolean isValidating() throws JAXBException {
                                    return false;
                                }

                                @Override
                                public void setEventHandler(ValidationEventHandler handler) throws JAXBException {

                                }

                                @Override
                                public ValidationEventHandler getEventHandler() throws JAXBException {
                                    return null;
                                }

                                @Override
                                public void setProperty(String name,Object value) throws PropertyException {

                                }

                                @Override
                                public Object getProperty(String name) throws PropertyException {
                                    return null;
                                }

                                @Override
                                public void setSchema(Schema schema) {

                                }

                                @Override
                                public Schema getSchema() {
                                    return null;
                                }

                                @Override
                                public void setAdapter(XmlAdapter adapter) {

                                }

                                @Override
                                public <A extends XmlAdapter> void setAdapter(Class<A> type,A adapter) {

                                }

                                @Override
                                public <A extends XmlAdapter> A getAdapter(Class<A> type) {
                                    return null;
                                }

                                @Override
                                public void setAttachmentUnmarshaller(AttachmentUnmarshaller au) {

                                }

                                @Override
                                public AttachmentUnmarshaller getAttachmentUnmarshaller() {
                                    return null;
                                }

                                @Override
                                public void setListener(Listener listener) {

                                }

                                @Override
                                public Listener getListener() {
                                    return null;
                                }
                            };
                        }
                    });

并引发相同的异常。 请注意,我确定我们只需要调用服务就没有响应。 请帮忙,谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?