Jakob, the method is being called twice. The problem is that in 
BeanGenerator#createBeanClass
the generatedClassCounter is 0 both times, hence the duplicate name (bean0), so 
clearly different
instances of BeanGenerator are being used.

The call stack isn't making a lot of immediate sense to me I'm afraid, but this 
is what is shown
with a method breakpoint on afterBeanDiscovery:

call stack 1st call:

com.sun.jersey.server.impl.cdi.CDIExtension.afterBeanDiscovery(CDIExtension.java:756)

sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:597)
org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:305)

org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)

org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163)

org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:299)

org.jboss.weld.introspector.jlr.WeldMethodImpl.invokeOnInstance(WeldMethodImpl.java:188)

org.jboss.weld.introspector.ForwardingWeldMethod.invokeOnInstance(ForwardingWeldMethod.java:59)

org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:198)

org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:282)
org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:265)
org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:234)
org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:88)

org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(AbstractDefinitionContainerEvent.java:52)

org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl.fire(AfterBeanDiscoveryImpl.java:43)

org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:372)
org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:170)
org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:128)
org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:270)
com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461)

com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)

org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:382)
com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)

com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)

com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1064)

com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)

com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1244)

com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1232)

com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:459)
com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:209)
com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:238)

com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)

com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)

com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)

com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
com.sun.grizzly.ContextTask.run(ContextTask.java:71)
com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)

com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
java.lang.Thread.run(Thread.java:662)
 
call stack 2nd call:
 
com.sun.jersey.server.impl.cdi.CDIExtension.afterBeanDiscovery(CDIExtension.java:756)

sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:597)
org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:256)
org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:440)

org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:403)

org.apache.webbeans.config.BeansDeployer.fireAfterBeanDiscoveryEvent(BeansDeployer.java:263)

org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:176)
org.apache.webbeans.lifecycle.AbstractLifeCycle.startApplication(AbstractLifeCycle.java:123)

org.apache.webbeans.web.lifecycle.WebContainerLifecycle.startApplication(WebContainerLifecycle.java:78)

org.apache.webbeans.servlet.WebBeansConfigurationListener.contextInitialized(WebBeansConfigurationListener.java:80)

org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:4750)

com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:550)
org.apache.catalina.core.StandardContext.start(StandardContext.java:5366)
com.sun.enterprise.web.WebModule.start(WebModule.java:498)
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901)
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733)
com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2000)
com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1651)
com.sun.enterprise.web.WebApplication.start(WebApplication.java:109)
org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269)
org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:294)
com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:462)

com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)

org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:382)
com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)

com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)

com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1064)

com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)

com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1244)

com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1232)

com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:459)
com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:209)
com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:238)

com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)

com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)

com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)

com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
com.sun.grizzly.ContextTask.run(ContextTask.java:71)
com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)

com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
java.lang.Thread.run(Thread.java:662)
 
Thanks for taking the time to look at this.
 
Regards,
Brendan. 




________________________________
From: Jakob Korherr <[email protected]>
To: [email protected]
Sent: Wed, 10 August, 2011 15:09:58
Subject: Re: Compatibility issue with Jersey (JAX-RS) & OWB on Glassfish 3.1.1

Hi,

I checked the jersey source code and this exception can only happen if

void afterBeanDiscovery(@Observes AfterBeanDiscovery event) { ... }

of com.sun.jersey.server.impl.cdi.CDIExtension is called twice, which
shouldn't happen.

Can you set a break point into this method and check if it is called
twice? and from where/who?

Regards,
Jakob


2011/8/10 Brendan Healey <[email protected]>:
> (I had problems sending the email inline with yahoo mail, the attachment
> 'save.txt' hopefully
>
> will contain the intended content..)



-- 
Jakob Korherr

blog: http://www.jakobk.com
twitter: http://twitter.com/jakobkorherr
work: http://www.irian.at

Reply via email to