probablemente tiene un NoClassDefFoundError
. Este es un problema conocido con las implementaciones de JSSE.
Aquí está el panorama:
- Sus cargas de contenedores clases castillo hinchable en un cargador de clases para aplicaciones específicas
- La instancia de proveedor se crea depende de que las clases y así sucesivamente que ClassLoader
- A continuación, el proveedor es registrado en JRE API gracias a campos estáticos en el nivel superior JVM ClassLoader
- Al volver a implementar, el contenedor descarta la aplicación ClassLoader para crear una nueva
- Como el algoritmo ya se sabe, la segunda inserción proveedor falla en silencio
- Cuando se utiliza el algoritmo de la instancia proveedor es simplemente inutilizable debido a que el cargador de clases ha sido descartada
- entonces la única opción es reiniciar el contenedor para tener la situación fijada .
Como no existe un detector estándar para el evento de anulación de despliegue, no es posible desencadenar la eliminación del proveedor de JSSE en el momento.
La forma recomendada de evitar ese problema es tener clases de castillo hinchable en su JVM ClassPath o en su contenedor ClassPath. Tienes que eliminarlo de tu aplicación. Ahora necesita registrar el proveedor de BC con una opción alternativa al inicializador estático. WebLogic proporciona ways to trigger code at server startup (he utilizado la clase de inicio del servidor), este código será responsable de registrar los proveedores de JSSE para toda la vida útil del servidor/JVM.
Una opción alternativa es añadir la siguiente línea en JRE java.security
archivo con hinchable frasco castillo jre/lib/ext
, pero no me gusta de esa manera, ya que se puede perder cuando se actualiza: security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider
Así entonces la aplicación simplemente espera que las implementaciones están allí, puede ser una buena idea agregar pruebas de disponibilidad de algoritmo para informar cualquier problema a los operadores y usuarios.
El enlace que proporcionó da dos métodos, ¿cuál está utilizando? –
ambos agrego a java.security este proveedor y luego en mi clase registré este provder: static { Security.addProvider (new BouncyCastleProvider()); } – hudi
¿Puedes intentar solo usar el método estático? –