Tag: jboss weld

Maven Eclipse Debug“JDWP Transport dt_socket初始化失败,TRANSPORT_INIT(510)”

我正在尝试在Eclipse中调试Maven测试。 当我使用maven选项maven.surefire.debug启动测试时,我收到此错误: ERROR: transport error 202: bind failed: Address already in use FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690] /bin/sh: line 1: 27500 Abort trap 当我尝试在我的shell中启动调试时,它是一样的。 我试图添加maven选项forkMode = never,如果没有maven.surefire.debug选项,我的焊接工件会出现另一个错误: Error loading Weld bootstrap, check that Weld […]

如何通过BeanManager创建和销毁CDI(焊接)托管Bean?

我正在尝试使用BeanManager而不是Instance .select()。get()创建CDI托管bean的实例。 这被建议作为我已经使用ApplicationScoped bean和他们的家属的垃圾收集的问题的解决方法 – 请参阅CDI应用程序和依赖范围可以合谋影响垃圾收集? 为背景和这建议的解决方法。 如果在ApplicationScoped bean上使用Instance编程查找方法,Instance对象和从中获取的任何bean最终都依赖于ApplicationScoped bean,因此共享它的生命周期。 但是,如果使用BeanManager创建bean,则会在Bean实例本身上设置句柄,并且显然可以明确地销毁它,我理解这意味着它将被GCed。 我目前的方法是在BeanManagerUtil类中创建bean,并返回Bean,实例和CreationalContext的复合对象: public class BeanManagerUtil { @Inject private BeanManager beanManager; @SuppressWarnings(“unchecked”) public DestructibleBeanInstance getDestructibleBeanInstance(final Class type, final Annotation… qualifiers) { DestructibleBeanInstance result = null; Bean bean = (Bean) beanManager.resolve(beanManager.getBeans(type, qualifiers)); if (bean != null) { CreationalContext creationalContext = beanManager.createCreationalContext(bean); if (creationalContext != null) { T […]

使用CDI @Inject注入Spring bean

我正在尝试将Spring上下文中定义的bean注入CDI托管组件,但我没有成功。 不注入bean,而是每次执行注入时都会创建一个新实例。 我的环境是使用JBoss Weld的Tomcat 7。 Spring ApplicationContext是直截了当的: … … CDI托管bean看起来像这样: @javax.inject.Named(“testA”) public class TestA { @javax.inject.Inject private Test myTest = null; … public Test getTest() { return this.myTest; } } 这是我的faces-config.xml org.springframework.web.jsf.el.SpringBeanFacesELResolver 但是,当我从JSF页面访问test属性时,每次访问时都会创建一个新的Test实例。 这是一个简单的例子: … 1: 2: … 我得到以下输出: 1: test.Test@44d79c75 2: test.Test@53f336eb 刷新后: 1: test.Test@44d79c75 2: test.Test@89f2ac63 我可以看到第一个输出是正确的。 无论我多久刷新一次页面, testFromSpring返回Spring上下文中定义的bean的值。 但是第二个输出清楚地表明,每次调用test组件上的getTest方法时,都会创建并注入一个新的Test实例,而不是像我期望的那样使用Spring上下文中的实例。 那么,这种行为的原因是什么? 如何将Spring上下文中的bean注入CDI托管bean? 我也尝试使用在Spring上下文中定义的名称的限定符,但现在抛出一个exception,表明找不到bean: […]

如何以静态方法以编程方式将Java CDI托管bean注入局部变量

如何以静态方法以编程方式将Java CDI 1.1+托管bean注入局部变量?