我已经为遗留系统创建了自己的JCA->EIS适配器。我在连接到旧系统时遇到身份验证问题。
这是相当难解释的。在JCAV3.1.1中,在创建自己的GlassFish适配器并安装它之后,有一个名为"Work Security Maps“的选项卡。这似乎是为EIS系统输入用户名/密码的唯一位置。我希望使用匿名(未经身份验证)用户运行EJB,但是为了填写EIS密码,您似乎必须指定一个组或用户映射。
有没有办法让JCA适配器的所有调用都使用相同的用户名/密码访问EIS系统?
所需的行为类似于JDBC的工作方式。我的数据库只有一个用户名/密码。我的应用程序注入了一个数据源,但我不必将当前用户映射到数据库用户。
编辑:正如在第一个答案中所讨论的,您可以使用config-properties来实现此功能。但是,根据JCA规范,我不认为这是正确的方法。在Websphere中,您可以在调用subject时将JAAS凭据指定为“组件管理的身份验证别名”。
我似乎不能在GlassFish中做到这一点。如果调用Subject.getPrivateCredentials(PasswordCredential.class),就会得到一组包含空字符串的凭据。
发布于 2011-12-22 23:51:49
在JDBC RA (或我最近使用的配置RA )中,您可以在资源适配器属性(ra.xml中的ActiveMQ -property)中设置用户名和密码。您可能希望在资源适配器中以类似的方式实现它。
发布于 2012-01-03 06:35:16
事实证明,在不使用ra.xml中的config-property的情况下,很有可能做到这一点。诀窍是,您必须使用ejb-jar.xml。在基于纯注解的EJB不使用基于容器的身份验证的情况下,GlassFish中似乎存在一个错误。
我正在尝试在GlassFish jira上记录一个bug,详细说明这一点:http://java.net/jira/browse/GLASSFISH-18096
https://stackoverflow.com/questions/8592178
复制相似问题