Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
8.0.0-M3, 8.0.0-Final
-
None
-
None
-
None
Description
Copied from the Mailing-List:
---------- Forwarded message ---------
From: makkus <sancho-fx3@gmx.de>
Date: Mon, Oct 14, 2019 at 5:14 AM
Subject: CDI Principal injection: object is not an instance of declaring
class
To: <users@tomee.apache.org>Hi Folks,
in TomEE 8.0.0 there seems to be something wrong with the Principal
injection: The follwoing code works fine in M2:package leaktest;
import java.security.Principal;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;@Named
@RequestScoped
public class PrincipalTest {@Inject
private Principal principal;public String userName()
Unknown macro: { return principal.getName(); }}
Inside a JSF page I can use "User Name: #
Unknown macro: {principalTest.userName()}" to
display the user name. (See attached leak2.war
<http://tomee-openejb.979440.n4.nabble.com/file/t376354/leak2.war> or
https://1drv.ms/u/s!AlHB9FAlFWW_iLJlTcyBEqApE_UAvQ?e=HODheK for example. )In 8.0.0. this is code will produce an IllegalArgumentException:
java.lang.IllegalArgumentException: object is not an instance of declaring
classjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:566)org.apache.openejb.cdi.ManagedSecurityService$PrincipalInvocationHandler.invoke(ManagedSecurityService.java:183)
com.sun.proxy.$Proxy72.getName(Unknown Source)
leaktest.PrincipalTest.userName(PrincipalTest.java:25)leaktest.PrincipalTest$$OwbNormalScopeProxy0.userName(leaktest/PrincipalTest.java)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:566)
javax.el.BeanELResolver.invoke(BeanELResolver.java:158)
...Doese someone kow if this code is unsupported in 8.0.0 ? How can I get a
reference to the principal name in 8.0.0.Best Regards,
Marcus