I am trying to migrate my Seam 2.3 application to use Infinispan for caching within JBoss AS7. I've looked at the Blog example within the Seam 2.3 distribution, and have copied the jGroupsConfig.xml and infinispan.xml files into my web application's source path and modified my components.xml to specify the appropriate cache provider. However, when I run something like this...
public class MyClass {
...
@In
CacheProvider cacheProvider;
...
public void myMethod() {
this.cacheProvider.get("abcd");
}
...
}
...I get an error saying the Infinispan cache cannot be started. There are no further errors, beyond what appears to be a parser reporting an IOException. All I see is:
com.ctc.wstx.exc.WstxIOException: Stream closed
I've cranked up the logging but still don't see anything useful. Is there anything further I need to do to get Infinispan caching working within my app? Do I need to manually create anything within the JBoss AS7 console? My cache config files are in my web project's source directory. Is that the correct location?
For anyone else having this issue, I've finally gotten all of the necessary pieces in place. Here's what I had to do...
Do NOT declare the Infinispan module in your JBoss deployment structure file. Instead, use the JARs that are part of the Seam 2.3 distribution
The WstxIOException itself is due to the fact that it was unable to locate my infinispan.xml configuration file. Place this in the Java source directory so it becomes a direct part of your classpath, not in your META-INF or WEB-INF directories (unless you declare it as such in your components.xml file)
Make sure you have all of the XML parsing JARs (stax, etc.) from the Seam 2.3 distribution in your EAR
I was having the same issue: com.ctc.wstx.exc.WstxIOException: Stream closed
But I am using Maven 3.2, JBoss WildFly 8.2 (with embedded Infinispan Cache v7.1.1.Final), Axis2 in my project. Since I was using Axis2 and could figure out that the error is coming from WoodStox (wstx-asl.3.2.8.jar to be specific) which is used by Axis2, I initially thought this was because of some dependency issues with Axis2, WildFly and Maven.
But after much researching, I found out from the complete stacktrace that the root cause was java.io.IOException and not actually the "com.ctc.wstx.exc.WstxIOException: Stream closed" error message I was getting (WAR was getting deployed successfully, but Cache was not getting set). Had a look into the source code for wstx-asl.jar and found that it was receiving the BufferedInputReader as null. That hint and the above answer from Shadowman prompted me to check whether Infinispan CacheManager was getting the config file properly when I was initializing the Cache.
There was an issue with it not getting the Infinispan config file within my classpath, so had to place it within /WEB-INF/infinispan.xml and it worked!
So though the error we receive is for WoodStox, please check Infinispan cache config file (or any other file) is properly found by your program (whether as a Resource or physical path).
Hope this helps anybody else having similar issue.
来源:https://stackoverflow.com/questions/14508517/configuring-infinispan-cacheprovider-in-seam-2-3