问题标签 [openwebbeans]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jsf - JAR 中的 beans.xml 导致 java.lang.NoClassDefFoundError: javax.faces.component.behavior.Behavior
我正在使用 Websphere 8.5 及其内部 Java EE 框架、用于 DI 的 Apache OpenWebBeans 和用于查看的 Apache MyFaces。我还有一个 JAR,其中包含一些用“@Named”注释的 bean(因此,它们是 OpenWebBeans 管理的 bean)。此 JAR 位于我的 Web 应用程序的“WEB-INF/lib”目录和应用程序的类路径中。
有人告诉我,我应该在希望 CDI 实现查找和管理 bean 的每个 JAR 中放置一个“beans.xml”文件。我就是这样做的(在应用程序的“META-INF”文件夹和 JAR 的同一文件夹中有一个“beans.xml”文件)并且在 Tomcat 7 中一切正常(我可以在 JSF 页面上访问我的 bean,一切都被注入并解决,没有任何问题等)。我在应用程序的“WEB-INF/lib”中使用 Apache Open Web Beans 1.2 和 MyFaces 2.0 JAR 运行 Tomcat。
现在,问题是:在 Websphere 中,使用相同的配置(应用程序的“WEB-INF/lib”中没有框架 JAR,只有我的 bean 的 JAR)我得到一个 NoClassDefFoundError 指的是 JSF 类,“javax.faces.component。每次我尝试加载页面时(没有页面加载,顺便说一句)。奇怪的是,当我从应用程序和 JAR 中删除所有“beans.xml”文件时,一切都按预期使用 JSF(除了 OpenWebBeans bean 加载和管理,当然,因为不存在“beans.xml”)。
我到处搜索这个问题,但找不到任何线索。我知道这个类对 websphere 是可用的,因为我搜索了服务器 JAR 并在“WEBSPHERE_INSTALL\plugins\javax.j2ee.jsf.jar”找到了它(也因为没有“beans.xml”,找到了这个类并且一切正常),但我不知道为什么当应用程序的类加载器中存在任何“beans.xml”文件时没有加载这个 JAR。有人可以帮忙吗?
java - @PersistenceContext 始终为空
我试图让 CDI(带有 Open Web Beans)在使用 Delta Spike(@RunWith(CdiTestRunner.class)
)的单元测试中工作。依赖注入工作正常,但我的 EntityManagerFactory 始终为空:
我知道我persistence.xml
的没问题,因为我可以手动创建会话工厂:
并且所有其他注射都工作正常。有人知道可能缺少什么吗?
jsf-2 - 使用 OpenWebbeans 启动时出现 Omnifaces 2.0 错误
我正在将我现有的 JSF 应用程序与 TomCat7 上的 Primefaces 转换为使用 CDI 和 Omnifaces 2.0。我之前已经在 webapp 中使用过以前版本的 Omnifaces。
TomEE 不是一个选项,在多次尝试 Weld 之后,我开始使用 OpenWebbeans。但是,我在服务器启动时收到错误消息。对此有什么帮助吗?
我的配置(JSF 2.2.8):
pom.xml
注意:添加 openwebbeans-jsf 并没有解决任何问题
上下文.xml
我收到以下错误:
[编辑]
我关注了关于 Weld 安装的博客。我之前从 Weld 添加了 SP1,但我现在用最终版本重试以捕捉必要的痕迹。
只需添加weld-servlet 依赖项就可以得到以下堆栈跟踪:
我之前遇到过这个错误,我不得不将 Jandex 添加到类路径中,版本 1.2.4.Final
添加此库后,似乎(并且似乎)服务器和应用程序正在正确启动,但事实并非如此。我从来没有收到“应用程序启动”消息。我在 Windows 7 上通过 Eclipse localhost 运行 TomCat,也在 Mac 上尝试过,但行为相同。Eclipse 永远不会停止显示消息“正在启动 Tomcat v7.0 ...”。查看线程转储并没有让我学到更多东西:
tomcat - 在openwebbeans 1.5.0 之前开始的omnifaces?
我正在使用 Java 8 / Tomcat 8 / OpenWebBeans 1.5.0 / MyFaces 2.2.8 / DeltaSpike 1.3.0。
由于我想使用 openwebbeans-tomcat7 模块,因此我将以下 jar 放在了 tomcat/lib 中:
- openwebbeans-web-1.5.0.jar
- openwebbeans-tomcat7-1.5.0.jar
- openwebbeans-spi-1.5.0.jar
- openwebbeans-resource-1.5.0.jar
- openwebbeans-jsf-1.5.0.jar
- openwebbeans-impl-1.5.0.jar
- openwebbeans-el22-1.5.0.jar
- xbean-finder-shaded-4.1.jar
- xbean-asm5-shaded-4.1.jar
- myfaces-impl-2.2.8.jar
- myfaces-api-2.2.8.jar
- geronimo-atinject_1.0_spec-1.0.jar
- geronimo-annotation_1.2_spec-1.0.jar
- geronimo-validation_1.0_spec-1.1.jar
- geronimo-stax-api_1.0_spec-1.0.jar
- geronimo-servlet_3.0_spec-1.0.jar
- geronimo-jcdi_1.1_spec-1.0.jar
- geronimo-interceptor_1.2_spec-1.0.jar
- commons-digester-1.8.jar
- commons-beanutils-1.8.3.jar
- commons-collections-3.2.jar
- commons-logging-1.1.1.jar
- commons-codec-1.3.jar
我也喜欢使用伟大的omnifaces 库。因此,我的 webapp 在 WEB-INF/lib 中具有omnifaces 作为依赖项
我使用的两个版本(1.8.1 和 2.0)的 CDI 存在问题。在我看来,omnifaces 是在 openwebbeans 之前启动的,因此找不到 CDI。
对于 1.8.1,此问题会引发异常,但它是非阻塞的,因为 CDI 在此版本中不是强制性的。在 2.0 中,它会阻止 webapp 启动,因为 omnifaces 2.0 需要 CDI。
对于 1.8.1,日志为:
使用 2.0,它是:
这个问题只发生在全面。OWB 在我的 web 应用程序中工作。
启动顺序仍然非常不稳定,具体取决于容器(例如,参见http://javaeesquad.blogspot.fr/2015/03/getting-notified-when-java-ee.html)。
我看到 OmniFaces 已经处理 Glassfish 特殊情况:
公共类 ApplicationInitializer 实现 ServletContainerInitializer {
和课堂黑客:
是否有可能对 OWB 有这样的特殊情况?测试设置属性对我来说足够公平。
还是有可能推迟全脸实例化?
最后,为什么不等待 CDI 通知,使用如下方法:
cdi - CDI - ContextNotActiveException - 具有范围类型注释 @RequestScoped 的 WebBeans 上下文在当前线程中不存在
环境:WAS 8.0.0.10 CDI:1.0(实现OpenWebBeans)
用例:服务器通过 TimerManager 异步执行 Java 类。我正在尝试将具有请求范围的 cdi bean 注入到类中,但是当在注入上调用任何方法时,下面是我得到的堆栈跟踪。如果我在注入中使用 Applicationscope 而不是 RequestScope,则代码可以正常工作。
在调查该问题后,我发现请求和会话上下文对于由容器异步初始化的线程将不会处于活动状态。有什么方法可以初始化请求和会话上下文吗?
错误 :
java - 在具有 CDI 钝化能力的 bean 中,是否可以重新注入非钝化能力依赖项而不是钝化?
在具有 CDI 钝化能力的 bean 中,是否可以重新注入非钝化能力依赖项而不是钝化?
考虑这段代码:
所以Logger
不是,但我真的不在乎。 Serializable
什么时候UserData
反序列化,是否有可能以Logger
某种方式再次调用生产者?
编辑
最初的讨论从这里开始:
http://www.cdi-spec.org/news/2015/07/03/CDI-2_0-EDR1-released/#comment-2119769909
希望CDI专家组能想出更好的办法@Instance
jakarta-ee - Maven:使用 openejb 运行测试时出现 javax.enterprise.context.ContextNotActiveException
在 OpenEjb 和带有嵌入式容器的 Junit 的帮助下,我为我的 Java-ee 项目创建了一些单元测试和集成测试。测试在 Eclipse 中运行良好,bean(CDI/EJB)被注入并且工作正常。但是当我用 maven 和 surefire 开始测试时,我得到了以下错误:
有什么问题?它看起来像一个类路径问题或其他东西,但显式添加 openwebbeans-spi 和 openwebbeans-impl 不起作用。
我在测试类中使用以下几行:
我有以下 openejb-junit.properties:
谢谢你的帮助。
问候,胡尔斯。
java - javax.enterprise.inject.Vetoed 打开web beans,哪个jar?
我想试用 Open Web Beans 1.6.2,但它在其网站上列出的用于向 Java SE 应用程序添加 CDI 支持的 jar
似乎不包含javax.enterprise.inject.Vetoed
注释,我必须添加 cdi-api 1.2 作为依赖项来解决问题,但我不确定这是否正确,因为所有其他 CDI 依赖项都已通过上述解决?这是我在 pom 中的依赖项,这是正确的吗?
此链接似乎表明@Vetoed
在 Open Web Beans 1.5.0 中添加了对
java - 注入 SLF4J 记录器 - 仅注入一次
我想将 aorg.slf4j.Logger
注入需要它的类中,而不是在顶部将其声明为静态并指定类名,例如。
为此,我创建了一个像这样的生产者方法
然后我使用它注入它,@Inject
但它似乎只为请求它的第一个类注入,所有其他具有org.slf4j.Logger
注入点的类最终都带有 NPE
maven - 将 Tomee Maven 插件与升级的 OpenWebBeans 一起使用
我正在使用 Tomee Maven 插件开发一个使用 CDI 事件传递的应用程序。我目前无法触发具有泛型类型参数的事件,据我所知,这是因为 Tomee 实例想要使用不支持此功能的 openwebbeans 1.2.7。我似乎 openwebbeans 1.5.0 及更高版本确实支持这一点,但我不确定如何(或是否)我可以让插件使用这个版本。
我曾尝试使用插件配置将库替换为新版本,但这会导致更多异常(没有类定义等)
插件版本为: