[英]Spymemcached conflict with hibernate-memcached and webapp-runner
我有一個Heroku Java應用程序,該應用程序使用了Spymemcached庫,在我的情況下,我使用的hibernate-memcached庫(1.3)也包含了該庫。
現在,我需要確保對我的應用程序的所有請求都通過HTTPS進行。 這引起了我的這篇文章 ,在該文章中 ,解決方案着眼於利用webapp-runner插件和一些配置為我的應用程序獲取正確的標題(您為Runner提供了context.xml)。
我的問題是,webapp-runner插件還對Spymemcached庫具有依賴項(進一步降低了依賴圖),這會在啟動時引起沖突。 此外,通過該所建議的,我不能降級的webapp亞軍到7.0.22.1 后 ,作為指定的是context.xml的支持下,事后就來了。
因此,我認為將Spymemcached從我的hibernate-memcached依賴項中排除是一個簡單的問題,以便僅包括webapp運行程序的Spymemcached源:
<dependency>
<groupId>com.googlecode</groupId>
<artifactId>hibernate-memcached</artifactId>
<version>1.3</version>
<exclusions>
<exclusion>
<artifactId>hibernate</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<groupId>spy</groupId>
<artifactId>spymemcached</artifactId>
</exclusion>
</exclusions>
</dependency>
但是由於某種原因,我仍然會在啟動時遇到沖突-在創建我在應用程序上下文中指定的memcachedClient的工廠bean上:
<bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean">...</bean>
導致臭名昭著的java.lang.NoClassDefFoundError:
Error loading class [net.spy.memcached.spring.MemcachedClientFactoryBean] for bean with name 'memcachedClient' defined in file [/home/markus/coding/reader/target/tomcat.8080/work/Tomcat/localhost/_/WEB-INF/classes/META-INF/spring/applicationContext.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/springframework/beans/factory/FactoryBean
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:153)...
當我在IDE中搜索MemcachedClientFactoryBean時,我可以看到它是由webapp-runner提供的,而不是由hibernate-memcached提供的,因此排除似乎做得對。
我在這里錯過明顯的東西嗎? 我如何擺脫這個NoClassDefFoundError?
僅供參考,我發現通過運行java -jar target/webapp-runner.jar --help
,webapp-runner的7.0.22版本確實支持為其提供context.xml。
它與您指定... --context_xml ...
而不是... --context-xml ...
的更高版本略有不同... --context-xml ...
webapp-runner的7.0.22版沒有Spymemcached作為依賴項,因此可以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.