gpt4 book ai didi

tomcat - 从 servlet 获取 DataSourceRealm 的实例

转载 作者:行者123 更新时间:2023-11-28 23:31:02 26 4
gpt4 key购买 nike

我使用的是 tomcat 8.0.我在 context.xml 文件中配置了一个领域元素,它指定我将实现 DataSourceRealm。此外,根据 tomcat 8 领域配置说明 ( https://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html )我在 realm 元素中嵌套了一个 CredentialHandler 元素,以便指定 salt 长度和迭代等属性。context.xml文件的相关部分如下:

<Realm className="org.apache.catalina.realm.DataSourceRealm" debug="99"
dataSourceName="jdbc/board" localDataSource="true"
userTable="test_user" userNameCol="Email" userCredCol="HashedPassword"
userRoleTable="test_user_role" roleNameCol="Role">

<CredentialHandler className="MessageDigestCredentialHandler" algorithm="SHA-1"
iterations="1000" saltLength="48"/>

</Realm>

当我在我的 web 应用程序中调用一个 servlet 时,我希望能够引用上面的领域对象,以便我可以调用 RealmBase 类的非静态方法(例如:digest()(不是静态 Digest( ) 方法))。我想调用已初始化领域对象的摘要方法,因为该对象包含我指定的所有属性(盐长度等)。如何从 servlet 访问 DataSourceRealm 对象?(调用静态方法并手动指定哈希算法似乎不合逻辑,更不用说静态方法中没有用于输入盐详细信息的参数)。

我尝试在 ServletContext 和 HttpServletRequest API 中搜索检索 RealmBase 对象或其容器对象的方法,但没有找到任何相关内容。

编辑:我尝试获取 InitialContext 对象并使用 lookup 方法,因为这是我用来获取也位于 context.xml 文件中的资源元素的方法:

InitialContext ic = new InitialContext();
DataSourceRealm realm = (DataSourceRealm) ic.lookup("org.apache.catalina.realm.DataSourceRealm");

但这也行不通。

谢谢

最佳答案

在 Context 应用程序中,我们不使用类(等效),即不ic.lookup("org.apache.catalina.realm.DataSourceRealm")

但是名字ic.lookup("jdbc/板")

(这个没有测试过,只是解决办法)

关于tomcat - 从 servlet 获取 DataSourceRealm 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30330576/

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