我正在开发一个要部署在weblogic 12中的应用程序,我想在我的Dao中使用CDI查询模块https://ctpconsulting.github.io/query/1.0.0.Alpha5/index.html
但是cdi查询imple依赖于solder api和solder impl 3.1.0.Final,当我尝试在应用程序服务器中部署应用程序时,我会得到以下jboss类的异常:
weblogic.ejb.container.compliance.ComplianceException: AroundInvoke method passExceptionsToSolderCatch in class org.jboss.solder.exception.control.ExceptionHandledInterceptor must have the signature: 'Object <METHOD(InvocationContext)> throws Exception'
at weblogic.ejb.container.compliance.BusinessMethodInterceptorChecker.validateAroundInvokeOrTimeoutMethod(BusinessMethodInterceptorChecker.java:154)
at weblogic.ejb.container.compliance.BusinessMethodInterceptorChecker.checkAroundInvokeOrTimeoutMethods(BusinessMethodInterceptorChecker.java:70)
at weblogic.ejb.container.compliance.InterceptorChecker.checkAroundInvokeMethods(InterceptorChecker.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:483)
at weblogic.ejb.container.compliance.EJBComplianceChecker.check(EJBComplianceChecker.java:100)
at weblogic.ejb.container.compliance.EJBComplianceChecker.checkDeploymentInfo(EJBComplianceChecker.java:84)
at weblogic.ejb.container.ejbc.EJBCompiler.doCompile(EJBCompiler.java:172)
at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:346)
at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:314)
at weblogic.ejb.container.deployer.EJBDeployer.compileJar(EJBDeployer.java:429)
at weblogic.ejb.container.deployer.EJBDeployer.compileIfNecessary(EJBDeployer.java:355)
at weblogic.ejb.container.deployer.EJBDeployer.prepare(EJBDeployer.java:723)
at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:439)
at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:295)
at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:285)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:109)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:175)
at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:170)
at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:80)
at weblogic.work.ContextWrap.run(ContextWrap.java:40)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:548)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
有机会在weblogic 12中运行CDI查询模块吗?
提前感谢
显然,这个错误是不言自明的。焊料模块定义了一个拦截器,并用"@AroundInvoke"注释了一个方法,该方法的签名不符合规范
(拦截器规范第2.5节)
在拦截器类上定义的生命周期回调拦截器方法必须具有以下签名之一:
- void(InvocationContext)
- 对象(InvocationContext)引发异常
CTP的查询模块已移到Apache DeltaSpike中。请为WebLogic使用Apache DeltaSpike版本。