您的位置:首页 > 其它

解决jboss-eap-6 (jboss7)JCE cannot authenticate the provider BC 的问题

2016-01-28 14:47 627 查看
项目中使用了jboss-eap-6的版本来发布项目,此版本的jboss在项目发布上和以前版本的jboss差别还是很大的,最直接的一点就是如果项目是以war包的形式发布的,jboss启动时是直接是用的war文件进行项目部署的,也就是说它不是像tomcat等工具将war文件解压开用的(jboss是否将war文件“偷偷”解压到了其他地方并未测试)。通常情况下是不会发生问题的,但如果项目中使用了已经签名的jar,例如bcprov,那么就会发生找不到jar签名的问题,从而导致种种问题,例如 JCE
cannot authenticate the provider BC

找到了问题原因,解决办法就好说了。既然jboss是按照module的方式加载的,那么只需要把这个需要签名的jar配置成一个module即可,由于项目中使用的jar为bcprov-jdk15on-1.52.jar,所以这里就演示如何将其配置成一个module。

只需两步,第一步在jboss下创建如下目录:$JBOSS_HOME/modules/org/bouncycastle/main,将bcprov-jdk15on-1.52.jar和module.xml(该文件可从其它目录copy过来)放到该目录下,修改module.xml文件内容如下(注意jar版本号):

<modulexmlns="urn:jboss:module:1.1" name="org.bouncycastle">
   <resources>
       <resource-root path="bcprov-jdk15on-1.52.jar"/>
   </resources>
   <dependencies>
       <module name="javax.api" slot="main"export="true"/>
   </dependencies>
</module>

第二步在$JBOSS_HOME/standalone/configuration/standalone.xm文件中,找到这一行(注意版本不一定是1.0,也可能是其他的版本):
<subsystem xmlns="urn:jboss:domain:ee:1.0"/>

然后将它替换或在其中追加内容为:
 <subsystemxmlns="urn:jboss:domain:ee:1.0">
   <global-modules>
       <module name="org.bouncycastle" slot="main"/>
   </global-modules>
</subsystem>

此时再次启动jboss,就可正确识别bcprov-jdk15on-1.52.jar了。

参考资料:http://ask.csdn.net/questions/183826
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: