[JBoss JIRA] (WFLY-13360) Log INFO message when EJB does not implement Business interface
by Carlo de Wolf (Jira)
[ https://issues.redhat.com/browse/WFLY-13360?page=com.atlassian.jira.plugi... ]
Carlo de Wolf edited comment on WFLY-13360 at 7/23/20 7:54 AM:
---------------------------------------------------------------
EJB B does not need to implement business interface explicitly, it just won't expose the views defined in EJB A.
{panel:title=EJB 3.2 4.9.2.1}
A session bean class is permitted to have superclasses that are themselves session bean classes. However, there are no special rules that apply to the processing of annotations or the deployment descriptor for this case. For the purposes of processing a particular session bean class, all superclass processing is identical regardless of whether the superclasses are themselves session bean classes. In this regard, the use of session bean classes as superclasses merely represents a convenient use of _implementation inheritance_, but does not have _component inheritance semantics_.
{panel}
was (Author: wolfc):
EJB B does not need to implement business interface explicitly, it just won't expose the views defined in EJB A.
{panel:title=EJB 3.2 4.9.2.1}
A session bean class is permitted to have superclasses that are themselves session bean classes. How-
ever, there are no special rules that apply to the processing of annotations or the deployment descriptor
for this case. For the purposes of processing a particular session bean class, all superclass processing is
identical regardless of whether the superclasses are themselves session bean classes. In this regard, the
use of session bean classes as superclasses merely represents a convenient use of _implementation inher-
itance_, but does not have _component inheritance semantics_.
{panel}
> Log INFO message when EJB does not implement Business interface
> ---------------------------------------------------------------
>
> Key: WFLY-13360
> URL: https://issues.redhat.com/browse/WFLY-13360
> Project: WildFly
> Issue Type: Enhancement
> Components: EJB
> Reporter: Panagiotis Sotiropoulos
> Assignee: Panagiotis Sotiropoulos
> Priority: Major
>
> From the specification every business interface need to be declared explicitly as a business interface by @Remote or @Local annotation or deployment descriptor.
> {code}
> EJB 3.2 specification
> 4.9.7 Session Bean’s Business Interface
> - The bean class must implement the interface or the interface must be designated as a local or remote business interface of the bean by means of the Local or Remote annotation or in the deployment descriptor.
> - All business interfaces must be explicitly designated as such if any of the following is true:
> - the bean exposes a no-interface view
> - any interface of the bean class is explicitly designated as a business interface of the bean by either of the following means:
> - using the Local or Remote annotation with a non-empty value on the bean class
> - using the Local or Remote annotation on the interface
> - in the deployment descriptor
> {code}
> If EJB A implements I and EJB B extends A , EJB B must also declare it implements I in order to be spec compliant:
> {code}
> public interface I {...}
>
> @Stateless
> public class A implements I {...}
>
> @Stateless
> public class B extends A {...}
> {code}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 11 months
[JBoss JIRA] (WFLY-13360) Log INFO message when EJB does not implement Business interface
by Carlo de Wolf (Jira)
[ https://issues.redhat.com/browse/WFLY-13360?page=com.atlassian.jira.plugi... ]
Carlo de Wolf commented on WFLY-13360:
--------------------------------------
EJB B does not need to implement business interface explicitly, it just won't expose the views defined in EJB A.
{panel:title=EJB 3.2 4.9.2.1}
A session bean class is permitted to have superclasses that are themselves session bean classes. How-
ever, there are no special rules that apply to the processing of annotations or the deployment descriptor
for this case. For the purposes of processing a particular session bean class, all superclass processing is
identical regardless of whether the superclasses are themselves session bean classes. In this regard, the
use of session bean classes as superclasses merely represents a convenient use of _implementation inher-
itance_, but does not have _component inheritance semantics_.
{panel}
> Log INFO message when EJB does not implement Business interface
> ---------------------------------------------------------------
>
> Key: WFLY-13360
> URL: https://issues.redhat.com/browse/WFLY-13360
> Project: WildFly
> Issue Type: Enhancement
> Components: EJB
> Reporter: Panagiotis Sotiropoulos
> Assignee: Panagiotis Sotiropoulos
> Priority: Major
>
> From the specification every business interface need to be declared explicitly as a business interface by @Remote or @Local annotation or deployment descriptor.
> {code}
> EJB 3.2 specification
> 4.9.7 Session Bean’s Business Interface
> - The bean class must implement the interface or the interface must be designated as a local or remote business interface of the bean by means of the Local or Remote annotation or in the deployment descriptor.
> - All business interfaces must be explicitly designated as such if any of the following is true:
> - the bean exposes a no-interface view
> - any interface of the bean class is explicitly designated as a business interface of the bean by either of the following means:
> - using the Local or Remote annotation with a non-empty value on the bean class
> - using the Local or Remote annotation on the interface
> - in the deployment descriptor
> {code}
> If EJB A implements I and EJB B extends A , EJB B must also declare it implements I in order to be spec compliant:
> {code}
> public interface I {...}
>
> @Stateless
> public class A implements I {...}
>
> @Stateless
> public class B extends A {...}
> {code}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 11 months
[JBoss JIRA] (WFLY-11763) NPE in Infinispan EvictionManagerImpl when statistics are enabled
by Dan Berindei (Jira)
[ https://issues.redhat.com/browse/WFLY-11763?page=com.atlassian.jira.plugi... ]
Dan Berindei commented on WFLY-11763:
-------------------------------------
Fixed in Infinispan 10.0.0.Beta4 with ISPN-8219
> NPE in Infinispan EvictionManagerImpl when statistics are enabled
> -----------------------------------------------------------------
>
> Key: WFLY-11763
> URL: https://issues.redhat.com/browse/WFLY-11763
> Project: WildFly
> Issue Type: Bug
> Components: Clustering
> Affects Versions: 16.0.0.Beta1
> Reporter: Frank Langelage
> Assignee: Paul Ferraro
> Priority: Major
>
> I enabled statistics through attribute "statistics-enabled" within the infinispan subsystem on all cache-containner's and all local-cache's using standalone-full.xml as the base.
> After some time I see NullPointerExceptions with this stacktrace:
> {noformat}
> 22.02. 10:46:31,422 WARNING [com.github.benmanes.caffeine.cache.BoundedLocalCache#lambda$notifyRemoval$1] Exception thrown by removal listener: java.lang.NullPointerException
> at org.infinispan.eviction.impl.EvictionManagerImpl.updateEvictionStatistics(EvictionManagerImpl.java:45)
> at org.infinispan.eviction.impl.EvictionManagerImpl.onEntryEviction(EvictionManagerImpl.java:39)
> at org.infinispan.container.impl.AbstractInternalDataContainer$DefaultEvictionListener.onEntryEviction(AbstractInternalDataContainer.java:516)
> at org.infinispan.container.impl.AbstractInternalDataContainer.lambda$applyListener$5(AbstractInternalDataContainer.java:479)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$notifyRemoval$1(BoundedLocalCache.java:286)
> at org.infinispan.util.concurrent.WithinThreadExecutor.execute(WithinThreadExecutor.java:20)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.notifyRemoval(BoundedLocalCache.java:292)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.evictEntry(BoundedLocalCache.java:821)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.evictFromMain(BoundedLocalCache.java:638)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.evictEntries(BoundedLocalCache.java:504)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.maintenance(BoundedLocalCache.java:1137)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.performCleanUp(BoundedLocalCache.java:1108)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache$PerformCleanupTask.run(BoundedLocalCache.java:2979)
> at org.infinispan.util.concurrent.WithinThreadExecutor.execute(WithinThreadExecutor.java:20)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.scheduleDrainBuffers(BoundedLocalCache.java:1080)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.scheduleAfterWrite(BoundedLocalCache.java:1047)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.afterWrite(BoundedLocalCache.java:1017)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.remap(BoundedLocalCache.java:2272)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.compute(BoundedLocalCache.java:2146)
> at com.github.benmanes.caffeine.cache.LocalCache.compute(LocalCache.java:100)
> at org.infinispan.container.impl.AbstractInternalDataContainer.compute(AbstractInternalDataContainer.java:229)
> at org.infinispan.container.impl.AbstractInternalDataContainer.compute(AbstractInternalDataContainer.java:248)
> at org.infinispan.cache.impl.SimpleCacheImpl.putForExternalReadInternal(SimpleCacheImpl.java:207)
> at org.infinispan.cache.impl.StatsCollectingCache.putForExternalReadInternal(StatsCollectingCache.java:200)
> at org.infinispan.cache.impl.SimpleCacheImpl.putForExternalRead(SimpleCacheImpl.java:180)
> at org.infinispan.cache.impl.AbstractDelegatingCache.putForExternalRead(AbstractDelegatingCache.java:49)
> at org.infinispan.cache.impl.EncoderCache.putForExternalRead(EncoderCache.java:175)
> at org.infinispan.cache.impl.AbstractDelegatingCache.putForExternalRead(AbstractDelegatingCache.java:49)
> at org.infinispan.hibernate.cache.commons.access.InvalidationCacheAccessDelegate.putFromLoad(InvalidationCacheAccessDelegate.java:114)
> at org.infinispan.hibernate.cache.v53.impl.ReadOnlyEntityDataAccess.putFromLoad(ReadOnlyEntityDataAccess.java:30)
> at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:226)
> at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:129)
> at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.performTwoPhaseLoad(AbstractRowReader.java:238)
> at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(AbstractRowReader.java:209)
> at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:133)
> at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:122)
> at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86)
> at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:188)
> at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4271)
> at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:511)
> at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:481)
> at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:222)
> at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:281)
> at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:124)
> at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:92)
> at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1257)
> at org.hibernate.internal.SessionImpl.access$1900(SessionImpl.java:207)
> at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2874)
> at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2848)
> at org.hibernate.internal.SessionImpl.find(SessionImpl.java:3483)
> at org.hibernate.internal.SessionImpl.find(SessionImpl.java:3447)
> at org.jboss.as.jpa.container.AbstractEntityManager.find(AbstractEntityManager.java:213)
> at biz.mbisoftware.fn.ejb.session.core.MbiFeatureFacade.getVariaData(MbiFeatureFacade.java:282)
> {noformat}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 11 months