Java 将war部署到payara会引发严重错误:无法获取Mojarra的CDI 1.1实用程序
因为这是在一个相当大的代码库中发生的,我甚至不知道如何开始隔离这个问题,所以我不能给出一个小的复制示例。 也许你可以帮助我进一步调试这个问题,一步一步地提供一个具有相同症状的小场景 在payara micro中部署.war文件时出现以下错误Java 将war部署到payara会引发严重错误:无法获取Mojarra的CDI 1.1实用程序,java,cdi,weld,payara,payara-micro,Java,Cdi,Weld,Payara,Payara Micro,因为这是在一个相当大的代码库中发生的,我甚至不知道如何开始隔离这个问题,所以我不能给出一个小的复制示例。 也许你可以帮助我进一步调试这个问题,一步一步地提供一个具有相同症状的小场景 在payara micro中部署.war文件时出现以下错误5.2021.2: [2021-04-26T10:10:09.096+0000] [] [SEVERE] [] [javax.enterprise.resource.webcontainer.jsf.application.view] [tid: _Threa
5.2021.2
:
[2021-04-26T10:10:09.096+0000] [] [SEVERE] [] [javax.enterprise.resource.webcontainer.jsf.application.view] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1619431809096] [levelValue: 1000] Unable to obtain CDI 1.1 utilities for Mojarra
[2021-04-26T10:10:09.109+0000] [] [SEVERE] [] [javax.enterprise.resource.webcontainer.jsf.flow] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1619431809109] [levelValue: 1000] Unable to obtain CDI 1.1 utilities for Mojarra
[2021-04-26T10:10:09.181+0000] [] [SEVERE] [NCLS-CORE-00026] [javax.enterprise.system.core] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1619431809181] [levelValue: 1000] [[
Exception during lifecycle processing
org.glassfish.deployment.common.DeploymentException: CDI deployment failure:Error while loading class fish.payara.security.oauth2.OAuth2AuthenticationMechanism$Proxy$_$$_WeldSubclass -- Error while loading class fish.payara.security.oauth2.OAuth2AuthenticationMechanism$Proxy$_$$_WeldSubclass
at org.jboss.weld.resources.ClassTransformer.getBackedAnnotatedType(ClassTransformer.java:186)
at org.jboss.weld.resources.ClassTransformer.getBackedAnnotatedType(ClassTransformer.java:194)
at org.jboss.weld.resources.ClassTransformer.getEnhancedAnnotatedType(ClassTransformer.java:232)
at org.jboss.weld.injection.producer.SubclassedComponentInstantiator.initEnhancedSubclass(SubclassedComponentInstantiator.java:86)
at org.jboss.weld.injection.producer.SubclassedComponentInstantiator.<init>(SubclassedComponentInstantiator.java:79)
at org.jboss.weld.injection.producer.SubclassedComponentInstantiator.forInterceptedDecoratedBean(SubclassedComponentInstantiator.java:63)
at org.jboss.weld.injection.producer.BeanInjectionTarget.initializeAfterBeanDiscovery(BeanInjectionTarget.java:121)
at org.jboss.weld.injection.producer.InjectionTargetInitializationContext.initialize(InjectionTargetInitializationContext.java:42)
at org.jboss.weld.injection.producer.InjectionTargetService.initialize(InjectionTargetService.java:63)
at org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:481)
at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:86)
at org.glassfish.weld.WeldDeployer.processApplicationLoaded(WeldDeployer.java:521)
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:433)
at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:346)
at com.sun.enterprise.v3.server.ApplicationLifecycle.prepare(ApplicationLifecycle.java:570)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:576)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:556)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:552)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:551)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:582)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:574)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:573)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1497)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:120)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1879)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1755)
at com.sun.enterprise.admin.cli.embeddable.CommandExecutorImpl.executeCommand(CommandExecutorImpl.java:183)
at com.sun.enterprise.admin.cli.embeddable.CommandExecutorImpl.run(CommandExecutorImpl.java:96)
at fish.payara.boot.runtime.BootCommand.execute(BootCommand.java:69)
at fish.payara.boot.runtime.BootCommands.executeCommands(BootCommands.java:136)
at fish.payara.boot.runtime.BootCommands.executeCommands(BootCommands.java:130)
at fish.payara.micro.impl.PayaraMicroImpl.bootStrap(PayaraMicroImpl.java:1049)
at fish.payara.micro.impl.PayaraMicroImpl.create(PayaraMicroImpl.java:226)
at fish.payara.micro.impl.PayaraMicroImpl.main(PayaraMicroImpl.java:213)
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 fish.payara.micro.boot.loader.MainMethodRunner.run(MainMethodRunner.java:50)
at fish.payara.micro.boot.loader.Launcher.launch(Launcher.java:114)
at fish.payara.micro.boot.loader.Launcher.launch(Launcher.java:73)
at fish.payara.micro.boot.PayaraMicroLauncher.create(PayaraMicroLauncher.java:88)
at fish.payara.micro.boot.PayaraMicroLauncher.main(PayaraMicroLauncher.java:72)
at fish.payara.micro.PayaraMicro.main(PayaraMicro.java:467)
]]
[2021-04-26T10:10:09.182+0000] [] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1619431809182] [levelValue: 1000] Exception while loading the app
如果有人能给我一个提示,告诉我可能出现什么问题,或者如何更好地调试这种情况,我会非常高兴
谢谢大家!
编辑1:
正如我在评论中所建议的,我调试了payara,并在上放置了一个断点以找出原因(因为它显然没有正确地登录到payara的当前版本中)
原因是ClassNotFoundException
"java.lang.ClassNotFoundException: Whitelist enabled, but class [org.eclipse.microprofile.config.Config] is not whitelisted"
我将对此做进一步调查
编辑2:似乎存在某种对microfile.config的隐藏依赖关系(不在我们的代码中,也不在我们的某个依赖关系中。至少不明确)
它有助于增加:
<dependency>
<groupId>org.eclipse.microprofile.config</groupId>
<artifactId>microprofile-config-api</artifactId>
<version>2.0</version>
</dependency>
org.eclipse.microfile.config
微文件配置api
2
我们将查看这是否解决了所有问题,然后写一个答案。我们设置了一个白名单来帮助解决一些类加载问题: 在升级payara时,出于某种原因,我们现在依赖于microfile.Config可用 可以通过将其添加到白名单来解决此问题:
<glassfish-web-app>
<whitelist-package>org.eclipse.microprofile</whitelist-package>
</glassfish-web-app>
org.eclipse.com文件
或者将api添加为依赖项:
<dependency>
<groupId>org.eclipse.microprofile.config</groupId>
<artifactId>microprofile-config-api</artifactId>
<version>2.0</version>
</dependency>
org.eclipse.microfile.config
微文件配置api
2
由:xyz“块引起的”加载类时出错“异常丢失”的堆栈跟踪。答案在那边。@BalusC谢谢,我也这么想。但是,我的输出中没有“由:xyz引起的”块。你知道如何打开更多的冗长或是其他的东西,让它们包含进来吗?部署在引导后通过容器中的deploy--force--enabled=true[…]
完成。到目前为止,引导失败时的所有问题都有适当的堆栈跟踪,我能够轻松找到原因。在这种情况下,它就不存在了。当针对一个成熟的Payara web服务器而不是Payara Micro部署相同的部署时,它的行为如何?同样的错误。堆栈跟踪略有不同,但仍不包括原因。它在同一条线路上也失败了。此处:在此处放置断点并检查e
。它代表了原因,因此包含了答案。
<dependency>
<groupId>org.eclipse.microprofile.config</groupId>
<artifactId>microprofile-config-api</artifactId>
<version>2.0</version>
</dependency>