2017-09-03 30 views
9

我有基於Spring的應用程序與Ehcache JMS複製我需要部署此應用程序到Weblogic 12,但有以下錯誤部署失敗:Weblogic 12.1.3.0.0 - Ehcache JMS複製 - InvalidExpressionException:表達式:「cacheManagerUniqueId

javax.jms.InvalidSelectorException: weblogic.messaging.kernel.InvalidExpressionException: 
Expression : "cacheManagerUniqueId <> 600767500 

有什麼不對?

的weblogic-application.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<wls:weblogic-application xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.3/weblogic-application.xsd"> 

    <!--Configure the FilteringClassLoader to specify a certain package is loaded from an application--> 

    <wls:prefer-application-packages> 
     <!--<wls:package-name>javax.validation.*</wls:package-name> 
     <wls:package-name>javax.validation.spi.*</wls:package-name>--> 
     <wls:package-name>javax.persistence.spi.*</wls:package-name> 
     <wls:package-name>javax.persistence.criteria.*</wls:package-name> 
     <wls:package-name>javax.persistence.metamodel.*</wls:package-name> 
     <wls:package-name>javax.persistence.*</wls:package-name> 
     <wls:package-name>org.springframework.*</wls:package-name> 
     <wls:package-name>org.hibernate.validator.*</wls:package-name> 
     <wls:package-name>org.hibernate.*</wls:package-name> 
     <wls:package-name>net.sf.ehcache.*</wls:package-name> 
     <!--<wls:package-name>antlr.*</wls:package-name>--> 
     <wls:package-name>org.codehaus.jackson.*</wls:package-name> 
     <wls:package-name>com.fasterxml.jackson.*</wls:package-name> 
     <wls:package-name>org.apache.log4j.*</wls:package-name> 
     <wls:package-name>org.slf4j</wls:package-name> 
     <!--ftp--> 
     <wls:package-name>org.apache.commons.net.*</wls:package-name> 
     <wls:package-name>org.apache.commons.lang.*</wls:package-name> 

     <wls:package-name>com.thoughtworks.xstream.*</wls:package-name> 
     <wls:package-name>com.google.*</wls:package-name> 

    </wls:prefer-application-packages> 

</wls:weblogic-application> 

Maven依賴:

<dependency> 
    <groupId>net.sf.ehcache</groupId> 
    <artifactId>ehcache-jmsreplication</artifactId> 
    <version>0.5</version> 
</dependency> 
<dependency> 
    <groupId>com.googlecode.ehcache-spring-annotations</groupId> 
    <artifactId>ehcache-spring-annotations</artifactId> 
    <version>1.2.0</version> 
    <exclusions> 
     <exclusion> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>net.sf.ehcache</groupId> 
    <artifactId>ehcache-core</artifactId> 
    <version>2.6.11</version> 
</dependency> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-ehcache</artifactId> 
    <version>4.3.11.Final</version> 
    <exclusions> 
     <exclusion> 
      <groupId>net.sf.ehcache</groupId> 
      <artifactId>ehcache-core</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>${hibernate.version}</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.1-api</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>xml-apis</groupId> 
      <artifactId>xml-apis</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>antlr</groupId> 
      <artifactId>antlr</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.javassist</groupId> 
      <artifactId>javassist</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>antlr</groupId> 
    <artifactId>antlr</artifactId> 
    <version>2.7.7</version> 
    <scope>test</scope> 
</dependency> 

完整堆棧跟蹤:

Caused By: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.googlecode.ehcache.annotations.config.internalEhCacheCachingAdvisor': Cannot resolve reference to bean 'com.googlecode.ehcache.annotations.impl.CacheStaticMethodMatcherPointcut#0' while setting bean property 'pointcut'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.googlecode.ehcache.annotations.impl.CacheStaticMethodMatcherPointcut#0': Cannot resolve reference to bean 'com.googlecode.ehcache.annotations.impl.CacheAttributeSourceImpl#0' while setting bean property 'cacheAttributeSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.googlecode.ehcache.annotations.impl.CacheAttributeSourceImpl#0': Cannot resolve reference to bean 'serviceCacheManager' while setting bean property 'cacheManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serviceCacheManager' defined in class path resource [service-context.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: Exception while creating JMS connections: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
    Truncated. see log file for complete stacktrace 
Caused By: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.googlecode.ehcache.annotations.impl.CacheStaticMethodMatcherPointcut#0': Cannot resolve reference to bean 'com.googlecode.ehcache.annotations.impl.CacheAttributeSourceImpl#0' while setting bean property 'cacheAttributeSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.googlecode.ehcache.annotations.impl.CacheAttributeSourceImpl#0': Cannot resolve reference to bean 'serviceCacheManager' while setting bean property 'cacheManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serviceCacheManager' defined in class path resource [service-context.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: Exception while creating JMS connections: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
    Truncated. see log file for complete stacktrace 
Caused By: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.googlecode.ehcache.annotations.impl.CacheAttributeSourceImpl#0': Cannot resolve reference to bean 'serviceCacheManager' while setting bean property 'cacheManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serviceCacheManager' defined in class path resource [service-context.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: Exception while creating JMS connections: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
    Truncated. see log file for complete stacktrace 
Caused By: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serviceCacheManager' defined in class path resource [service-context.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: Exception while creating JMS connections: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    Truncated. see log file for complete stacktrace 
Caused By: net.sf.ehcache.CacheException: Exception while creating JMS connections: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at net.sf.ehcache.distribution.jms.JMSCacheManagerPeerProvider.init(JMSCacheManagerPeerProvider.java:193) 
    at net.sf.ehcache.CacheManager.doInit(CacheManager.java:447) 
    at net.sf.ehcache.CacheManager.init(CacheManager.java:377) 
    at net.sf.ehcache.CacheManager.<init>(CacheManager.java:259) 
    at net.sf.ehcache.CacheManager.newInstance(CacheManager.java:1037) 
    Truncated. see log file for complete stacktrace 
Caused By: javax.jms.InvalidSelectorException: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110) 
    at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSync(DispatcherAdapter.java:45) 
    at weblogic.jms.client.JMSSession.consumerCreate(JMSSession.java:3048) 
    at weblogic.jms.client.JMSSession.setupConsumer(JMSSession.java:2806) 
    at weblogic.jms.client.JMSSession.createConsumer(JMSSession.java:2748) 
    Truncated. see log file for complete stacktrace 
Caused By: javax.jms.InvalidSelectorException: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at weblogic.jms.dispatcher.Request.handleThrowable(Request.java:87) 
    at weblogic.jms.dispatcher.Request.getResult(Request.java:52) 
    at weblogic.messaging.dispatcher.Request.wrappedFiniteStateMachine(Request.java:1135) 
    at weblogic.messaging.dispatcher.DispatcherImpl.syncRequest(DispatcherImpl.java:201) 
    at weblogic.messaging.dispatcher.DispatcherImpl.dispatchSync(DispatcherImpl.java:236) 
    Truncated. see log file for complete stacktrace 
Caused By: javax.jms.InvalidSelectorException: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110) 
    at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSync(DispatcherAdapter.java:45) 
    at weblogic.jms.frontend.FEConsumer.<init>(FEConsumer.java:296) 
    at weblogic.jms.frontend.FESession$2.run(FESession.java:1078) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363) 
    Truncated. see log file for complete stacktrace 
Caused By: javax.jms.InvalidSelectorException: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at weblogic.jms.dispatcher.Request.handleThrowable(Request.java:87) 
    at weblogic.jms.dispatcher.Request.getResult(Request.java:52) 
    at weblogic.messaging.dispatcher.Request.wrappedFiniteStateMachine(Request.java:1135) 
    at weblogic.messaging.dispatcher.DispatcherImpl.syncRequest(DispatcherImpl.java:201) 
    at weblogic.messaging.dispatcher.DispatcherImpl.dispatchSync(DispatcherImpl.java:236) 
    Truncated. see log file for complete stacktrace 
Caused By: javax.jms.InvalidSelectorException: weblogic.messaging.kernel.InvalidExpressionException: Expression : "cacheManagerUniqueId <> 600767500" 
    at weblogic.jms.backend.BEQueueImpl.createFilterExpression(BEQueueImpl.java:161) 
    at weblogic.jms.backend.BEQueueImpl.createConsumer(BEQueueImpl.java:188) 
    at weblogic.jms.backend.BESessionImpl.createBEConsumer(BESessionImpl.java:469) 
    at weblogic.jms.backend.BESessionImpl.createConsumer(BESessionImpl.java:479) 
    at weblogic.jms.backend.BESessionImpl.invoke(BESessionImpl.java:297) 
    Truncated. see log file for complete stacktrace 
+0

你有什麼進展嗎? – egorlitvinenko

+0

這適用於較低版本的weblogic?像10?用Java6? – Rizwan

+0

由於我在項目中存在其他依賴關係,它不能與weblogic 10一起使用 – endryha

回答

0

有類似的問題沒有解決:

表達式的問題,用於在ehcache的JMS中路由消息。 的Ehcache是​​開源的,你可以看到示例代碼(我從github了,當然你可以從他們的網站獲得了Ehcache源,如果你想):

String messageSelector = CACHE_MANAGER_UID + " <> " + localCacheManagerUid(cacheManager); 

儘管Weblogic的的,這是不開源。所以我想你要調試代碼,看看裏面發生了什麼

weblogic.jms.backend.BEQueueImpl.createFilterExpression 

因爲很明顯它不支持這個語法。

可能的原因可能與您的應用程序和weblogic之間的antlr.jar庫衝突。在這種情況下,您應該嘗試在您的配置中配置首選軟件包。

+0

我也認爲它與antlr庫衝突有某種關係,但我已經嘗試在中包含antlr因爲從那裏排除它(依靠weblogic依賴)。在這兩種情況下,它都無法正常工作,但這是主要的嫌疑犯...... – endryha