【发布时间】:2019-02-21 11:11:51
【问题描述】:
我的 T3 客户端代码如下:
private InitialContext initContext() {
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL, context.providerURL);
for (Map.Entry<String, String> entry : getEnvironmentProperties().entrySet()) {
p.put(entry.getKey(), entry.getValue());
}
InitialContext res = null;
try {
res = new InitialContext(p);
} catch (NamingException e) {
e.printStackTrace();
}
return res;
}
我的 t3 客户端部署在 Tomcat 上(使用 wlthint3client-12.1.3.jar)并尝试查找部署在 Weblogic 上的外部系统的远程 bean。
但是,当我尝试执行 new InitialContext(p) 时,我收到 SSLHandshake 异常,因为它使用标准 SSLConext 和标准 java 信任库获得标准 SSLSocketFactory。
我的问题 - 有没有办法给 InitialContext 一些将覆盖 SSLSocketFacory 的属性。我的目标是将我的自定义信任库填充到这个 t3 客户端。
像这样更改标准信任存储
System.setProperty("javax.net.ssl.trustStore", "pathToTrustStore");
工作正常,但是如果我的 t3 客户端用于与 2 个不同的外部系统进行通信,那么这样做可能会出现问题。
是否有一些我可以填充的属性?
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
**p.put("CUSTOM SSL SOCKET FACTORY, "MY CLASS");**
【问题讨论】:
标签: java tomcat ssl ejb weblogic