openwebbeans-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thusitha Thilina Dayaratne <thusithathil...@gmail.com>
Subject Re: NPE when webBeansContext.getApplicationBoundaryService() in AbstractProxyFactory openwebbeans 1.2.7
Date Wed, 20 May 2015 06:16:42 GMT
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 <
thusithathilina@gmail.com>:

> 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 <
> thusithathilina@gmail.com>:
>
>> 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 <struberg@yahoo.de>:
>>
>>> 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 <
>>> thusithathilina@gmail.com>:
>>> >
>>> > 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 <struberg@yahoo.de>:
>>> > 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 <
>>> rmannibucau@gmail.com>:
>>> > >
>>> > > 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 <
>>> thusithathilina@gmail.com>:
>>> > > 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
>>> > >
>>> > > --
>>> > >
>>> > >
>>> >
>>> >
>>> >
>>> >
>>> > --
>>> >
>>>
>>>
>>
>>
>> --
>>
>>
>
>
>
> --
>
>



--

Mime
View raw message