Java CDI:2个项目,@Inject->;(WELD-001408)错误
我尝试将bean注入portlet。两者都位于不同的项目中。 Iam使用JBoss 7.1.1和Liferay6.2 SDK。这是我能想象到的最简单的情况,但我仍然得到这个错误。如果bean在同一场战争中被本地化,它就可以正常工作 错误:Java CDI:2个项目,@Inject->;(WELD-001408)错误,java,jboss,ejb,cdi,Java,Jboss,Ejb,Cdi,我尝试将bean注入portlet。两者都位于不同的项目中。 Iam使用JBoss 7.1.1和Liferay6.2 SDK。这是我能想象到的最简单的情况,但我仍然得到这个错误。如果bean在同一场战争中被本地化,它就可以正常工作 错误: > package com.test; import javax.ejb.LocalBean; import javax.ejb.Stateless; @Stateless @LocalBean public class Calc { pu
> package com.test;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class Calc {
public Calc() {
}
public int add(int a, int b) {
return a+b;
}
public int mult(int a, int b) {
return a*b;
}
}
>
package de.pao.bean;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.inject.Inject;
import org.jboss.logging.Logger;
import com.test.Calc;
@ManagedBean
@RequestScoped
public class DWPortletController implements Serializable {
private static final Logger log = Logger.getLogger("1234");
private static final long serialVersionUID = 2056281697556539581L;
@Inject private Session0Bean sb0;
@Inject private Calc calc;
public DWPortletController() {
// TODO Auto-generated constructor stub
}
public void buttonAction() {
log.info("Hallo");
sb0.sayHello();
log.info("2+2 = " + calc.add(2, 2));
}
}
<?xml version="1.0"?>
<ivy-module
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
>
<info module="portlet_primefaces_tmpl" organisation="com.liferay" />
<dependencies defaultconf="default">
<dependency name="jboss-el" org="org.jboss.el" rev="2.0.1.GA" />
<dependency name="jsf-api" org="com.sun.faces" rev="2.1.27" />
<dependency name="jsf-impl" org="com.sun.faces" rev="2.1.27" />
<dependency name="liferay-faces-bridge-api" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-bridge-impl" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-portal" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-util" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="cdi-portlet-bridge-shared" org="com.liferay.cdi" rev="6.2.0.2" />
<dependency name="primefaces" org="org.primefaces" rev="4.0" />
<dependency org="org.jboss.weld" name="weld-api" rev="1.1.Final" />
<dependency org="org.jboss.weld" name="weld-core" rev="1.1.16.Final" />
<dependency org="org.jboss.weld" name="weld-spi" rev="1.1.Final" />
</dependencies>
</ivy-module>
10:31:30704错误[org.jboss.msc.service.fail](msc服务线程1-8)MSC00001:无法启动服务jboss.deployment.unit。“DWPortlet1 portlet.war”。WeldService:org.jboss.msc.service.StartException in service jboss.deployment.unit。“DWPortlet1 portlet.war”.WeldService:org.jboss.weld.exceptions.DeploymentException:weld-001408在注入点[[field]@Inject private de.pao.bean.DWPortletController.Calc]处具有限定符[@Default]的类型[Calc]的未满足依赖项
位于org.jboss.as.weld.services.WeldService.start(WeldService.java:83)
在org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
在org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)[rt.jar:1.7.0_51]
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)[rt.jar:1.7.0_51]
在java.lang.Thread.run(未知源)[rt.jar:1.7.0_51]
原因:org.jboss.weld.exceptions.DeploymentException:weld-001408在注入点[[field]@Inject private de.pao.bean.DWPortletController.Calc]处具有限定符[@Default]的类型[Calc]的未满足依赖项
位于org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:275)
在org.jboss.weld.bootstrap.Validator.validateInjectionPoint上(Validator.java:244)
位于org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:107)
位于org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:127)
位于org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:346)
位于org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:331)
位于org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:366)
在org.jboss.as.weld.WeldContainer.start(WeldContainer.java:83)上
位于org.jboss.as.weld.services.WeldService.start(WeldService.java:76)
... 还有5个
Bean:
> package com.test;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class Calc {
public Calc() {
}
public int add(int a, int b) {
return a+b;
}
public int mult(int a, int b) {
return a*b;
}
}
>
package de.pao.bean;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.inject.Inject;
import org.jboss.logging.Logger;
import com.test.Calc;
@ManagedBean
@RequestScoped
public class DWPortletController implements Serializable {
private static final Logger log = Logger.getLogger("1234");
private static final long serialVersionUID = 2056281697556539581L;
@Inject private Session0Bean sb0;
@Inject private Calc calc;
public DWPortletController() {
// TODO Auto-generated constructor stub
}
public void buttonAction() {
log.info("Hallo");
sb0.sayHello();
log.info("2+2 = " + calc.add(2, 2));
}
}
<?xml version="1.0"?>
<ivy-module
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
>
<info module="portlet_primefaces_tmpl" organisation="com.liferay" />
<dependencies defaultconf="default">
<dependency name="jboss-el" org="org.jboss.el" rev="2.0.1.GA" />
<dependency name="jsf-api" org="com.sun.faces" rev="2.1.27" />
<dependency name="jsf-impl" org="com.sun.faces" rev="2.1.27" />
<dependency name="liferay-faces-bridge-api" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-bridge-impl" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-portal" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-util" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="cdi-portlet-bridge-shared" org="com.liferay.cdi" rev="6.2.0.2" />
<dependency name="primefaces" org="org.primefaces" rev="4.0" />
<dependency org="org.jboss.weld" name="weld-api" rev="1.1.Final" />
<dependency org="org.jboss.weld" name="weld-core" rev="1.1.16.Final" />
<dependency org="org.jboss.weld" name="weld-spi" rev="1.1.Final" />
</dependencies>
</ivy-module>
Portlet:
> package com.test;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class Calc {
public Calc() {
}
public int add(int a, int b) {
return a+b;
}
public int mult(int a, int b) {
return a*b;
}
}
>
package de.pao.bean;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.inject.Inject;
import org.jboss.logging.Logger;
import com.test.Calc;
@ManagedBean
@RequestScoped
public class DWPortletController implements Serializable {
private static final Logger log = Logger.getLogger("1234");
private static final long serialVersionUID = 2056281697556539581L;
@Inject private Session0Bean sb0;
@Inject private Calc calc;
public DWPortletController() {
// TODO Auto-generated constructor stub
}
public void buttonAction() {
log.info("Hallo");
sb0.sayHello();
log.info("2+2 = " + calc.add(2, 2));
}
}
<?xml version="1.0"?>
<ivy-module
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
>
<info module="portlet_primefaces_tmpl" organisation="com.liferay" />
<dependencies defaultconf="default">
<dependency name="jboss-el" org="org.jboss.el" rev="2.0.1.GA" />
<dependency name="jsf-api" org="com.sun.faces" rev="2.1.27" />
<dependency name="jsf-impl" org="com.sun.faces" rev="2.1.27" />
<dependency name="liferay-faces-bridge-api" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-bridge-impl" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-portal" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-util" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="cdi-portlet-bridge-shared" org="com.liferay.cdi" rev="6.2.0.2" />
<dependency name="primefaces" org="org.primefaces" rev="4.0" />
<dependency org="org.jboss.weld" name="weld-api" rev="1.1.Final" />
<dependency org="org.jboss.weld" name="weld-core" rev="1.1.16.Final" />
<dependency org="org.jboss.weld" name="weld-spi" rev="1.1.Final" />
</dependencies>
</ivy-module>
jboss部署structure.xml:(在/portlet/docroot/WEB-INF下):
常春藤xml:
> package com.test;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class Calc {
public Calc() {
}
public int add(int a, int b) {
return a+b;
}
public int mult(int a, int b) {
return a*b;
}
}
>
package de.pao.bean;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.inject.Inject;
import org.jboss.logging.Logger;
import com.test.Calc;
@ManagedBean
@RequestScoped
public class DWPortletController implements Serializable {
private static final Logger log = Logger.getLogger("1234");
private static final long serialVersionUID = 2056281697556539581L;
@Inject private Session0Bean sb0;
@Inject private Calc calc;
public DWPortletController() {
// TODO Auto-generated constructor stub
}
public void buttonAction() {
log.info("Hallo");
sb0.sayHello();
log.info("2+2 = " + calc.add(2, 2));
}
}
<?xml version="1.0"?>
<ivy-module
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
>
<info module="portlet_primefaces_tmpl" organisation="com.liferay" />
<dependencies defaultconf="default">
<dependency name="jboss-el" org="org.jboss.el" rev="2.0.1.GA" />
<dependency name="jsf-api" org="com.sun.faces" rev="2.1.27" />
<dependency name="jsf-impl" org="com.sun.faces" rev="2.1.27" />
<dependency name="liferay-faces-bridge-api" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-bridge-impl" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-portal" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="liferay-faces-util" org="com.liferay.faces" rev="3.2.4-ga5" />
<dependency name="cdi-portlet-bridge-shared" org="com.liferay.cdi" rev="6.2.0.2" />
<dependency name="primefaces" org="org.primefaces" rev="4.0" />
<dependency org="org.jboss.weld" name="weld-api" rev="1.1.Final" />
<dependency org="org.jboss.weld" name="weld-core" rev="1.1.16.Final" />
<dependency org="org.jboss.weld" name="weld-spi" rev="1.1.Final" />
</dependencies>
</ivy-module>
我做错了什么