Mantis - Resin
|
|||||
Viewing Issue Advanced Details | |||||
|
|||||
ID: | Category: | Severity: | Reproducibility: | Date Submitted: | Last Update: |
4467 | major | always | 03-30-11 07:10 | 04-04-11 18:04 | |
|
|||||
Reporter: | andreaskaltenbach | Platform: | |||
Assigned To: | emil | OS: | |||
Priority: | normal | OS Version: | |||
Status: | closed | Product Version: | 4.0.16 | ||
Product Build: | Resolution: | unable to reproduce | |||
Projection: | none | ||||
ETA: | none | Fixed in Version: | |||
|
|||||
Summary: | 0004467: Resin unable to compile typed interfaces for stateless session beans | ||||
Description: |
Assume the following setup: public interface Importer<T> { void doImport(T t); } @Stateless public ImporterImpl implements Importer<String> { public void doImport(String t); } --- When setting up the EJBs, Resin fails with the following message: java.lang.IllegalStateException: AnnotatedMethodImpl[public abstract void Importer.doImport(java.lang.Object)] does not have a matching base method in {1} Internally, AnnotatedTypeUtil compares the two parameter lists but returns that doImport(T t) and doImport(String t) do not match. Reason is that a comparison of the java.lang.Class 'String' with a java.lang.reflect.TypeVariable is done (AnnotatedTypeUtil.isMatch(List<AnnotatedParameter<?>>, List<AnnotatedParameter<?>>)). Instead for comparing those types, the TypeVariable's bounds have to compared. A workaround is to not use typed interfaces, but this a big limitiation in designing services. |
||||
Steps To Reproduce: | |||||
Additional Information: |
Full stack trace: at com.caucho.ejb.gen.SessionGenerator.introspectMethod(SessionGenerator.java:244) at com.caucho.ejb.gen.SessionGenerator.introspectType(SessionGenerator.java:226) at com.caucho.ejb.gen.SessionGenerator.introspect(SessionGenerator.java:206) at com.caucho.ejb.gen.StatelessGenerator.introspect(StatelessGenerator.java:177) at com.caucho.ejb.session.AbstractSessionManager.bind(AbstractSessionManager.java:251) at com.caucho.ejb.manager.EjbManager.bind(EjbManager.java:540) at com.caucho.ejb.manager.EjbManager.environmentBind(EjbManager.java:662) at com.caucho.loader.EnvironmentClassLoader.bind(EnvironmentClassLoader.java:864) at com.caucho.loader.EnvironmentClassLoader.start(EnvironmentClassLoader.java:883) at com.caucho.server.webapp.WebApp.start(WebApp.java:3109) at com.caucho.env.deploy.DeployController.startImpl(DeployController.java:630) at com.caucho.env.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:77) at com.caucho.env.deploy.DeployController.startOnInit(DeployController.java:493) at com.caucho.env.deploy.DeployContainer.start(DeployContainer.java:171) at com.caucho.server.webapp.WebAppContainer.start(WebAppContainer.java:713) at com.caucho.server.host.Host.start(Host.java:676) at com.caucho.env.deploy.DeployController.startImpl(DeployController.java:630) at com.caucho.env.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:77) at com.caucho.env.deploy.DeployController.startOnInit(DeployController.java:493) at com.caucho.env.deploy.DeployContainer.start(DeployContainer.java:171) at com.caucho.server.host.HostContainer.start(HostContainer.java:542) at com.caucho.server.cluster.Server.start(Server.java:1225) at com.caucho.server.cluster.ServletService.start(ServletService.java:72) at com.caucho.env.service.ResinSystem.startServices(ResinSystem.java:508) at com.caucho.env.service.ResinSystem.start(ResinSystem.java:476) at com.caucho.server.resin.Resin.start(Resin.java:892) at com.caucho.server.resin.Resin.initMain(Resin.java:1020) at com.caucho.server.resin.Resin.main(Resin.java:1297) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) |
||||
Relationships | |||||
Attached Files: |
![]() |
Notes | |||||
|
|||||
|
|
||||
|
|||||
|
|