我有一个可用的 Glassfish 3.1.1 自定义登录领域(由第三方提供)。我已通过管理控制台在我的工作站上的单个 Glassfish 实例上成功部署和配置它,方法是将登录模块 jar 放入domains/domainname/lib 文件夹中。适用于网络应用程序和所有内容。
现在我正在尝试将应用程序部署到更复杂的设置上。考虑以下三台服务器:
DAS: Admin server instance with domain
FRONT1: Standalone node instance configured through DAS
SERVICE1: Standalone node instance configured through DAS
我已将登录模块 jar 放入节点/front1/lib 文件夹(在 FRONT1 服务器上)。我为 DAS 上的每个实例都有单独的配置,名为 front1_config 和 service1_config。我尝试通过配置 -> front1_config -> 安全 -> 领域使用管理控制台添加新领域,但出现以下错误:
网页:
Creation of Authrealm custom-realm failed. java.lang.NullPointerException
DAS 服务器日志:
[#|2011-11-01T14:22:18.258+0200|SEVERE|glassfish3.1.1|org.glassfish.admingui|_ThreadID=23;_ThreadName=Thread-2;|RestResponse.getResponse() gives FAILURE. endpoint = 'https://localhost:4848/management/domain/configs/config/front1-config/security-service/auth-realm'; attrs = '{classname=com.mycompany.loginmodule.MyLoginRealm, name=custom-card, target=front1-config, property=}'|#]
我怀疑这可能是loginmodule.jar 放置的问题。或者 NullPointerException 可能是从登录模块本身抛出的?我尝试了多种方法,甚至将 jar 复制到 FRONT1 和 DAS 上的 glassfish/lib 中,但似乎没有任何效果。
我已经无计可施了。
编辑:我发现了更多。我似乎也将登录模块 jar 复制到了 DAS 服务器域/lib。当我从那里删除登录模块 jar 时,NullpointerException 没有出现,我只是得到了 ClassNotFoundException:
Creation of Authrealm custom-realm failed.
com.sun.enterprise.security.auth.realm.BadRealmException:
java.lang.ClassNotFoundException:
com.mycompany.loginmodule.MyLoginRealm not found by org.glassfish.security [117]
最佳答案
Glassfish 3.x 具有将某些(如果不是全部?)配置从 DAS 服务器的domain/domainname/文件夹复制到节点服务器的默认功能。我将loginmodule jar和login.conf配置添加到DAS服务器的domain/domainname/lib和domain/domainname/config,并从DAS管理控制台重新启动FRONT1实例后,正确的loginmodule jar和login.conf被上传到该实例服务器。现在登录模块按预期工作。
我仍然不确定这是否是在这种情况下实现此目的的绝对正确或最安全的方法,但它似乎有效。
关于java - 通过 DAS 在独立 Glassfish 上配置自定义登录领域和模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966500/