gpt4 book ai didi

java - 如何从Java代码中读取JNDI值?

转载 作者:太空宇宙 更新时间:2023-11-04 13:28:53 25 4
gpt4 key购买 nike

我有一个 Java 代码,用于加载在运行时(.war 文件)内定义的 key 存储。

 KeyStore trustStore = KeyStore.getInstance("PKCS12");
File key = new File ("/was85/resources/security/ecommerce_gr_mobile.p12");
trustStore.load(new FileInputStream(key), "Pass".toCharArray());

但是,我不需要对 key 存储 - pass 进行硬编码。我需要从正在运行的 EAR 中获取它们,因为这些值在我们的环境(DEV - QA-UAT 和 PROD)中是不同的。

我读到我需要使用这样的东西:

Properties properties = new java.util.Properties();  
InputStream inputStream =
getServletContext().getResourceAsStream("/WEB-INF/web.xml/worklight.properties");
properties.load(inputStream);
String keystore= properties.getProperty("ssl.keystore.path");

但是,worklight.properties 中的值是默认值,而不是我们在运行时中定义的值

工作灯.属性:

ssl.keystore.path = /conf/default.keystore

运行时内的 JDNI 值:

enter image description here

如何获取 JNDI 中定义的而不是默认的?

已编辑:

Web.xml:

<env-entry>
<description>[OPTIONAL] SSL certificate keystore location. Default: conf/default.keystore.</description>
<env-entry-name>ssl.keystore.path</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value/>
</env-entry>

<env-entry>
<description>[OPTIONAL] SSL certificate keystore type. Valid keystore types: jks, PKCS12. Default: jks.</description>
<env-entry-name>ssl.keystore.type</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value/>
</env-entry>

<env-entry>
<description>[OPTIONAL] SSL certificate keystore password.Default: worklight.</description>
<env-entry-name>ssl.keystore.password</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value/>
</env-entry>

最佳答案

我假设在web.xml中你有这样的env-entry(也许将你的web.xml添加到问题中):

<env-entry>
<env-entry-name>ssl.keystore.path</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/conf/default.keystore</env-entry-value>
</env-entry>

在这种情况下,您应该通过注释访问它,如下所示:

@Resource(name="ssl.keystore.path", type=String.class)
private String filePath;

或通过InitialContext:

InitialContext ctx = new InitialContext();
String filePath = (String) ctx.lookup("java:comp/env/ssl.keystore.path");

关于java - 如何从Java代码中读取JNDI值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382132/

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