1

I'm trying to migrate our project from Wildfly 8.2 to 9, and using version 9.0.0 CR1.

One of the problems I faced is with old EJB2 code. While in 8.2 everything works fine, in 9 I get

ERROR [org.jboss.as.ejb3.invocation] (MSC service thread 1-2) WFLYEJB0034: EJB Invocation failed on component MetadataInstanceFacade for method public abstract java.util.Collection com.mypackage.ejb.session.metadata.MetadataInstanceFacadeLocal.findByMetatypeAndUpperInstanceId2(java.lang.Integer,java.lang.Integer,java.lang.Boolean): javax.ejb.EJBException: java.lang.IllegalStateException: WFLYEE0067: Method does not exist public final java.util.Collection com.mypackage.ejb.session.metadata.InstanceFacadeBean.findByMetatypeAndUpperInstanceId2(java.lang.Integer,java.lang.Integer,java.lang.Boolean)
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInNoTx(CMTTxInterceptor.java:213)
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInNoTx(CMTTxInterceptor.java:265)
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.supports(CMTTxInterceptor.java:374)
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:243)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:66)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ejb3.component.interceptors.EjbExceptionTransformingInterceptorFactories$2.processInvocation(EjbExceptionTransformingInterceptorFactories.java:103)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:634)
    at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
    at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:195)
    at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:185)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73)
    at com.mypackage.ejb.session.metadata.MetadataInstanceFacadeLocal$$$view113.findByMetatypeAndUpperInstanceId2(Unknown Source)
    at com.mypackage.media.bd.metadata.InstanceBD.findByMetatypeAndUpperInstanceId2(InstanceBD.java:252)
    at com.mypackage.util.ApplicationContextListener.contextInitialized(ApplicationContextListener.java:377)
    at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:173)
    at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:195)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:86)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.start(UndertowDeploymentService.java:71)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: WFLYEE0067: Method does not exist public final java.util.Collection com.mypackage.ejb.session.metadata.InstanceFacadeBean.findByMetatypeAndUpperInstanceId2(java.lang.Integer,java.lang.Integer,java.lang.Boolean)
    at org.jboss.as.ee.component.BasicComponentInstance.getInterceptor(BasicComponentInstance.java:102)
    at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ejb3.component.interceptors.NonPooledEJBComponentInstanceAssociatingInterceptor.processInvocation(NonPooledEJBComponentInstanceAssociatingInterceptor.java:59)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInNoTx(CMTTxInterceptor.java:263)
    ... 55 more

EJB2 interfaces and XML are generated by xdoclet.

Any ideas why it happens and how to fix this?

dds
  • 2,335
  • 1
  • 31
  • 45

1 Answers1

3

It was because of the final method modifier.

dds
  • 2,335
  • 1
  • 31
  • 45
  • We face the same problem. Can you shed some light on why `final` is *evil* in this context? *Migrating form WildFly-8.1.0.Final to WildFly-9.0.1.Final here* – Robert Heine Sep 07 '15 at 08:44
  • 1
    "When generating a no-interface view proxy, the EJB container must create a subclass of the EJB class and override all public methods to provide proxying behavior." - so it can't do this, when method is final. – dds Sep 07 '15 at 08:48
  • Can you provide a source to this? I'm still confused that WF-8.x and WF-9.x seem to handle this THAT different. – Robert Heine Sep 07 '15 at 08:58
  • 1
    if you mean source in Wildfly, then I don't know, where this processing is. You you mean my source, it was just a method in EJB bean with public final method. You want me to show it? – dds Sep 07 '15 at 11:28
  • Sorry, I didn't mean the "sourcecode" in any form, but the source of the text in your quoutes. :) I thought you found that in some EJB spec or something. – Robert Heine Sep 07 '15 at 13:20
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/89041/discussion-between-dds-and-rob). – dds Sep 08 '15 at 08:11