我有这样的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。
但是,当我尝试执行新的InitialContext(p)时,我收到SSLHandshake异常,因为它获取了带有标准SSLConext和标准Java信任库的标准SSLSocketFactory。
我的问题-有什么方法可以赋予InitialContext一些将覆盖SSLSocketFacory的属性。我的目标是向该t3客户端填充我的cutum信任库。
像这样改变标准的信托商店
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");**
答案 0 :(得分:0)
通过在应用程序端添加一些参数来解决问题
export JAVA_OPTS ="$JAVA_OPTS -Djavax.net.ssl.trustStore=path/truststore.jks"
export JAVA_OPTS ="$JAVA_OPTS -Djavax.net.ssl.trustStorePassword=changeIT"