簡體   English   中英

Spymemcached與hibernate-memcached和webapp-runner發生沖突

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM