尝试在TomEE上部署(使用OWB)时遇到问题。 我遇到以下异常:
javax.enterprise.inject.UnsatisfiedResolutionException: Api type [org.apache.wicket.cdi.AutoConversation] is not found with the qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name : autoConversation, Bean Owner : [null]
at org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatisfiedResolutionException(InjectionExceptionUtil.java:60)
at org.apache.webbeans.container.InjectionResolver.getInjectionPointBean(InjectionResolver.java:250)
at org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:76)
at org.apache.webbeans.inject.InjectableField.doInjection(InjectableField.java:65)
at org.apache.webbeans.portable.InjectionTargetImpl.injectFields(InjectionTargetImpl.java:372)
at org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:358)
at org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:342)
at org.apache.wicket.cdi.NonContextual.postConstruct(NonContextual.java:129)
at org.apache.wicket.cdi.NonContextualManager.postConstruct(NonContextualManager.java:65)
at org.apache.wicket.cdi.ConversationPropagator.(ConversationPropagator.java:122)
at org.apache.wicket.cdi.CdiConfiguration.configure(CdiConfiguration.java:188)
…
我一直在网上寻找信息,但似乎没有任何内容。我的classpath上有seam-conversation-spi和seam-conversation-owb jar,所以这不是一个依赖问题(有一些,但是克服了它们)。
我从其他人那里了解到,在其他应用服务器上部署带有wicket-cdi的EAR非常简单直接。但是,我真的很喜欢TomEE(整个“基于TomCat”的概念),并且不想转换。
我在这里不知所措,有没有人知道发生了什么?
编辑1:
这是我的应用程序类init方法的内容:
public void init() {
super.init();
BeanManager manager = (BeanManager)new InitialContext().lookup(“java:comp/BeanManager”);
new CdiConfiguration(manager).configure(this);
}
课堂上真的没有了。
编辑2:
以下是用于创建我部署的EAR文件的application.xml文件的代码:
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"
version="6">
<initialize-in-order>true</initialize-in-order>
<module>
<ejb>integration.jar</ejb>
</module>
<module>
<ejb>application.jar</ejb>
</module>
<module>
<web>
<web-uri>presentation.war</web-uri>
<context-root>app</context-root>
</web>
</module>
</application>
编辑3:
从我在wicket-cdi和openwebbeans的代码中读到的内容,我认为它必须是以下场景之一:
仍然不知所措,任何帮助都会受到赞赏。
编辑4:
以下是我在WAR文件中的JAR列表,如果它有帮助:
答案 0 :(得分:1)
Wicket希望AutoConversion bean能够注入ConversationPropagator。
请参阅org.apache.wicket.cdi.ConversationPropagator源代码的片段:
@Inject
Conversation conversation_;
@Inject
AutoConversation autoConversation;
解决方案:
将org.apache.wicket.cdi.AutoConversation类型的bean添加到bean定义中。
禁用ConversationPropagator
查看修改后的代码,如何禁用ConversationPropagator
new CdiConfiguration(manager).setPropagation(ConversationPropagation.NONE).configure(this);