我有一个网络服务,它是一个数字签名(验证pdf,sign pdf)。我正在使用库bcpkix-jdk15on-1.54.jar,bcprov-jdk15on-1.54.jar,itextpdf-5.4.0.jar。并作为Weblogic 12c 12.2.1.2应用程序服务器当我在本地测试服务时,一切正常,但是在服务器上测试时,该服务返回:java.lang.ClassNotFoundException:org.bouncycastle.jcajce.provider.digest.SHA256 $ Digest
已被证实图书馆正在参战。找出可能是由于应用程序的bouncyCastle和weblogic bouncyCastle之间的库冲突引起的,因此,在weblogic.xml中添加下一行]
<wls:package-name>org.bouncycastle.*</wls:package-name>
</wls:prefer-application-packages>```
But the result is the same
> ```ExceptionConverter: java.security.NoSuchAlgorithmException: class
> configured for MessageDigest (provider: BC) cannot be found.
> at java.security.Provider$Service.getImplClass(Provider.java:1649)
> at java.security.Provider$Service.newInstance(Provider.java:1592)
> at sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
> at sun.security.jca.GetInstance.getInstance(GetInstance.java:206)
> at java.security.Security.getImpl(Security.java:698)
> at java.security.MessageDigest.getInstance(MessageDigest.java:227)
> at com.itextpdf.text.pdf.security.DigestAlgorithms.getMessageDigest(DigestAlgorithms.java:159)
> at com.itextpdf.text.pdf.security.PdfPKCS7.<init>(PdfPKCS7.java:445)
> at com.itextpdf.text.pdf.AcroFields.verifySignature(AcroFields.java:2317)
> at io.rubrica2.sign.pdf.PDFSigner.getSigners(PDFSigner.java:469)
> at io.rubrica2.utils.Utils.pdfToCertificados(Utils.java:380)
> at ec.bdp.firmadigital.implementacion.FirmaDigitalService.verificarDocumentoPDF(FirmaDigitalService.java:82)
> at bpe.firma.services.FirmaDigital.verificarPDF(FirmaDigital.java:61)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:120)
> at weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:93)
> at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149)
> at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:88)
> at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
> at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
> at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
> at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
> at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:419)
> at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:868)
> at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:422)
> at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:169)
> at weblogic.wsee.jaxws.WLSServletAdapter.handle(WLSServletAdapter.java:229)
> at weblogic.wsee.jaxws.HttpServletAdapter$AuthorizedInvoke.run(HttpServletAdapter.java:667)
> at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:368)
> at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:163)
> at weblogic.wsee.util.ServerSecurityHelper.authenticatedInvoke(ServerSecurityHelper.java:108)
> at weblogic.wsee.jaxws.HttpServletAdapter$3.run(HttpServletAdapter.java:286)
> at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:295)
> at weblogic.wsee.jaxws.JAXWSServlet.doRequest(JAXWSServlet.java:128)
> at weblogic.servlet.http.AbstractAsyncServlet.service(AbstractAsyncServlet.java:103)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
> at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)
> at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
> at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
> at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)
> at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:247)
> at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3679)
> at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3649)
> at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
> at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
> at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
> at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
> at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2433)
> at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2281)
> at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2259)
> at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1691)
> at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1651)
> at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270)
> at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
> at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
> at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
> at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
> at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
> at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
> at weblogic.work.ExecuteThread.run(ExecuteThread.java:346) Caused by: java.lang.ClassNotFoundException:
> org.bouncycastle.jcajce.provider.digest.SHA256$Digest
> at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1026)
> at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:987)
> at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:83)
> at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:608)
> at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:540)
> at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:493)
> at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:470)
> at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:53)
> at java.security.Provider$Service.getImplClass(Provider.java:1636)
> ```
我有一个网络服务,它是一个数字签名(验证pdf,sign pdf)。我正在使用库bcpkix-jdk15on-1.54.jar,bcprov-jdk15on-1.54.jar,itextpdf-5.4.0.jar。并作为Weblogic 12c 12.2.1.2 ...
我知道这个问题已经存在了相当长的时间,但是我遇到了类似的问题,解决方案是使用以下选项之一将这些JAR文件放在服务器CLASSPATH上: