我试图通过使用ConnectionTimeout WebServiceTemplate来设置Spring WebServiceTemplate中的HttpComponentsMessageSender和ReadTimeout。但是,我正在为NoSuchMethodError类获取SchemeSocketFactory。
<bean
class="org.springframework.ws.transport.http.HttpComponentsMessageSender"
id="timeoutId">
<property name="connectionTimeout" value="3000" />
<property name="readTimeout" value="3000" />
</bean>Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.ws.transport.http.HttpComponentsMessageSender]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: org/apache/http/conn/scheme/Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1147)
... 65 more
Caused by: java.lang.NoSuchMethodError: org/apache/http/conn/scheme/Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
at org.apache.http.impl.conn.SchemeRegistryFactory.createDefault(SchemeRegistryFactory.java:51)
at org.apache.http.impl.conn.PoolingClientConnectionManager.<init>(PoolingClientConnectionManager.java:96)
at org.springframework.ws.transport.http.HttpComponentsMessageSender.<init>(HttpComponentsMessageSender.java:77)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:80)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)
at java.lang.reflect.Constructor.newInstance(Constructor.java:539)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)
... 67 more发布于 2018-03-23 11:50:11
我想一次补丁升级会帮你解决这个问题。WebSphere有一个Apache客户端的内部副本(由其JAX实现使用),在安装的应用程序中是可见的,直到补丁8.5.5.9。如果要在此之前在补丁包上使用自己的副本,则需要使用PARENT_LAST类加载器委托或单独的共享库,以确保类加载器加载自己的Apache副本而不是WebSphere的副本。
发布于 2018-03-23 01:14:55
NoSuchMethodError表示在运行时可用的类与用于编译代码的类不同。
它通常归结为在类路径上有同一个类的多个版本。对有问题的类进行重复检查并删除不需要的版本。
https://stackoverflow.com/questions/49440892
复制相似问题