Yes, that would work.
Can´t believe I missed it :)

Thank you very much, Jacek.

--
Mirek Borský


---------- Původní e-mail ----------
Od: jacek szymanski <jacek.p.szyman...@gmail.com>
Komu: users@camel.apache.org
Datum: 22. 3. 2023 9:54:50
Předmět: Re: Unable to use ehcache in pure blueprint DSL
"Hi,

<bean id="cacheManager" class="org.ehcache.config.builders.
CacheManagerBuilder"
init-method="init"
factory-method="newCacheManager"
>

wouldn't work?

js.

On 3/21/23 19:25, Mirek Borsky wrote:
> Greetings,
>
> I am trying to use camel-ehcache with pure blueprint DSL and struggle to
make it work. Could someone either help point me in the right direction or
confirm that it is not possible?
>
> I have done the following:
> downloaded karaf 4.4.3, and Java 11, run the following in karaf concole:
> feature:repo-add camel 3.20.2
> feature:install camel
> feature:install camel-ehcache
>
> Then tried this route:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";>
>     <camelContext xmlns="http://camel.apache.org/schema/blueprint"; id=
"CacheTest-ctx">
>         <route id="CacheTest">
>             <from uri="timer:onetime?repeatCount=1"/>
>             <setBody>
>                 <constant>testbody</constant>
>             </setBody>
>             <setHeader name="CamelEhcacheKey">
>                 <constant>testkey</constant>
>             </setHeader> 
>             <to uri="ehcache:testcache?action=PUT"/>
>             <setBody>
>                 <constant>empty</constant>
>             </setBody>
>             <to uri="ehcache:testcache?action=GET"/>
>             <to uri="log:output?showAll=true"/>
>         </route>
>     </camelContext>
> </blueprint>
>
> The route run, but output showed that the key was not found in the cache
(body was "empty" instead of "testbody").
>
> I tried to add a sample xml configuration of the cache:
> <config xmlns="http://www.ehcache.org/v3";>
>     <cache alias="testcache">
>         <key-type>java.lang.String</key-type>
>         <value-type>java.lang.String</value-type>
>         <expiry><ttl unit="seconds">30</ttl></expiry>
>         <resources><heap unit="entries">10</heap></resources>
>     </cache>
> </config>
>
> And used it in the route:
> <?xml version="1.0" encoding="UTF-8"?>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";>
>     <bean id="cacheConfigurationURL" class="java.net.URL">
>         <argument value="file:deploy/ehcache.xml"/>
>     </bean>
>     <bean id="cacheConfigurationFile" class="org.ehcache.xml.
XmlConfiguration">
>         <argument ref="cacheConfigurationURL"/>
>     </bean>
>     <bean id="cacheManager" class="org.ehcache.config.builders.
CacheManagerBuilder" factory-method="newCacheManager">
>         <argument ref="cacheConfigurationFile"/>
>     </bean>
>     <camelContext xmlns="http://camel.apache.org/schema/blueprint"; id=
"CacheTest-ctx">
>         <route id="CacheTest">
>             <from uri="timer:onetime?repeatCount=1"/>
>             <setBody>
>                 <constant>testbody</constant>
>             </setBody>
>             <setHeader name="CamelEhcacheKey">
>                 <constant>testkey</constant>
>             </setHeader> 
>             <to uri="ehcache:testcache?action=PUT&amp;cacheManager=#
cacheManager"/>
>             <setBody>
>                 <constant>empty</constant>
>             </setBody>
>             <to uri="ehcache:testcache?action=GET&amp;cacheManager=#
cacheManager"/>
>             <to uri="log:output?showAll=true"/>
>         </route>
>     </camelContext>
> </blueprint>
>
> but the route will not start up, providing java.lang.
IllegalStateException: State is UNINITIALIZED exception.
> I understand that cacheManager.init have to be called before the route 
start, but could this be done with just blueprint DSL? I can not create a 
dummy bean and call this as a factory-method, as it returns void. I can not
call it in a separate route with lower startup order, as it is not fast 
enough.
> Any suggestions?
>
> Mirek Borský

"

Reply via email to