Hi all, I´ve reported the OSGi ClassLoader issue as https://issues.apache.org/jira/browse/OPENJPA-2542.
Kind regards, Jörn On Tue, Nov 11, 2014 at 3:33 PM, Jörn Gersdorf <joern.gersd...@gmail.com> wrote: > Hi Rick, > > thanks for you thought. The reason I´m using the custom JDBCBrokerFactory > is that I want to have the QueryCache disabled _by default_ and only enable > it on occasion. With the out-of-the-box-JDBCBrokerFactory it´s only > possible the other way around (disable on occasion). > > Now, my custom JDBCBrokerFactory is working in a non-OSGi-Environment. > Unfortunately, due to OPENJPA-1491, I´m currently not able to load my > custom JDBCBrokerFactory (which is living in my own bundle) as openjpa > will only load a BrokerFactory using the OpenJPA-Bundle´s classloader. > > Kind regards, > Jörn > > On Mon, Nov 10, 2014 at 7:24 PM, Rick Curtis <curti...@gmail.com> wrote: > >> > However I wonder if there is an easier way to achieve this? >> I thought there was an easier way... but after digging around a bit I >> didn't come up with anything better. While what you are doing is >> completely >> valid, I'd almost recommend the creation of a helper method that will >> disable/enable the QueryReultsCache when you create a query. A custom >> JDBCBrokerFactory seems like quite a lot of complexity when you could just >> call .setQueryCacheEnabled(false) when you do/don't want caching... then >> again, that is just my opinion. >> >> I think the ideal solution would involve the addition of a new >> configuration property to OpenJPAConfigurationImpl. Something similar to >> openjpa.MaxFetchDepth[1]. >> >> Thanks, >> Rick >> >> [1] >> >> http://ci.apache.org/projects/openjpa/trunk/docbook/manual.html#openjpa.MaxFetchDepth >> >> On Mon, Nov 10, 2014 at 1:30 AM, Jörn Gersdorf <joern.gersd...@gmail.com> >> wrote: >> >> > Hi, >> > >> > I´d like to enable OpenJPA´s query cache in a selective way, i. e. it >> > should be disabled unless I enable it explicitly using >> > query.getFetchPlan().setQueryResult(true). >> > >> > I´ve figured out that this requires >> > FetchConfigurationImpl$ConfigurationState#queryCache to be set to false >> by >> > default, however, there does not seem to be a configuration property for >> > this. >> > >> > So I ended up subclassing JDBCBrokerFactory and configure this via >> property >> > openjpa.BrokerFactory (see code below). >> > >> > However I wonder if there is an easier way to achieve this? >> > >> > Thanks and best regards, >> > Jörn >> > >> > Code: >> > >> > <property name="openjpa.BrokerFactory" >> > value="de.dwpbank.wp2d.wprecon.model.cache.CustomJDBCBrokerFactory" /> >> > >> > >> > public class CustomJDBCBrokerFactory extends JDBCBrokerFactory { >> > >> > public CustomJDBCBrokerFactory(JDBCConfiguration conf) { >> > super(conf); >> > } >> > >> > @Override >> > protected StoreManager newStoreManager() { >> > return new JDBCStoreManager() { >> > @Override >> > public FetchConfiguration newFetchConfiguration() { >> > return >> > super.newFetchConfiguration().setQueryCacheEnabled(false); >> > } >> > }; >> > } >> > >> > public static CustomJDBCBrokerFactory >> newInstance(ConfigurationProvider >> > cp) { >> > JDBCConfigurationImpl conf = new JDBCConfigurationImpl(); >> > cp.setInto(conf); >> > return new CustomJDBCBrokerFactory(conf); >> > } >> > } >> > >> >> >> >> -- >> *Rick Curtis* >> > >