Сбой Infinispan с java.lang.NoSuchMethodError: org.jboss.marshalling.MarshallingConfiguration.setExternalizerCreator
У нас есть несколько серверов Ubuntu, все они Tomcat 8 и Java 8, обновление 45; все они исполняют наше заявление без проблем; но на недавно созданном сервере происходит сбой приложения при инициализации со следующей (частичной) трассировкой стека:
Caused by: org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.marshall.core.GlobalMarshaller.start() on object of type GlobalMarshaller
at org.infinispan.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:241)
at org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:545)
at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:516)
at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:398)
at com.ats.framework.model.dao.impl.SingleTenantInfinispanDirectoryProvider.criaCache(SingleTenantInfinispanDirectoryProvider.java:126)
at com.ats.framework.model.dao.impl.SingleTenantInfinispanDirectoryProvider.start(SingleTenantInfinispanDirectoryProvider.java:98)
at com.ats.framework.model.dao.search.impl.MultiTenantDirectoryProvider.getDirectory(MultiTenantDirectoryProvider.java:62)
at org.hibernate.search.reader.SharingBufferReaderProvider.initialize(SharingBufferReaderProvider.java:95)
at org.hibernate.search.reader.ReaderProviderFactory.createReaderProvider(ReaderProviderFactory.java:76)
at org.hibernate.search.spi.SearchFactoryBuilder.buildNewSearchFactory(SearchFactoryBuilder.java:278)
at org.hibernate.search.spi.SearchFactoryBuilder.buildSearchFactory(SearchFactoryBuilder.java:144)
at org.hibernate.search.event.FullTextIndexEventListener.initialize(FullTextIndexEventListener.java:151)
at org.hibernate.event.EventListeners$1.processListener(EventListeners.java:198)
at org.hibernate.event.EventListeners.processListeners(EventListeners.java:181)
at org.hibernate.event.EventListeners.initializeListeners(EventListeners.java:194)
... 63 more
Caused by: org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.marshall.core.GlobalMarshaller.start() on object of type GlobalMarshaller
at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:185)
at org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:869)
at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:638)
at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:627)
at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:530)
at org.infinispan.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:219)
... 77 more
Caused by: java.lang.NoSuchMethodError: org.jboss.marshalling.MarshallingConfiguration.setExternalizerCreator(Lorg/jboss/marshalling/Creator;)V
at org.infinispan.commons.marshall.jboss.AbstractJBossMarshaller.<init>(AbstractJBossMarshaller.java:64)
at org.infinispan.marshall.core.JBossMarshaller.<init>(JBossMarshaller.java:52)
at org.infinispan.marshall.core.VersionAwareMarshaller.start(VersionAwareMarshaller.java:63)
at org.infinispan.marshall.core.GlobalMarshaller.start(GlobalMarshaller.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:183)
... 82 more
Это точно такая же JVM, как и другие серверы, точно такой же Tomcat, на котором выполняется точно такая же WAR. Любые идеи о том, что может быть причиной того, что Infinispan выбросить NoSuchMethodError только на конкретном сервере?
1 ответ
В то время как jboss-marshalling/1.4.9. У финала и старше есть метод
@Deprecated
public void setExternalizerCreator(final Creator externalizerCreator)
Более новая версия jboss-marshalling/2.0.0.Beta2 не делает. Смотрите здесь. Возможно, у вас есть новая библиотека, которая не совместима со старыми библиотеками. Я бы сравнил версии jboss-marshallingXXXXX.jar на старом и новом серверах.
надеюсь, это поможет