2013-01-24 42 views
1

我正在嘗試遷移我的Seam 2.3應用程序以使用Infinispan在JBoss AS7中進行緩存。我查看了Seam 2.3發行版中的Blog示例,並將jGroupsConfig.xml和infinispan.xml文件複製到了我的Web應用程序的源路徑中,並修改了我的components.xml以指定適當的緩存提供程序。然而,當我運行這樣的東西...在Seam 2.3中配置Infinispan CacheProvider

public class MyClass { 

... 

@In 
CacheProvider cacheProvider; 

... 

public void myMethod() { 
this.cacheProvider.get("abcd"); 
} 

... 

} 

...我收到一個錯誤,說Infinispan緩存無法啓動。沒有更多的錯誤,除了出現是報告IOException的解析器。我看到的全部是:

com.ctc.wstx.exc.WstxIOException: Stream closed 

我已經開始記錄日誌,但仍然沒有看到任何有用的東西。我還需要做些什麼才能讓Infinispan緩存在我的應用中工作?我需要在JBoss AS7控制檯內手動創建任何東西嗎?我的緩存配置文件位於我的Web項目的源目錄中。這是正確的位置嗎?

+0

我想這很明顯,但我會說:如果你還沒有,你可以在[論壇](http://www.jboss.org/infinispan/forums.html)上提問。如果問題尚未涵蓋在那裏,您可以在[問題跟蹤器](https://issues.jboss.org/browse/ISPN)中提交一個項目。 – minopret

回答

0

其他任何人有這個問題,我終於得到了所有必要的片到位。這是我必須做的...

  1. 不要在您的JBoss部署結構文件中聲明Infinispan模塊。相反,使用屬於Seam 2.3發行版的JARs

  2. WstxIOException本身是由於它無法找到我的infinispan.xml配置文件。將其放置在Java源代碼目錄中,以便它成爲類路徑的一部分,而不是在您的META-INF或WEB-INF目錄中(除非您在components.xml文件中聲明它)

  3. 確保您都來自Seam 2.3分發的XML解析JAR文件(STAX等)在你的EAR

0

我有同樣的問題:com.ctc.wstx.exc.WstxIOException: Stream closed

但我使用Maven 3.2,JBoss的WildFly 8.2 (嵌入Infinispan Cache v7.1.1.Final),Axis2在我的項目中。 由於我使用的是Axis2,可能會發現錯誤來自於Axis2使用的WoodStox(wstx-asl.3.2.8.jar具體),我最初認爲這是由於Axis2的一些依賴性問題, WildFly和Maven。

但經過很多研究,我從完整的堆棧跟蹤中發現,根本原因是java.io.IOException,實際上並沒有發現「com.ctc.wstx.exc.WstxIOException:Stream closed」錯誤消息WAR已成功部署,但Cache沒有設置)。查看了wstx-asl.jar的源代碼並發現它將BufferedInputReader作爲null接收。這個提示和Shadowman的上述答案促使我檢查了Infinispan CacheManager是否在初始化緩存時正確獲取配置文件。

有與它沒有得到我的classpath中使用Infinispan配置文件的問題,所以不得不把它內/WEB-INF/infinispan.xml和它的工作!

所以,雖然我們收到的錯誤是WoodStox,請Infinispan的緩存配置文件(或任何其他文件)正確的程序時發現的(無論是作爲一個資源或物理路徑)。

希望這可以幫助任何其他人有類似的問題。

相關問題