问题标签 [jboss-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 - Netbeans:奇怪的焊接行为
按照官方文档,我实现了一个非常简单的 Java SE Weld 快速入门类。
我的运行配置触发org.jboss.weld.environment.se.StartMain
这是有趣的部分。如果我不创建 Jar 文件(单击“清理并构建”),则不会打印我的消息。
如果我确实创建了 Jar 文件,那么无论从命令行还是从 Netbeans,一切都运行良好。所以我假设 Netbeans 正在从 jar 中运行应用程序。
问题是……不是。
如果我更新我的测试类并从 Netbeans 运行,它会选择更改。如果我从命令行运行 jar,它只会打印旧消息。
如果我清理我的项目,Netbeans 启动配置会停止打印消息。
谁能解释一下 Netbeans 究竟是如何运行我的应用程序的?这种奇怪的行为有意义还是应该被视为错误?
java - 如何创建模块化 JSF 2.0 应用程序?
我有一个界面定义明确的应用程序。它使用 CDI 来解析模块,(特别是它使用 API 接口上的 Instance<> 注入点来解析模块)并通过接口将各种数据传回和第四次传递而没有问题。我有意将 API 和实现分开,并且模块仅从 API 继承以避免紧密耦合,并且应用程序仅通过运行时依赖关系知道模块,并且通过 API 完成数据传递。应用程序在没有模块的情况下运行良好,只需将 jar 放入 WEB-INF/lib 文件夹并重新启动应用服务器即可添加。
我遇到的问题是我希望模块创建视图的一部分,因此我想以可移植的方式调用 JSF 组件,或者从模块中包含它以便拥有它呈现其视图。我已经解决了我想要调用的模块,并且已经准备好对模块接口的引用。我最初想到的方法是做一个 ui:include 要求模块提供它的视图模板在哪里,但我不知道如何以有意义的方式回答该查询,因为视图解析是从应用程序完成的根目录,而不是库根目录。
执行摘要是,我不知道如何使用 JSF 为 .xhtml(模板/组件)文件跨越从应用程序到库的差距。
使用 CC 会很好,但是我如何指定我想要在运行时使用特定的 CC 实例,而不是将其硬编码到页面中?
我当然可以直接调用应用程序代码并要求它进行标记,但这似乎很暴力,一旦我有了标记,我不确定如何告诉 JSF 对其进行评估。也就是说,我可以想象一个组件会采用资源路径,获取标记并评估它,返回完整的标记,我只是不知道如何实现它。
如果可能的话,我宁愿避免强迫模块开发人员采用繁重的 UIComponent 方法,这意味着要么是动态的 ui:include (或类似的)方式,要么是调用 CC 的动态方式。(我不介意在应用程序中编写一次 UIComponent 方法,如果这样可以让模块开发人员的生活更轻松)
关于我应该在哪里解决这个问题的任何建议?(如果我先找到答案,我会在这里发布答案)
jboss-weld - 焊接@注入接口
我是焊接新手。我正在设置一个打包的 seam 3 项目战争。我想发现 picketlink 安全管理,为了测试他的各种管理器(在设置数据库和实体类之后)我创建了一个控制器(TestAction 类),所以:
我的环境是 jboss 6 final。
在启动时我得到:
PersistenceManager 是一个带有参数的具体类的接口 (IdentitySesionImpl)
我如何注入 PersistenceManager?WELD-001408 是什么意思?
问候
java - 如何将服务器上的 GWT (RPC) 和 Weld/CDI 结合起来?
将 GWT 与 CDI (Seam/Weld) 集成下的问题没有引起太多关注,所以我第二次尝试。在服务器端,我想使用 Weld/CDI(我现在正在使用 Guice)。在 Guice 中,我有一个 RemoteServiceServlet 的子类,它在一个模块中命名,该模块本身在 GuiceServletContextListener 中被激活。是否有人编写了一些类来注册 RemoteServiceServlet,以便 GWT RPC 端点从 Weld 获取实例?
java - 将实体注入 ViewScoped Bean
我是 CDI 的新手,想将它用于 JSF2 应用程序。该类MyUser
是一个简单的-Bean,并且在 bean 中的方法中@Entity
创建了一个对象:@PostConstruct
在 JSF 页面中访问用户就像一个魅力:#{user.lastName}
. 但现在我想从其他 bean 访问这个对象,例如@ViewScopedBean
:
我希望当前(登录)MyUser user
在其他几个 bean 中可用,但我不确定如何执行此操作。简单地@Inject
说它不起作用(我很确定这有点简单)。
user
从其他bean访问的最佳方法是什么?JSF1.2 风格的代码UserBean bean = (UserBean)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("UserBean");
好像好像老土了!
jax-rs - 在 Tomcat 7 中使用 JAX-RS (RESTEasy) 和 CDI (Weld)
在 JSF 2.0 应用程序(在 Tomcat 7 上运行并使用weld 1.1.1.Final)中,我想建议我的用户下载一些二进制文件(.doc、.pdf 等)。
为了满足这个需求,我想使用一个 JAX-RS (RESTEasy 2.2.0.Final) 资源 bean(用 注释@Path
)。问题是在那个 bean 里面,我想从一个带有@Inject
注解的字段中调用一个服务。
实际上,就像一个焊接用户尝试类似的事情一样,我有一个NullPointerException
:Weld 不会向我注入我的服务。
因此,我在 JBoss 社区 wiki 上阅读了一篇关于如何将 RESTEasy 与 CDI 集成的帖子,因此我使我的 maven 战争项目依赖于以下内容org.jboss.resteasy:resteasy-cdi
,这是我的web.xml
:
现在的问题是,当我的应用程序启动时,我遇到了这个异常:
当我删除resteasy.injector.factory
上下文参数时,我有一个NPE
当我试图从带有注释的字段变量中获取我的服务时@Inject
......
有谁知道如何将 RESTEasy bean 配置为由 Weld 管理(并可以在 JAX-RS 资源中注入)?
dependency-injection - 关于 Arquillian 进行远程测试的基本问题
我最近开始了解 Arquillian。正在关注入门教程,了解了有关远程、嵌入式和托管容器的“容器品种”。我对 Arqillian 如何对待这些不同品种感到有些困惑。
我的问题是:入门教程第一个示例(具有 TemparatureConverter)使用 JBoss AS 6 作为远程容器。我的理解是,包含 TemparatureConverter bean 的主要应用程序存档将部署在 JBoss AS 6(在其自己的 VM 中运行)中,而我的 Test 类将在单独的 VM 中运行。
我在 TemparatureConverter.java 即 Bean 类中添加了一些日志消息:
我还在我的测试类中添加了一些日志消息:
现在我启动 JBoss AS 并通过命令行运行测试用例,输入:mvn test -Pjbossas-remote-6
我在想我在 Bean 类中添加的日志消息将打印在 JBoss 控制台上,而我在我的 Test 类中添加的日志消息将打印在 Maven 控制台窗口上,因为这两件事在单独的 VM 中运行。
然而这并没有发生,我看到所有的日志消息都打印在 JBoss AS 控制台上。
这意味着,我的测试用例与 Bean 类一起在 JBoss AS 容器中运行。
如果这是真的,那么这里的偏远在哪里?我的意思是,测试用例和 bean 都在同一个 JVM 中运行。这类似于“嵌入式容器”行为,不是吗?
我指的是这个解释:
但在这种情况下,Arquillian 似乎将我的测试用例与 Bean 类放在同一个 JVM 中。
如果我的问题不清楚,请告诉我?
dependency-injection - CDI 可以注入我的 Bean 的远程实例吗?
CDI 可以在我的远程 EJB 客户端中注入 EJB 引用吗?
实际上,我有一个 JUnit 测试用例,它在我的系统上本地运行并访问在独立 JBoss AS 上运行的 EJB。我目前正在使用 JNDI 访问 bean 的远程业务接口并对其进行测试。
我想知道,如果@Inject 可以在这里帮助我将我的 EJB 实例直接注入我的测试用例,这样我就可以避免 JNDI 查找并仍然访问 EJB?
java-ee-6 - 使用 CDI/Weld 注入通用 Bean
我刚刚来自我小小的 JavaSE/Guice 世界,目前正在发现“由容器携带”-EE6 的路径。在 Glassfish3.1 遇到一些问题后,我刚刚切换到 JBoss,现在面临一个不应该出现的问题。
作为基础设施辅助类,我正在尝试为任何类型的实体创建通用存储库/DAO。以一种非常简单的方式,这可能看起来像这样。
现在可能有一个 bean 不需要依赖于实体的查询功能,而只需要某种实体类型的存储库,例如(可能是一个测试用例):
不幸的是,Weld 似乎不喜欢这种通用注入。在部署时,我收到以下错误:
我是否遗漏了什么或者他们只是忘记了实现通用注入?据我了解通用的东西,无论如何它都会在编译后被删除——即使到目前为止这在 guice3 中工作得很好。
亲切的问候,
avi
编辑:发现garvin king的评论说这种行为在规范中,但没有在焊接中实现,(状态是在 2009 年 6 月)
java - 是否可以销毁 CDI 范围?
我正在开发一个 Java EE 应用程序,主要是带有 JSF 管理控制台的 JAX-RS,它使用 CDI/Weld 对javax.enterprise.context.ApplicationScoped
对象进行依赖注入。除了一些小的调试问题,CDI 为这个项目工作得很好。
现在我需要对注入 CDI 的对象生命周期进行一些非常粗粒度的控制。我需要具备以下能力:
- 从应用程序上下文中删除注入的对象,或
- 销毁/删除/清除/重置/删除整个应用程序上下文,或
- 定义我自己的
@ScopeType
和实现Context
,我可以在其中提供执行上述两个任务之一的方法。
我完全意识到,这与 CDI 和依赖注入的本质是相通的,如果不是反对的话。我只是想知道
- 这远程可能吗?
- 如果是,完成工作的最简单/最简单/最快/最万无一失的方法是什么?