- 浏览: 14870 次
- 性别:
- 来自: 成都
最新评论
项目代码会使用HTTPS,之前一直在Sun JDK+Tomcat上开发。换到QA环境后使用的是Websphere,默认是IBM JDK。
1. QA报问题,预料中,因为没导过HTTPS的证书,导完重启,问题解决。
2. 再重启QA,又出问题,看log,java.net.SocketException: Cannot find the specified class java.security.PrivilegedActionException: java.lang.ClassNotFoundException: com.ibm.websphere.ssl.protocol.SSLSocketFactory 。网上查查,要设置
ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocket FactoryImpl ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSL ServerSocketFactoryImpl。 只不过他们是用Security里的方法设,我是在Websphere里设参数,应该没问题。 重启,问题解决。
3.再重启,问题又出现,还是一样的log内容;再重启,重启,重启...发现时好时坏。这种问题最让我崩溃。觉得应该是IBM JDK的问题。把环境变量设成Sun JDK。重启,问题解决。
4 .再重启,问题又来. . .。查Websphere的启动脚本,发现不管系统设什么JDK,Websphere都会用自带的IBM JDK。上网查,听说Websphere在windows下只支持自带的JDK。完了,也换不成了。马上要下班,还要回珠海。盲目试一试,把参数设成
ssl.SocketFactory.provider=com.ibm.websphere.ssl.p rotocol.SSLSocketFactory
ssl.ServerSocketFactory.provider=com.ibm.websphder e.ssl.protocol.SSLServerSocketFactory。
重启,让同事看看,背着电脑回珠海。路上想着觉得这样设怎么都没道理会成功。如果是按第二步的设置,是让系统尝试不要找com.ibm.websphere.ssl.protocol.SSLSocketFactory,而是去找com.ibm.jsse2.SSLSocketFactoryImpl,我现在这样设,又让它去找 com.ibm.websphere.ssl.protocol.SSLSocketFactory,没有能行的道理。果然,同事说不行。
5.在车上,打开电脑,认真看看google结果。其中一篇http://www.eclipsezone.com/eclipse/forums/t97939.h tml 提到他也是这个问题。刚好,我们也是OSGi,环境也差不多。
他是OSGi的程序会用SSL,另外一个程序A也会用SSL;OSGi程序会调用程序A。测试结果是如果程序A先启动就问题。原因分析:SSL的实现在jvm可能只允许加载一份,如果OSGi先启动,会去加载com.ibm.jsse2.SSLSocketFactoryImpl,程序A也会使用这个实现;如果程序A先启动会去使用com.ibm.websphdere.ssl.protocol.SSLServerSocketFac tory,OSGi启动的时候也会试图去使用这个实现,但是OSGi的ClassLoader是独立的,这个时候它找不到这个类,没法加载。为什么找不到呢?原因下面会给出。
匹配到我们的情况,我们没有程序A,有可能会引起的就只有Web服务器可能会使用SSL了。猜想,那是不是在启动服务器的时候,在OSGi没启动完前不要试图去访问HTTPS就可以呢?(之前在重启的时候经常在没重启完就试图去访问)。不敢肯定,在车上也没法试。
继续看搜索https://www.ibm.com/developerworks/mydeveloperwork s/blogs/7e2e8015-bf72-43b6-bacd-36565b67febc/entry/ fips_mode_in_websphere_partner_gateway_v6_2?lang=en 里提到可以更改\jre\lib\security\java.security文件,其中有一段:
# Default JSSE socket factories
#ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocke tFactoryImpl
#ssl.ServerSocketFactory.provider=com.ibm.jsse2.SS LServerSocketFactoryImpl
# WebSphere socket factories (in cryptosf.jar)
ssl.SocketFactory.provider=com.ibm.websphere.ssl.p rotocol.SSLSocketFactory
ssl.ServerSocketFactory.provider=com.ibm.websphder e.ssl.protocol.SSLServerSocketFactory
可以更改jvm默认的SSL实现,这样不管是不是OGSi里,我们都可以强制把SSL实现使用com.ibm.jsse2.SSLSocketFactoryImpl 。兴奋,打电话叫同事试一下把实现替换,重启,果然可以。
分析类加载不到的原因:
看上面的设置文件,有一段# WebSphere socket factories (in cryptosf.jar ),看来com.ibm.jsse2.SSLSocketFactoryImpl是jvm自带,但是com.ibm.websphere.ssl.protocol.SSLSocketFactory在一个jar里,我们的OSGi应该也没导入这个类,怪不得OSGi找不到了。
终极解决方法: 更改\jre\lib\security\java.security里的设置,改成
# Default JSSE socket factories
ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocket FactoryImpl
ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSL ServerSocketFactoryImpl
# WebSphere socket factories (in cryptosf.jar)
#ssl.SocketFactory.provider=com.ibm.websphere.ssl. protocol.SSLSocketFactory
#ssl.ServerSocketFactory.provider=com.ibm.websphde re.ssl.protocol.SSLServerSocketFactory
应该换到任何地方都可以用了^_^。
发表评论
-
字符串编辑距离算法 动态规划
2012-07-06 09:51 905http://hxraid.iteye.com/b ... -
awk正则表达式中调用ksh变量
2012-07-06 09:45 1031如果ksh中定义了变量pcname,而在嵌入ksh中的aw ... -
Android 正则表达式学习
2012-07-06 09:37 868Java正则表达式学习: 因为正则表达式是一个很庞杂 ... -
Javascript 使用对象(1)- 简单型 ( 含属性,方法)
2012-07-06 09:30 539定义属性: Skin={ 'data':{ ' ... -
JS操作HTML 我的笔记1
2012-07-05 20:45 6291. document.getElementBy ... -
核心Swing组件(六)
2012-07-03 13:42 611JButton组件是可以被 ... -
关于Flex 的渲染器的总结
2012-07-02 10:25 585关键字: Flex. 渲染 ... -
flex笔记--安装与项目建立
2012-07-02 10:25 557使用java做后台,采用Eclipse插件式安装 操 ... -
Flex权威指南3学习笔记之一------界面知识(一)
2012-07-02 10:24 575最近在学习flex,正 ... -
Building a custom Flex preloader
2012-07-02 10:24 596http://www.adobe.com/devnet/f ... -
采用数据库为Flex Tree组件的提供数据-Java与LCDS
2012-07-01 09:44 624Java与LCDS 俺在这里使用Adobe LiveCyc ... -
java Flex as3 数据类型对应关系表
2012-07-01 09:44 831LCDS只能与J2EE的服务端进行通信,目前只是Actio ... -
java ArrayList 转成Flex ArrayCollection
2012-07-01 09:43 6001. server package com.east. ... -
Flex TXT文件导入
2012-07-01 09:43 639在上一篇文章中,我们做了一个文件上传、导入组件,其实就是一 ... -
[转载]关于VS05里checkboxlist用JS获取不到value值的解决方法
2012-06-30 17:59 677页面上有个服务器控件checkboxlist,想要获取选中 ... -
win32 API创建tooltip的版本不匹配问题解决方法
2012-06-30 17:59 1276在visual studio 2005以上版本中使用API ... -
python windows mysqldb安装错误解决方法
2012-06-30 17:59 1065首先会出现如下错误: serverKey = _wi ... -
infobright创建表时指定存储目录无效的解决方法
2012-06-30 17:59 643infobright是一个基于 ...
相关推荐
我这里是 usr/local/jdk/ 2)输入命令 chmod 777 jdk1.8.0_221/bin/java修改权限 3)再次输入 java -version 成功 总结 以上所述是小编给大家介绍的解决-BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 权限不够问题,...
-bash: /usr/local/jdk/jdk1.8.0_181/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 安装完后 java -version 查看版本出现: 原因是:没有那个文件或目录,找了很久发现需要...
ibm jdk5.0,开放的策略文件,解决默认ibm的jdk对密码算法的长度限制,下载后替换掉JAVA_HOME/jre/lib/security/中现有的两个包。
IBM JDK1.6 安装版
JDK下载/安装/配置详细过程 (机主情况:win10/64位–lenovo) JDK下载/安装/配置JDK下载/安装/配置详细过程Tomcat下载/安装/配置 ##JDK下载 1.点击下载地址here点我点我!!!(根据自己电脑位数进行选择呀!!!) ...
linux 64位IBM JDK1.6
IBM Webpshere 8.5.0ND版自带的商业JDK,版本信息如下: java version "1.6.0" Java(TM) SE Runtime Environment (build pwa6460_26sr2ifix-20120419_02(SR2+IV19661)) IBM J9 VM (build 2.6, JRE 1.6.0 Windows ...
JDK 所需jar包
配置环境变量,vi /etc/profile,在文件最后添加配置 JAVA_HOME=/usr/local/java/jdk1.8.0_231/ JRE_HOME=/usr/local/java/jdk1.8.0_231/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_...
IBM JDK1.8 证书相关jar,例如jdbc 链接由tcp/ip修改到SSL后需要替换JDK相应的jar
目前JDK主流windows版本,包括JDK1.8/JDK11/JDK14/JDK17,不需要积分下载。
最新最全最好用的JDK1.5/5.0/1.6中文版(全译)jdk1.5.ZH_cn.chm 中文版(全译) 45.5 MB jdk5.0.ZH_cn.chm 中文版(全译) 54.3 MB jdk6.0.ZH_cn.chm 中文版(全译) 54.3 MB 下载地址:(由于文件过大,内附下载地址...
ibm jdk diagnostic reference document
解决jetty8、jdk1.6环境下的ssl问题,示服务器的瞬时 Diffie-Hellman 公共密钥过弱,可以通过设置如下参数解决
ibm JDK5.0 fro linux,这个东西很难下的。
IBM JDK 解压之后,在IDE配置一下就可以用了,亲测可用!
JDK自带工具生成ssl证书,经过上述操作,使用HTTPS 端口为8443 进行访问的时候 就是经过SSL信息加密,不怕被截获了。 通话的双方,必须是都拥有证书的端,才能进行会话,换句话说,就是只有安装了咱证书的客户端,...
免安装版的jdk1.8,解压即可使用,不影响现有环境的jdk版本 /usr/local/jdk1.8/bin/java -Xms256m -Xmx512m -jar alipayJr45LogUploadLogfile.jar&
ibm版本的jdk1.8 for linux x64,已测试可用,安装无需root权限