老项目对接新加密方式。关联系统提供了加密demo,但是我们整合到我们的项目中时,一直报没有HmacSm3这个算法的异常信息,每次打印的版本都是低版本,检查pom文件也是引入的新版本的,main方法执行就可以,weblogic启动调用就会报错。
首先认为是JDK的问题,尝试各种方法,替换JDK内的加密包,无效,最终发现是由于weblogic启动时,默认加载的是自带的jar包。我们在pom文件中引入的jar包在项目启动时没有被调用。
解决方案:可以在weblogic-application.xml 文件中指定优先使用应用包中的jar。
weblogic下的jar包:
bcpkix-jdk15on-1.60.jar/bcprov-ext-jdk15on-1.60.jar/bcprov-jdk15on-1.60.jar
weblogic-application.xml:
<wls:prefer-application-package>
<wls:package-name>org.bouncycasle.*</wls:package-name>
</wls:prefer-application-package>
pom文件中引入的jar包
<dependency>
<groupId>org.bouncycasle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.70</version>
</dependency>