That looks promising. Ever tried it with Karaf 4? I'm about to fire it up.
On Sun, Nov 8, 2015 at 3:31 PM, Christian Schneider <[email protected]> wrote: > The problem you observe can happen if the classloader that is used does not > see the necessary packages. > As in OSGi each bundle classloader can only see the packages it imports you > can have the effect that you can not load a package even if it is in the > bundle if the code uses a classloader that does not have the necessary > imports (e.g. from a different bundle). > This typically happens with legacy code that makes assumptions on the > classloader that it rather should not for OSGi. > > The hibernate vailidation is such a case. The good news is that it can be > tuned to work in OSGi. > > See > https://github.com/hibernate/hibernate-validator/blob/master/osgi/integrationtest/src/test/java/org/hibernate/validator/osgi/integrationtest/OsgiIntegrationTest.java > > Christian > > > Am 08.11.2015 um 19:11 schrieb Benson Margulies: >> >> package:exports -d does not think that more than one bundle is >> exporting the package. >> >> Here's the class I built to stay out of the SPI. >> >> public final class OSGIValidationFactory { >> private OSGIValidationFactory() { >> // >> } >> >> static class OSGIServiceDiscoverer implements >> ValidationProviderResolver { >> >> @Override >> public List<ValidationProvider<?>> getValidationProviders() { >> List<ValidationProvider<?>> providers = new ArrayList<>(); >> providers.add(new HibernateValidator()); >> return providers; >> } >> } >> >> public static ValidatorFactory newHibernateValidatorFactory() { >> javax.validation.Configuration<?> config = >> Validation.byDefaultProvider() >> .providerResolver(new OSGIServiceDiscoverer()) >> .configure(); >> >> return config.buildValidatorFactory(); >> } >> } >> >> >> On Sun, Nov 8, 2015 at 1:10 PM, Benson Margulies <[email protected]> >> wrote: >>> >>> Karaf 4.0.2. >>> >>> I'm not sure what you mean by 'framework'. I'm just running karaf, I >>> am not messing with the system bundle. I pulled together my own little >>> bundle for validation that uses a custom locator to avoid the SPI, and >>> it works in an isolated test in karaf, but when I put the whole thing >>> together, blam. How would I investigate the possibility of multiple >>> bundles? >>> >>> >>> >>> On Sun, Nov 8, 2015 at 1:06 PM, Jean-Baptiste Onofré <[email protected]> >>> wrote: >>>> >>>> Hi Benson, >>>> >>>> don't you have multiple bundle providing the same package ? >>>> I suspect two bundles providing com.sun.el package (or the system >>>> package). >>>> >>>> What's the Karaf version (and framework in use) ? >>>> >>>> Regards >>>> JB >>>> >>>> >>>> On 11/08/2015 07:04 PM, Benson Margulies wrote: >>>>> >>>>> I'm getting a ClassNotFoundException trying to use bean validation. >>>>> >>>>> karaf@root>package:exports | grep com.sun.el >>>>> com.sun.el | 2.2.4 >>>>> | 174 | org.glassfish.web.javax.el >>>>> >>>>> But: >>>>> >>>>> karaf@root> bundle:find-class com.sun.el.ExpressionFactoryImpl >>>>> karaf@root> >>>>> >>>>> even though the class is sitting right there in the jar file for that >>>>> bundle. >>>>> >>>>> karaf@root>bundle:classes 174 | grep Expr >>>>> com/sun/el/ExpressionFactoryImpl.class >>>>> >>>>> what's up? >>>>> >>>> -- >>>> Jean-Baptiste Onofré >>>> [email protected] >>>> http://blog.nanthrax.net >>>> Talend - http://www.talend.com > >
