tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steve Goldsmith <sgj...@gmail.com>
Subject Re: JCache annotations in web app test
Date Tue, 01 Sep 2015 13:57:22 GMT
beans.xml is in WEB-INF. Is it better to use tomee-embedded? I'll try that
and see if it works...

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