问题标签 [weld]
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.
java - 在焊接中,如何在注入对象之前对其进行初始化
我有一个简单的 POJO 类,我将它注入到很多地方。它没有明确的生产者。我只是这样做@Inject POJO mypojo
,而且效果很好。
现在我的问题是我想在注入到其他地方之前初始化 POJO 对象(这涉及从数据源读取)。数据源本身就像@Resource(name = "jdbc/xx") DataSource ds;
在 POJO 中一样被注入。现在在我的 POJO 的构造函数中ds
,它是 null,它只在构造函数完成后注入。
在创建对象之后和注入之前我可以得到一个钩子,以便我可以在注入之前初始化我的对象吗?
methods - 启用 CDI 注入到由生产者方法创建的 bean
生产者方法对于以编程方式创建实例并在上下文中发布它们非常有用。new
问题是由生产者方法创建和返回的实例的所有属性都不是由 CDI 注入的。在 Weld 文档中,我读到这是一种有意的行为,但在许多情况下,注入这些 bean 会非常有用。
是否有解决方法可以注入此类 bean?
java - 焊缝未注入
我正在尝试在 java SE 中建立一个非常简单的焊接实现。
我有扩展类:
然后我有一个要注入的简单类:
最后是我想注入的类:
结果输出是:
我希望在构造 Test() 时注入简单的类,并调用应该输出预期文本的 postconstruct 方法。
我到底做错了什么?
javafx-2 - 使用 Weld 引导 Javafx 2.0
我正在尝试使用 Weld-SE 引导一个小型 javafx 应用程序。@Inject
如果我删除注释Menubar
并手动实例化它,我就能够运行应用程序。但是在我添加@Inject 的那一刻,应用程序抛出异常。下面列出的是注入点和生产者方法。这就是我所做的所有配置,我错过了什么吗?
注入点
具有生产者方法的类
例外
eclipse - Deployment Error Weld-001408 with WLS12c and OEPE
I created the following projects in OEPE:
- weld001408 (Java EE - Enterprise Application Project)
- weld001408utility (Java EE - Uitility Project), belongs to the ear weld001408
- weld001408web (Web - Dynamic Web Project), belongs to the ear weld001408
When I created the project, I didn't change the defaults (onley ear-membership) and the target-runtime is Oracle WebLogic Server 12.1.1. And the clean domain, created with the wizard, is added to the workspace.
The Code is the following:
utility-project
class 'weld001408utility/ValueProducer.java'
META-INF/beans.xml
web-project
weld001408web/ValueConsumerServlet.java
WEB-INF/beans.xml
The issue
Now when I try to deploy the application in Eclipse, I get always a WELD-001408 error:
But when I export the ear from eclipse and deploy that file over the weblogic administration console, then everything's working fine and the value is correctly injected to the servlet. No problems on deployment, nothing.
There are some patches for weblogic around and I have the latest installed (I checked a lot bugs which could belongs to my problem, and they should all included with 12.1.1.0.2):
I tried the same application on Windows Vista and on a Linux based System with the latest OEPE Versions (all-in-one package), no success...
The question
Has somone the exact same issue? Is it possible for someone to reproduce the problem? And when not, on which configuration with what patches is it working?
I don't know if it's a Oracle Enterprise Pack for Eclipse or an WebLogic-Issue.
Thanks for helping!
servlets - Jetty 8 上的 Servlet(非嵌入式!)+ Weld for CDI
我想将 WAR 部署到 Jetty 8。WAR 包含一个简单的 servlet,该 servlet 通过 CDI (Weld) 将依赖项注入其中。
我在网上找到的所有示例/问题似乎都只涉及嵌入式 Jetty - 仅将 Jetty 用作外部 servlet 容器无关紧要。
我已经根据我对这些部分如何组合在一起的最佳知识进行了所有设置,但注入似乎没有发生,即使系统说一切都可以注入。
我的 META-INF 中有一个裸beans.xml。
我的 pom.xml、jetty-context.xml + jetty-env(在我的 WEB-INF 中)、servlet、injectee 实现 + 实现:
部署战争后,最初一切似乎都很好:
Mar 08, 2013 3:38:42 PM org.jboss.weld.bootstrap.WeldBootstrap <clinit>
INFO: WELD-000900 1.1.10 (Final)
Mar 08, 2013 3:38:42 PM org.jboss.weld.bootstrap.WeldBootstrap startContainer
INFO: WELD-000101 Transactional services not available. Injection of @Inject Use
rTransaction not available. Transactional observers will be invoked synchronousl
y.
Mar 08, 2013 3:38:42 PM org.jboss.weld.environment.jetty.JettyPost72Container in
itialize
INFO: Jetty7 detected, JSR-299 injection will be available in Listeners, Servlet
s and Filters.
init init init init init init init init init init init init init init init!!!!!!
!!!!!!!!!!!!!!
...然后,当它尝试访问 servlet 第 41 行上的被注入者时,我得到一个空指针。
我错过了一些明显的东西吗?Weld 告诉我一切都对 CDI 有利。但那里什么也没有。
编辑:我也尝试过与 Jetty 7.6.9.v20130131 对齐的所有内容(根据文档,Weld 支持)
干杯,感谢您提供的任何见解。
java - WELD-001303 范围类型 javax.enterprise.context.SessionScoped 没有活动上下文
我已经搜索了每个地方,但似乎我找不到解决此错误的最佳答案,有我的堆栈跟踪,有人可以告诉我发生了什么事,我花了两个日期找到这个错误...... :(
netbeans - Weld-se 和 netbeans:调试不起作用
我正在尝试将 javaSE 应用程序移植到 Weld SE 以获得依赖注入支持。应用程序启动并正常运行(我将 main 更改为 ContainerInitialized 事件的观察者,添加 beans.xml 并从 org.jboss.weld.environment.se.StartMain 类开始,我还有一些出现的注入工作正常)。
然而,现在调试似乎停止在 netbeans 中工作。我恢复了我的更改以返回没有焊接 SE 的设置,并且调试再次开始工作。
我正在使用netbeans 7.3。我做错了什么,还是在 netbeans 中配置了一些特殊的东西来调试 Weld SE 应用程序以按预期工作?
编辑:原来这是一个冲突,因为同一个 JavaSE 项目还具有对 glassfish 嵌入的依赖项,因此它可以向 glassfish 服务器发出 JMS 请求:
我猜 glassfish-embedded 和weld-se 的焊接库相互冲突或混淆了调试器。暂时无法完成这项工作。
cdi - 当 bean 类实现还扩展了某些参数化接口的参数化接口时,CDI bean 类型解析问题
鉴于我缺乏解释问题的词汇,我通过一个重现失败并帮助查找原因的示例来展示它:
第二个块显示了 bean 类的 bean 类型集BeanClass1
,BeanClass2
根据Weld
. 在那里我们发现 bean types set 包含 typeBaseType<T>
而不是BaseType<SomeType1>
or BaseType<SomeType2>
。
所以,记住BeanClass2
的间接接口对应的bean类型有类型变量而不是实际的类型参数。因此,根据本规范的最后一点, a被错误地认为可分配给。BaseType<P>
Weld
T
SomeType2
BeanClass2
BaseType<SomeType1>
这是期望的行为还是错误?有解决方法吗?是否在新Weld
版本中修复。
测试在使用 maven 工件 org.jboss.as:jboss-as-weld:7.1.1 的 JBoss AS 7.1.1 上执行
编辑:我认为这个问题的原因不是第一个答案建议的类型擦除(它已被删除),而是Weld
. 生成 bean 类型所需的所有信息在运行时都可用。我猜这个错误是当Weld
通过反射生成bean类的bean类型时。类型变量解析应该是递归的,显然不是。
我确信生成间接接口的 bean 类型所需的信息在运行时可用,因为我制作并测试了一个使用库完成此任务的方法 - 几年前我为内存高效的 java 序列化程序制作了 - 幸运的是它有一个函数这正是我们需要的:Type
为 java 类的每个祖先生成/获取实例,递归解析类型变量。我试图将涉及的方法放在这里,但粘贴代码时出现格式问题;图书馆很长而且记录不充分的事实让我有理由放弃。
至少,为了说明如何解析间接接口的类型变量的本质,我编写了以下代码。它仅适用于特定类,但可以通过一些努力进行概括:
我希望这避免相信类型擦除是导致此问题的原因。
java - 将 HttpSession 焊接到会话范围的 bean 中为空
我正在使用 Weld 2.0 在 Jetty 6.1 上运行 GWT 应用程序。得到下一个代码:
我错过了什么,为什么没有注入 HttpSession?参考说Injecting the HttpSession will force the session to be created.