我正在尝试迁移我的Seam 2.3应用程序,以便在JBoss AS7中使用Infinispan进行缓存。我查看了Seam 2.3发行版中的Blog示例,并将jGroupsConfig.xml和infinispan.xml文件复制到我的Web应用程序的源路径中,并修改了我的components.xml以指定适当的缓存提供程序。但是,当我运行这样的东西......
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 :(得分:0)
对于其他任何有这个问题的人,我终于得到了所有必要的部分。这是我必须要做的......
不要在JBoss部署结构文件中声明Infinispan模块。相反,使用属于Seam 2.3发行版
WstxIOException本身是由于它无法找到我的infinispan.xml配置文件。将它放在Java源目录中,使它成为类路径的直接部分,而不是META-INF或WEB-INF目录(除非你在components.xml文件中声明它)
确保您拥有EAR中Seam 2.3发行版的所有XML解析JAR(stax等)
答案 1 :(得分: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的这个提示和上面的答案促使我在初始化Cache时检查Infinispan CacheManager是否正确获取配置文件。
有一个问题是它没有在我的类路径中获取Infinispan配置文件,所以不得不将它放在/WEB-INF/infinispan.xml中并且它有效!
因此,虽然我们收到的错误是WoodStox,但请检查您的程序是否正确找到Infinispan缓存配置文件(或任何其他文件)(无论是资源还是物理路径)。
希望这有助于其他有类似问题的人。