具有自定义 SSLSocketFactory 的 T3 客户端
T3 client with custom SSLSocketFactory
我的 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 客户端。
像这样更改标准信任库
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");**
通过在应用程序端添加几个参数解决了问题
export JAVA_OPTS ="$JAVA_OPTS -Djavax.net.ssl.trustStore=path/truststore.jks"
export JAVA_OPTS ="$JAVA_OPTS -Djavax.net.ssl.trustStorePassword=changeIT"
我的 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 客户端。
像这样更改标准信任库
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");**
通过在应用程序端添加几个参数解决了问题
export JAVA_OPTS ="$JAVA_OPTS -Djavax.net.ssl.trustStore=path/truststore.jks"
export JAVA_OPTS ="$JAVA_OPTS -Djavax.net.ssl.trustStorePassword=changeIT"