tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: JCache annotations in web app test
Date Tue, 01 Sep 2015 15:50:29 GMT
this code is in the test? classloader is not the webapp one then.


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
<http://www.tomitribe.com>

2015-09-01 16:59 GMT+02:00 Steve Goldsmith <sgjava@gmail.com>:

> OK, I have JCache annotations working with tomee-embedded using an injected
> bean. If I try to cache something in the service:
>
>     @CacheResult(cacheName = "testCache")
>     public String slowMethod(@CacheKey String key, String value) {
>         log.info(String.format("Key: %s, value: %s added to cache", key,
> value));
>         return value;
>     }
>
> Then in the service if I try to access the cache:
>
>         final Cache<String, String> testCache =
> cacheBean.getCacheManager().
>                 getCache("testCache");
>
> I get an NPE. The same code works if I use an EJB vs. a JAX-RS service.
>
>
>
> On Tue, Sep 1, 2015 at 2:24 AM, Romain Manni-Bucau <rmannibucau@gmail.com>
> wrote:
>
> > Hi
> >
> > Le 1 sept. 2015 04:01, "sgjava" <sgjava@gmail.com> a écrit :
> > >
> > > I have JCache annotations working with a unit test:
> > >
> > > KeyValueBean using @CacheDefaults(cacheName = "testCache")
> > >
> > >     @CacheResult
> > >     public String add(@CacheKey String key, String value) {
> > >         log.info(String.format("Adding key: %s, value: %s", key,
> > value));
> > >         return value;
> > >     }
> > >
> > > Test:
> > >
> > >     /**
> > >      * Injected cache bean.
> > >      */
> > >     @EJB
> > >     private CacheBean cacheBean;
> > >     /**
> > >      * Our key/value bean.
> > >      */
> > >     @EJB
> > >     private KeyValueBean keyValueBean;
> > >
> > >         container = EJBContainer.createEJBContainer();
> > >         container.getContext().bind("inject", this);
> > >
> > >     keyValueBean.add("key1", "value1");
> > >
> > > INFO: Key: org.jsr107.ri.annotations.DefaultGeneratedCacheKey@322dd1,
> > Value:
> > > value1
> > >
> > > But using a web test:
> > >
> > >         final Map p = new HashMap();
> > >         p.put(Context.INITIAL_CONTEXT_FACTORY,
> > >                 "org.apache.openejb.core.LocalInitialContextFactory");
> > >         p.put("openejb.embedded.initialcontext.close ", "DESTROY");
> > >         p.put("openejb.embedded.remotable", "true");
> >
> > The 3 previous props are for openejb embedded and not tomee-embedded
> >
> > >         p.put(EJBContainer.APP_NAME, "my-jaxrs-test");
> > >         p.put(EJBContainer.PROVIDER, "tomee-embedded");
> > >         // Add WAR and MDB modules
> > >         p.put(EJBContainer.MODULES, new
> File[]{Archive.archive().copyTo(
> > >             "WEB-INF/classes",
> jarLocation(UserService.class)).asDir()});
> >
> > Dont you miss a beans.xml?
> >
> > >         // Random port
> > >         p.put(EmbeddedTomEEContainer.TOMEE_EJBCONTAINER_HTTP_PORT,
> "-1");
> > >         container = EJBContainer.createEJBContainer(p);
> > >
> > > And a service:
> > >
> > >     /**
> > >      * Injected cache bean.
> > >      */
> > >     @EJB
> > >     private CacheBean cacheBean;
> > >     /**
> > >      * Our key/value bean.
> > >      */
> > >     @EJB
> > >     private KeyValueBean keyValueBean;
> > >
> > > The annotations do not work, but I can see cache inside the service
> > class:
> > >
> > >         log.info(String.format("Cache names: %s",
> > > cacheBean.getCacheManager().
> > >                 getCacheNames()));
> > >
> > > INFO: Cache names: [testCache]
> > >
> > > Is this a scope or class loader issue with the test container?
> > >
> > >
> > >
> > >
> > > --
> > > View this message in context:
> >
> >
> http://tomee-openejb.979440.n4.nabble.com/JCache-annotations-in-web-app-test-tp4676034.html
> > > Sent from the TomEE Users mailing list archive at Nabble.com.
> >
>
>
>
> --
> Steven P. Goldsmith
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message