gpt4 book ai didi

java - Glassfish 4 JBDCRealm NameNotFoundException

转载 作者:行者123 更新时间:2023-12-01 13:53:49 27 4
gpt4 key购买 nike

这可能是非常基本的,但我已经坚持了几个小时了,所以请听我说完。

我正在尝试在 Eclipse 中 Glassfish 4.0 上的 Java 7 Web 应用程序中进行基于 JDBCRealm 的身份验证。此博客post是配置 JDBCRealm 的引用。

web.xml如下

<login-config>
<auth-method>FORM</auth-method>
<realm-name>MyJDBCRealm</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/tologin.html</form-error-page>
</form-login-config>
</login-config>

当我启动 Glassfish 服务器时,控制台中清楚地写着:

SEC1115: Realm [MyJDBCRealm] of classtype [com.sun.enterprise.security.ee.auth.realm.jdbc.JDBCRealm] successfully created.

但是当我请求任何应用程序的资源时,我收到此异常

javax.naming.NamingException: Lookup failed for 'MyJDBCRealm' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: MyJDBCRealm not found]

根本原因:

javax.naming.NameNotFoundException: MyJDBCRealm not found
at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:237)
at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:204)
...

这发生在这里

public DataSource getDataSource() {
DataSource datasource = null;

try {
datasource = (DataSource) initialContext.lookup("MyJDBCRealm");
} catch (NamingException ex) {
ex.printStackTrace();
}

return datasource;
}

我应该注意到,Hibernate 成功连接到后端数据库并映射表,并且在 glassfish 控制台中,我可以成功 ping JDBC 连接池。

最佳答案

我猜你混淆了一些东西。

领域与数据源不同。要获取 Java 领域的实例,您可以执行以下操作:

JDBCRealm realm = (JDBCRealm) Realm.getInstance("realmName");

如果您确实想获取数据源,则必须使用 JNDI 名称,该名称通常以 jdbc/ 开头,如下所示:

DataSource datasource = (DataSource) initialContext.lookup("jdbc/MyJDBCRealm");

但无论如何,我认为对于基于 JDBC 的普通身份验证,您不需要这样的东西。

关于java - Glassfish 4 JBDCRealm NameNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756435/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com