Hi, I did some more debugging through the openwebbeans source. Following are my findings. In the debug mode if I set the property org.apache.webbeans.spi. ApplicationBoundaryService to org.apache.webbeans.corespi.se. DefaultApplicationBoundaryService inside the to the properties parameter in the WebBeansContext overloaded constructor everything works fine. So I back track the source to find where that properties get initialized.
I think it is getting initialized at initialize() method in the org.apache.openejb.cdi.ThreadSingletonServiceImpl class. There it created a Properties object and put some properties and also get the application properties and put them to that as well. In my case properties.putAll(appContext.getProperties()); this doesn't add anything since appContext.getProperties() is empty. Then I check for the place where openwebbeans reads the openwebbeans.properties file and load from that. I think it is happen in the parseConfiguration() method inside org.apache.webbeans.config.OpenWebBeansConfiguration class. When I debug the particular line where it loads the properties from META-INF/openwebbeans/openwebbeans.properties Properties newConfigProperties = PropertyLoader.getProperties(DEFAULT_CONFIG_PROPERTIES_NAME); it return null for me. It seems that my bundle is not correctly picking up the properties file. Could someone figure out a possible reason for that? Is this a configuration error in my bundle? Thanks Best Regards 2015-05-20 10:22 GMT+05:30 Thusitha Thilina Dayaratne < [email protected]>: > Hi, > > >>The stuff with the -D… for all owb properties only works in trunk. > >>Could you plz try the tomee-7.0.0-SNAPSHOT? Of course this is CDI-1.1 > and a few more EE7 libs, so not sure whether you need updates. > >>If it works then I can backport this to owb-1.2.x. > I've checked the tomee master branch source which is 7.0.0-SNAPSHOT. There > the tomcat version is 8.0.22. > We are trying to introduce tomee support to a server based on Tomcat > 7.0.59. There are quite few API changes from tomcat 7.x to 8.x. Therefore I > think trying with TomEE 7.0.0-SNAPSHOT will not solve the issue. > Please correct me if I'm wrong. > > Thanks > Best Regards > /Thusitha > > 2015-05-19 22:11 GMT+05:30 Thusitha Thilina Dayaratne < > [email protected]>: > >> Hi, >> >> If someone like to check the bundle I put my pom in the link >> http://pastebin.com/jbWzKaE4 >> >>The stuff with the -D… for all owb properties only works in trunk. >> >>Could you plz try the tomee-7.0.0-SNAPSHOT? Of course this is CDI-1.1 >> and a few more EE7 libs, so not sure whether you need updates. >> >>If it works then I can backport this to owb-1.2.x. >> Should I just change the tomee version without changing openwebbeans and >> etc..? >> >> >>Please keep us updated ;) >> Sure :) >> >> 2015-05-19 21:56 GMT+05:30 Mark Struberg <[email protected]>: >> >>> The stuff with the -D… for all owb properties only works in trunk. >>> Could you plz try the tomee-7.0.0-SNAPSHOT? Of course this is CDI-1.1 >>> and a few more EE7 libs, so not sure whether you need updates. >>> If it works then I can backport this to owb-1.2.x. >>> >>> Please keep us updated ;) >>> >>> LieGrue, >>> strub >>> >>> > Am 19.05.2015 um 18:22 schrieb Thusitha Thilina Dayaratne < >>> [email protected]>: >>> > >>> > Hi, >>> > >>> > >>does your openwebbeans.properties miss it? Are you still in OSGi? >>> > I'm still in OSGi. Due to some reasons I can't use Apache karaf. >>> > My OSGi bundle contains the openwebbeans.properties file. But I'm >>> getting the error. >>> > >>> > >>> >>org.apache.webbeans.spi.ApplicationBoundaryService=org.apache.webbeans.corespi.se.DefaultApplicationBoundaryService >>> > I've manually set the property when the server starts as >>> -Dorg.apache.webbeans.spi.ApplicationBoundaryService=org.apache.webbeans.corespi.se.DefaultApplicationBoundaryService >>> > But still no success on this. >>> > >>> > >>> > >>> > 2015-05-19 19:35 GMT+05:30 Mark Struberg <[email protected]>: >>> > Hi! >>> > >>> > The property in question is: >>> > >>> > >>> org.apache.webbeans.spi.ApplicationBoundaryService=org.apache.webbeans.corespi.se.DefaultApplicationBoundaryService >>> > >>> > >>> > LieGrue, >>> > strub >>> > >>> > >>> > >>> > > Am 19.05.2015 um 15:59 schrieb Romain Manni-Bucau < >>> [email protected]>: >>> > > >>> > > Hi >>> > > >>> > > does your openwebbeans.properties miss it? Are you still in OSGi? >>> > > >>> > > >>> > > Romain Manni-Bucau >>> > > @rmannibucau | Blog | Github | LinkedIn | Tomitriber >>> > > >>> > > 2015-05-19 15:32 GMT+02:00 Thusitha Thilina Dayaratne < >>> [email protected]>: >>> > > Hi, >>> > > >>> > > I'm trying to upgrade tomee support in our server from tomee 1.6.0.3 >>> to 1.7.2. Since 1.7.2 is not released yet I'm using 1.7.2-SNAPSHOT along >>> with the openwebbeans 1.2.7. >>> > > After doing the changes when I deploy an simple CDI app it throws >>> following exception (I deployed and run the same app with tomee 1.6.0.3 and >>> openwebbeans 1.2.1 it works fine there) >>> > > >>> > > ERROR {org.apache.catalina.core.StandardWrapperValve} - Allocate >>> exception for servlet HelloServlet >>> > > java.lang.NullPointerException >>> > > at >>> org.apache.webbeans.proxy.AbstractProxyFactory.getProxyClassLoader(AbstractProxyFactory.java:81) >>> > > at >>> org.apache.webbeans.proxy.NormalScopeProxyFactory.createNormalScopeProxy(NormalScopeProxyFactory.java:122) >>> > > at >>> org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:732) >>> > > at >>> org.apache.webbeans.portable.ProducerMethodProducer.produce(ProducerMethodProducer.java:105) >>> > > at >>> org.apache.webbeans.portable.AbstractProducer.produce(AbstractProducer.java:182) >>> > > at >>> org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:121) >>> > > at >>> org.apache.webbeans.component.ProducerMethodBean.create(ProducerMethodBean.java:117) >>> > > at >>> org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:68) >>> > > at >>> org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:125) >>> > > at >>> org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:754) >>> > > at >>> org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:628) >>> > > at >>> org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:95) >>> > > at >>> org.apache.webbeans.inject.InjectableField.doInjection(InjectableField.java:65) >>> > > at >>> org.apache.webbeans.portable.InjectionTargetImpl.injectFields(InjectionTargetImpl.java:208) >>> > > at >>> org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:194) >>> > > at >>> org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:184) >>> > > at >>> org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:125) >>> > > at >>> org.apache.openejb.core.WebContext.newInstance(WebContext.java:138) >>> > > at >>> org.apache.tomee.catalina.JavaeeInstanceManager.newInstance(JavaeeInstanceManager.java:46) >>> > > at >>> org.apache.tomee.catalina.JavaeeInstanceManager.newInstance(JavaeeInstanceManager.java:66) >>> > > at >>> org.apache.tomee.catalina.JavaeeInstanceManager.newInstance(JavaeeInstanceManager.java:61) >>> > > at >>> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148) >>> > > at >>> org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864) >>> > > at >>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134) >>> > > at >>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) >>> > > at >>> org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44) >>> > > at >>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) >>> > > at >>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) >>> > > at >>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) >>> > > at >>> org.wso2.carbon.statistics.webapp.RequestIntercepterValve.invoke(RequestIntercepterValve.java:47) >>> > > at >>> org.wso2.carbon.bam.webapp.stat.publisher.WebAppStatisticPublisherValve.invoke(WebAppStatisticPublisherValve.java:104) >>> > > at >>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99) >>> > > at >>> org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47) >>> > > at >>> org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57) >>> > > at >>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) >>> > > at >>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62) >>> > > at >>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159) >>> > > at >>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) >>> > > at >>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57) >>> > > at >>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) >>> > > at >>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) >>> > > at >>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074) >>> > > at >>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) >>> > > at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1739) >>> > > at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1698) >>> > > at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) >>> > > at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >>> > > at >>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) >>> > > at java.lang.Thread.run(Thread.java:745) >>> > > >>> > > After some debugging the both versions I found out that NPE is get >>> thrown because ApplicationBoundaryService applicationBoundaryService in the >>> WebBeansContext is null. >>> > > >>> > > The only possible place that I see where it get initialized is in >>> the overloaded constructor of the WebBeansContext. >>> > > >>> > > In 1.2.1 NormalScopeProxyFactory.createNormalScopeProxy() method >>> will get the classloader from the first if clause as classLoader = >>> bean.getBeanClass().getClassLoader() >>> > > >>> > > But in 1.2.7 it try to get classloader as classLoader = >>> getProxyClassLoader(bean.getBeanClass()) >>> > > From there NPE get thrown. I manually executed the 1.2.1 logic in >>> debug mode and then classloader get correctly. >>> > > >>> > > Did I missed setting any configurations? >>> > > Can someone guide me on solving this? >>> > > >>> > > Thanks >>> > > Best Regards >>> > > >>> > > -- >>> > > >>> > > >>> > >>> > >>> > >>> > >>> > -- >>> > >>> >>> >> >> >> -- >> >> > > > > -- > > --
