当前位置: 首页 > 知识库问答 >
问题:

如何排除bouncycastle weblogic 12c库

樊运乾
2023-03-14

我有一个Web服务,它是一个数字签名(验证pdf,签名pdf)我正在使用库bcpkix-jdk15on-1.54.jar,bcprov-jdk15on-1.54.jar,itextpdf-5.4.0.jar.和作为Weblogic 12c12.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)
>         ```

共有2个答案

龙飞文
2023-03-14

尝试将其添加到weblogic中。xml文件:

<container-descriptor>
    <prefer-application-packages>
        <package-name>org.bouncycastle</package-name>
    </prefer-application-packages>
</container-descriptor>
酆耀
2023-03-14

我知道这个问题已经存在很长时间了,但我遇到了类似的问题,解决方案是使用以下选项之一将这些JARs文件放在服务器类路径上:

  • 启动脚本(setUserOverrides.sh[or. bat])
  • 将它们复制到DOMAIN_HOME/lib目录

希望有帮助。

 类似资料:
  • 问题内容: 我的文件夹包含单元测试和功能测试。功能测试的类路径中有单词,而单元测试中没有。那么,如何仅运行单元测试? 非常感谢你。 PS :我知道很容易使用“包含”逻辑来选择测试。例如,仅在我的情况下运行功能测试,我可以简单地使用此功能。 但是,我不知道如何以简单的方式排除测试。 顺便说一句,我正在使用gradle 1.11。 问题答案: 任务的文档通过一个示例和所有内容对其进行了说明:

  • 问题内容: 我在表中有一个日期列。 我应该排除周末(星期六和星期日)。工作日的数据应单独显示。 如何在SQL中做到这一点? 问题答案: 您只需要添加以下 过滤器 : 您的查询如下所示: 例如(WITH子句仅用于构建测试用例),以下查询仅显示从到的工作日(即,不包括星期六和星期日): 有关详细示例,请参见生成日期,月份名称,星期编号,两个日期之间的天数

  • 我正在遵循Laravel文档来设置使用推送器的广播,它看起来很简单,但是我还没有得到它的工作,所以我一定是在路上的某个地方犯了一个错误。 以下是我所做的: 服务器端 我创建了一个,它实现了接口,并定义了方法。 我正在从我的一个API控制器引发事件: 我已经在我的文件中配置了推进器凭据。 客户端 我已经在客户端配置了Laravel Echo(通过angular Laravel Echo包),并将我的

  • 在cucumber测试中,我想在不改变特性文件的情况下跳过一些特性文件,比如添加额外的标记。虽然标签可以排除功能文件运行,但我不能修改这些文件。是否有方法在maven pom.xml中进行配置?或者我可以使用带有特殊特性参数的@cucumberoptions吗? 一种方法是使用Maven插件为每个特性文件生成一个Junit Runner类。然后,通过,我们可以指定排除或包含以排除或包含那些Juni

  • 我在尝试连接到Google Cloud Message Server时收到许多< code>401未授权错误。 我们的代码在测试服务器上运行了一段时间,但是在生产服务器上却失败了几次。 API键工作正常,推送通知(最终)到达,但同时我得到了许多< code>401错误。 我已经在控制台上验证了服务器IP地址在白名单上: 在遵循Google故障排除指南时,我得到了令人惊讶的结果: 有时,同一个< c

  • 问题内容: 我想遍历除“ node_modules”目录以外的所有子目录。 问题答案: 解决方案1(组合和) 该解决方案的目的不是要处理性能,而是要显示一个可移植的解决方案:还应该与busybox或2.5之前的GNU版本一起使用。 使用 ,排除foo和bar目录: 然后结合 使用和 作为递归解决方案的非递归使用: 解决方案2(递归使用): 您已经知道此解决方案,但是我添加了它,因为它是最新,最有效