我必须在EJB中使用身份验证凭据来访问外部Web服务。
我找到this thread但据我了解,ejb-jar.xml位于最终jar内,这意味着重新打包以更改密码,我想避免这种情况。
我知道,我可以使用<servlet> ... <init-param>...
引用应用程序服务器config dir中的文件,我可以在其中存储用户名和密码。 EJB有类似的方法吗?
我的下一个想法是在payara服务器中声明一个自定义JNDI资源,但我不确定安全隐患。
将用户名和密码传输到EJB的建议方法是什么?
答案 0 :(得分:3)
这就是JNDI的用途。诸如凭证,URL和资源路径之类的东西应该由应用程序部署者(企业部署模型中的假定角色之一)设置,以便应用程序作者不需要担心具体细节。
每个容器都有不同的机制,用于将值注入内部JNDI树。 Glassfish允许您直接在管理控制台中执行此操作。与WebSphere类似。其他容器也会有类似的机械。然后你可以使用@Resource通过JNDI引用值(如果你想要它注入)或通过直接查找使用:
Context _ctx = new InitiaContext();
String _user = (String) _ctx.lookup( "jndi/tree/path/to/desired/resource" );
HTH