Bug 1034776 - Incorrect handling of business interfaces for EJBs (where defining class of business method is not the Business interface of the EJBs)
Summary: Incorrect handling of business interfaces for EJBs (where defining class of b...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: JBoss Enterprise Application Platform 6
Classification: JBoss
Component: CDI/Weld
Version: 6.1.0
Hardware: All
OS: All
unspecified
high
Target Milestone: CR3
: EAP 6.2.1
Assignee: Jozef Hartinger
QA Contact: Tomas Remes
Russell Dickenson
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-11-26 13:41 UTC by Ingo Weiss
Modified: 2018-12-04 16:27 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Session bean observer method validation did not correctly validate methods declared on a local interface which had a super interface. As a result, deployments may have failed with `WELD-000088, Observer method must be static or local business method`. This occurred when a Session Bean class with an observer method inherits from an interface that does not have the method signature defined by its super interface, and at the same time the Session Bean class extends the class that has the method implementation. Weld's internal session bean implementation has been fixed to include inherited methods in the `checkObserverMethods` method. As a result, deployments with the above implementation will now deploy successfully.
Clone Of:
Environment:
Last Closed: 2014-02-24 20:15:27 UTC
Type: Bug


Attachments (Terms of Use)
Reproducer provided by the customer (15.04 KB, application/zip)
2013-11-26 13:41 UTC, Ingo Weiss
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker WELD-1563 0 Major Resolved Session bean observer method validation does not consider methods declared on local interface superinterface 2016-08-15 19:21:44 UTC
Red Hat Issue Tracker WELD-921 0 Major Resolved Incorrect handling of business interfaces for EJBs (where defining class of business method is not the Business interfac... 2016-08-15 19:21:44 UTC

Description Ingo Weiss 2013-11-26 13:41:17 UTC
Created attachment 829269 [details]
Reproducer provided by the customer

Description of problem:
Customer experiences WELD-000088, Observer method must be static or local business method:  [method] public org.sis.weldTicket.BaseClass.observe(Object) on public@Stateless @Local class org.sis.weldTicket.BeanClass, when an EJB inherits from an interface that does not have the method signature defined by its super-interface and, at the same time, extends the class that has the method implementation.

This "BeanClass" extends "BaseClass" and implements "A" interface. "A" extends "B" without defining the method signature from "B". "BaseClass" has no annotation or implements any of the interfaces but contains the implementation of interface "B" signature. "BeanClass" has @Stateless and @Local(A.class).

Version-Release number of selected component (if applicable):
6.1.x

How reproducible:
Always reproducible

Steps to Reproduce:
Compile and deploy the attached reproducer

Actual results:
Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000088 Observer method must be static or local business method:  [method] public org.sis.weldTicket.BaseClass.observe(Object) on public@Stateless @Local class org.sis.weldTicket.BeanClass

Expected results:
No exceptions

Comment 6 Tomas Remes 2014-01-30 12:27:45 UTC
I verified this in jboss-eap-6.2.1.CP.CR3-patch.

Comment 7 Lucas Costi 2014-01-31 00:51:10 UTC
Adding release note for 6.2.1


Note You need to log in before you can comment on or make changes to this bug.