hud*_*udi 14 java bouncycastle
我按照这个指示添加bouncycastle:http: //www.bouncycastle.org/wiki/display/JA1/Provider+Installation 但我还有一个问题.有时,当我重新部署我的应用程序时,找不到此提供程序,因此我的应用程序抛出异常.每100次重新部署(可能更少)只出现一个问题.当我重新启动我的服务器 - weblogic然后它再次开始工作.我将非常感谢有关此问题发生的任何建议
编辑:
我在上面的链接中使用这两种方法,因为当我只使用其中一种然后它不起作用我添加到java.security这个提示,然后在我的类我注册了这个提示:
static {
Security.addProvider(new BouncyCastleProvider());
}
Run Code Online (Sandbox Code Playgroud)
Yve*_*tin 24
你可能有一个NoClassDefFoundError.这是JSSE实现的已知问题.
这是场景:
由于undeploy事件没有标准侦听器,因此无法在时间上触发JSSE提供程序删除.
避免这种麻烦的推荐方法是在JVM ClassPath或容器ClassPath中使用弹性城堡类.您必须从应用程序中删除它.现在,您需要使用静态初始化程序的备用选项注册BC提供程序.WebLogic提供了在服务器启动时触发代码的方法(我使用过服务器启动类),这段代码将负责为整个服务器/ JVM生命周期注册JSSE提供程序.
另一个选择是java.security使用bouncy castle jar 在JRE 文件中添加以下行jre/lib/ext但我不喜欢这种方式,因为它在更新时可能会丢失:security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider
那么应用程序只是希望实现在那里,为算法可用性添加测试以向操作员和用户报告任何麻烦可能是个好主意.
Gug*_*upf 10
我使用这个工作来重新部署Tomcat中的应用程序:
public class GenSignCastle {
BouncyCastleProvider bcProvider = null;
public GenSignCastle() {
if ( bcProvider == null ) {
bcProvider = new BouncyCastleProvider();
Provider[] providers = Security.getProviders();
String name = bcProvider.getName();
Security.removeProvider( name ); // remove old instance
Security.addProvider( bcProvider );
}
}
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
有趣的是我必须首先删除BouncyCastleProvider以在重新部署后再次使用它.
| 归档时间: |
|
| 查看次数: |
10498 次 |
| 最近记录: |