Jboss 带有wildfly 10的Ehcache配置

Jboss 带有wildfly 10的Ehcache配置,jboss,wildfly,ehcache,Jboss,Wildfly,Ehcache,尝试在wildfly10中使用ehcache.xml实现ehcache 添加了ehcache.jar文件作为模块,并添加了依赖项,如下所述: <resources> <resource-root path="ehcache-1.2.2.jar"/> </resources> <dependencies> <module name="org.apache.commons.logging"/>

尝试在wildfly10中使用ehcache.xml实现ehcache

添加了ehcache.jar文件作为模块,并添加了依赖项,如下所述:

   <resources>
       <resource-root path="ehcache-1.2.2.jar"/> 
   </resources>

   <dependencies>
       <module name="org.apache.commons.logging"/>
       <module name="org.apache.log4j"/>
       <module name="javax.xml.parsers"/> 
   </dependencies>


</module>


当我尝试运行服务器war文件时,出现以下错误

从d:\ehcache.xml配置时出错。最初原因是从输入流配置时出错。初始原因已重定向。\uuuuSaxparserFactory无法转换为javax.xml.parsers.SAXParserFactory

任何线索都会有帮助

堆栈跟踪:

  • net.sf.ehcache.CacheException:从配置时出错
    d:\ehcache\ehcache.xml。初始原因是从配置时出错
    输入流。初始原因已被重定向。\uuuu SAXParserFactory
    无法转换为javax.xml.parsers.SAXParserFactory
    net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:80) net.sf.ehcache.CacheManager.parseConfiguration(CacheManager.java:752) net.sf.ehcache.CacheManager.init(CacheManager.java:386)
    CacheManager.(CacheManager.java:295)
    ehcache(MySqlTest.java:93)
    processRequest(MySqlTest.java:77)
    doGet(MySqlTest.java:224)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    io.undertow.servlet.handlers.ServletHandler.HandlerRequest(ServletHandler.java:85) io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.HandlerRequest(ServletSecurityRoleHandler.java:62) io.undertow.servlet.handlers.ServletDispatchingHandler.HandlerRequest(ServletDispatchingHandler.java:36) org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.HandlerRequest(SecurityContextAssociationHandler.java:78) io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43) io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.HandlerRequest(ServletAuthenticationCallHandler.java:57) io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43) io.undertow.security.handlers.AbstractSecretentityHandler.HandlerRequest(AbstractSecretentityHandler.java:46) io.undertow.servlet.handlers.security.ServletSecretentityConstraintHandler.HandlerRequest(ServletSecretentityConstraintHandler.java:64) io.undertow.security.handlers.AuthenticationMechanismsHandler.HandlerRequest(AuthenticationMechanismsHandler.java:60) io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.HandlerRequest(CachedAuthenticatedSessionHandler.java:77) io.undertow.security.handlers.NotificationReceiverHandler.HandlerRequest(NotificationReceiverHandler.java:50) io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.HandlerRequest(AbstractSecurityContextAssociationHandler.java:43) io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43) org.wildfly.extension.undertow.security.jacc.jaccontextidhandler.handleRequest(jaccontextidhandler.java:61) io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43) io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43) io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284) io.undertow.servlet.handlers.ServletiInitialHandler.dispatchRequest(ServletiInitialHandler.java:263) io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) ServletInitialHandler$1.HandlerRequest(ServletInitialHandler.java:174) io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) run(Thread.java:745)

您似乎在使用Ehcache 1。这个版本真的很旧。您至少应该升级到Ehcache 2。最新的是Ehcache 3。Ehcache 1很可能与您当前的Java版本和wildfly依赖项不兼容。

它与Ehcache 3.3.1兼容

  • 将ehcache-3.3.1.jar文件放在wildfly10\u HOME\modules\system\layers\base\org\ehcache\main中

  • 在上述文件夹中编辑module.xml,如下所示

  • 代码:

  • 字符串cacheName=“basicCacheNamit”

    try(CacheManager CacheManager=newCacheManagerBuilder()
    .withCache(cacheName,
    newCacheConfigurationBuilder(Long.class,String.class,heap(100).offheap(1,MB)))
    .build(正确)){
    Cache basicCache=cacheManager.getCache(cacheName,Long.class,String.class);
    巴西卡切。放(1L,“一号!”;
    字符串值=basicCache.get(1L);
    
    您需要确保路径位于modules/javax/api/main/module.xml中,然后将其作为依赖项添加到您的模块中。您好,thanx,请发表评论,我尝试了,但没有成功,我将再次尝试。是的,这成功了。移动到ehcache 2.9.0,它与java项目一起工作。当我在带有Wildfly 10的Servlet中运行相同的代码时,它会给出以下错误:从d:\ehcache.xml配置时出错。初始原因是从输入流配置时出错。初始原因被_重定向。_SAXParserFactory无法转换为javax.xml.parsers.SAXParserFactory我是否应该在没有完整堆栈跟踪的情况下移动到最新的ehcache 3.x?,很难说。当然,3是最好的:-)根据我目前的猜测,您有类路径问题。不同级别的SAX依赖性太多。为了避免这个问题,您可以使用Ehcache 3 Java配置(而不是XML)。是的,Thanx用于您的文章。
    try (CacheManager cacheManager = newCacheManagerBuilder()
      .withCache(cacheName,
        newCacheConfigurationBuilder(Long.class, String.class, heap(100).offheap(1, MB)))
      .build(true)) {
      Cache<Long, String> basicCache = cacheManager.getCache(cacheName, Long.class, String.class);
    
    
      basicCache.put(1L, "da one!");
      String value = basicCache.get(1L);