You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shiro.apache.org by "Harald Wellmann (JIRA)" <ji...@apache.org> on 2013/03/10 17:49:12 UTC
[jira] [Comment Edited] (SHIRO-422) Reference CDI Managed Beans
from INI files
[ https://issues.apache.org/jira/browse/SHIRO-422?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13598303#comment-13598303 ]
Harald Wellmann edited comment on SHIRO-422 at 3/10/13 4:47 PM:
----------------------------------------------------------------
The attached patch depends on and includes the patch previously submitted for SHIRO-337.
Solution:
There is a new CdiIniWebEnvironment to be configured in web.xml:
<context-param>
<param-name>shiroEnvironmentClass</param-name>
<param-value>org.apache.shiro.cdi.web.CdiIniWebEnvironment</param-value>
</context-param>
This environment adds all CDI managed beans qualified with @ShiroIni to the Shiro environment. These beans can be referenced in INI files by the equivalent of their EL name.
Example:
@ShiroIni
public class DemoRealm extends AuthenticatingRealm {
@Inject
private UserDao userDao;
}
This bean can be referenced as $demoRealm. When the bean name can not be derived automatically or when the default should be overriden, it can be specified explicitly by a @Named("foo") qualifier.
The CdiIniWebEnvironment is provided by a new module shiro-cdi-web which depends on shiro-cdi and shiro-web.
For non-web applications, the same functionality is provided by a CdiIniSecurityManagerFactory which takes a BeanManager constructor argument. This factory has been added to the shiro-cdi module from SHIRO-337.
There is a sample application samples-cdi-web using a CdiIniWebEnvironment and a shiro.ini including some references to CDI beans.
To see the whole lot in context: https://github.com/hwellmann/shiro
was (Author: hwellmann):
The attached patch depends on and includes the patch previously submitted for SHIRO-337.
> Reference CDI Managed Beans from INI files
> ------------------------------------------
>
> Key: SHIRO-422
> URL: https://issues.apache.org/jira/browse/SHIRO-422
> Project: Shiro
> Issue Type: New Feature
> Components: Integration: JEE
> Affects Versions: 1.2.1
> Reporter: Harald Wellmann
> Fix For: 1.3.0
>
> Attachments: SHIRO-422.patch
>
>
> In Java EE 6, CDI is the default dependency mechanism, which is not currently integrated with Shiro's lightweight DI using INI files.
> Example:
> [main]
> myRealm = com.example.MyRealm
> securityManager.realms = $myRealm
> In the MyRealm class, it would be natural to @Inject a UserDAO, but this does not work, since the myRealm instance is directly created by Shiro and not managed by the CDI BeanManager.
> Requirement:
> Find a way to use CDI managed beans in INI files.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira