2009-09-25 110 views
1

我想最后在一个独立的应用程序,这些线路没有异常抛出经过:如何使用t3s连接到Weblogic JMS队列?

Properties props = new Properties(); 
    props.setProperty("java.naming.factory.initial", 
         "weblogic.jndi.WLInitialContextFactory"); 
    props.setProperty("java.naming.provider.url", 
         "t3s://localhost:9002"); 
    props.setProperty("java.naming.security.principal", 
         "<username>"); 
    props.setProperty("java.naming.security.credentials", 
         "<password>"); 
    Context ctx = new InitialContext(props); 

...但我得到一个异常信息:

Warning Security BEA-090542 Certificate chain received from localhost - 127.0.0.1 was not trusted causing SSL handshake failure. Check the certificate chain to determine if it should be trusted or not. If it should be trusted, then update the client trusted CA configuration to trust the CA certificate that signed the peer certificate chain. If you are connecting to a WLS server that is using demo certificates (the default WLS server behavior), and you want this client to trust demo certificates, then specify -Dweblogic.security.TrustKeyStore=DemoTrust on the command line for this client.

所以,我创建使用该命令为CA密钥库:

keytool -keystore client.jks -importcert -file cacert.pem

...和使用属性称为它weblogic.security.TrustKeyStore = client.jks

这仍然不起作用,很可能是因为我没有向密钥库提供密码。我错过了什么?我怎样才能提供这个密码? (或者,如何在不设置密码的情况下创建密钥库?)

+0

您是否在管理控制台中设置了队列和连接工厂? – duffymo 2009-09-25 21:58:04

+0

是的,一切正常,使用t3协议,没有ssl。使用t3s,我从来没有通过jndi查找。创建InitialContext实例时,会在ssl握手时抛出异常。 – davidi 2009-09-26 06:26:30

回答

8

差不多两个月后,我又回到了这个问题。发现this link后,我发现,这个工程:

 System.setProperty("weblogic.security.SSL.ignoreHostnameVerification","true"); 
     System.setProperty("java.protocol.handler.pkgs", "weblogic.net"); 
     System.setProperty("weblogic.security.TrustKeyStore","CustomTrust"); 
     System.setProperty("weblogic.security.CustomTrustKeyStoreFileName", "<keystorelocation>"); 
     System.setProperty("weblogic.security.CustomTrustKeyStorePassPhrase","<keystorepassword>"); 
     System.setProperty("weblogic.security.CustomTrustKeyStoreType","JKS"); 

我只得到它的工作使用的系统属性。