java ee - How to create JBoss EAR project with JPA, EJB and CDI elements -
i'm trying create ear project ejb, jpa , web elements. have connection database , think works fine. not able @inject beans ejb project.
here's configuration: in ear project earcontent/meta-inf/application.xml:
<?xml version="1.0" encoding="utf-8"?> <application xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd" id="application_id" version="7"> <display-name>fantasy</display-name> <module> <ejb>fantasyejb.jar</ejb> </module> <module> <web> <web-uri>fantasyweb.war</web-uri> <context-root>fantasyweb</context-root> </web> </module> </application>
in ear project earcontent/web-inf/jboss-deployment-structure.xml:
<?xml version="1.0"?> <jboss-deployment-structure> <deployment> <exclusions> <module name="javax.faces.api" /> <module name="com.sun.jsf-impl" /> </exclusions> <dependencies> <module name="org.apache.log4j" /> <module name="org.dom4j" /> <module name="org.apache.commons.logging" /> <module name="org.apache.commons.collections" /> <module name="javax.faces.api" /> <module name="com.sun.jsf-impl" /> </dependencies> </deployment> </jboss-deployment-structure>
in jpa project file persistence.xml:
<?xml version="1.0" encoding="utf-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="jpadb"> <jta-data-source>java:jboss/datasources/aghds</jta-data-source> <properties> <property name="showsql" value="true"/> <property name="hibernate.dialect" value="org.hibernate.dialect.mysqldialect" /> <property name="hibernate.hbm2ddl.auto" value="create-drop" /> </properties> </persistence-unit> </persistence>
in ejb project ejbmodule/meta-inf/ejb-jar.xml
<?xml version="1.0" encoding="utf-8"?> <ejb-jar version="3.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"> <display-name>fantasyejb</display-name> </ejb-jar>
in web project webcontent/web-inf/beans.xml:
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" bean-discovery-mode="all"> </beans>
now have bean in ejb project testbean.java:
package com.fantasy.beans; import java.io.serializable; import java.util.list; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; import javax.persistence.query; import com.fantasy.db.model.elfs; @stateless public class testbean implements serializable{ private static final long serialversionuid = 1l; @persistencecontext(unitname = "jpadb") private entitymanager em; public list<elfs> query() { query query = em.createquery("from com.fantasy.db.model.elfs"); @suppresswarnings("unchecked") list <elfs> list = query.getresultlist(); return list; } }
and in web project have class producer.java use in jsf page:
package com.fantasy.web; import java.io.serializable; import java.util.list; import javax.annotation.postconstruct; import javax.enterprise.context.requestscoped; import javax.enterprise.inject.produces; import javax.inject.inject; import javax.inject.named; import com.fantasy.beans.testbean; import com.fantasy.db.model.elfs; @named(value = "blogentrybean") @requestscoped public class producer implements serializable { private static final long serialversionuid = 1l; @inject testbean bean; private list<elfs> beans; @produces @named public list<elfs> getbeans() { return beans; } public void setbeans(list<elfs> beans) { this.beans = beans; } @postconstruct public void retrieveallseatsorderedbyname() { beans = bean.query(); } }
the problem in annoation @inject. doesn't show errors without it- need synchronize ejb. think might missing dependencies don't know how fix it.
log:
01:14:02,294 info [org.hibernate.tool.hbm2ddl.schemaexport] (serverservice thread pool -- 50) hhh000227: running hbm2ddl schema export 01:14:02,390 info [org.hibernate.tool.hbm2ddl.schemaexport] (serverservice thread pool -- 50) hhh000230: schema export complete 01:14:03,033 severe [javax.enterprise.resource.webcontainer.jsf.flow] (msc service thread 1-3) unable obtain cdi 1.1 utilities mojarra 01:14:03,044 severe [javax.enterprise.resource.webcontainer.jsf.application.view] (msc service thread 1-3) unable obtain cdi 1.1 utilities moja rra 01:14:03,173 error [org.jboss.msc.service.fail] (msc service thread 1-3) msc000001: failed start service jboss.deployment.unit."fantasy.ear".weldst artservice: org.jboss.msc.service.startexception in service jboss.deployment.unit."fantasy.ear".weldstartservice: failed start service @ org.jboss.msc.service.servicecontrollerimpl$starttask.run(servicecontrollerimpl.java:1904) [jboss-msc-1.2.2.final.jar:1.2.2.final] @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) [rt.jar:1.7.0_67] @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) [rt.jar:1.7.0_67] @ java.lang.thread.run(thread.java:745) [rt.jar:1.7.0_67] caused by: org.jboss.weld.exceptions.deploymentexception: weld-001408: unsatisfied dependencies type testbean qualifiers @default @ injection point [backedannotatedfield] @inject com.fantasy.web.producer.bean @ com.fantasy.web.producer.bean(producer.java:0) @ org.jboss.weld.bootstrap.validator.validateinjectionpointfordeploymentproblems(validator.java:372) @ org.jboss.weld.bootstrap.validator.validateinjectionpoint(validator.java:293) @ org.jboss.weld.bootstrap.validator.validategeneralbean(validator.java:134) @ org.jboss.weld.bootstrap.validator.validateribean(validator.java:167) @ org.jboss.weld.bootstrap.validator.validatebean(validator.java:531) @ org.jboss.weld.bootstrap.concurrentvalidator$1.dowork(concurrentvalidator.java:68) @ org.jboss.weld.bootstrap.concurrentvalidator$1.dowork(concurrentvalidator.java:66) @ org.jboss.weld.executor.iterativeworkertaskfactory$1.call(iterativeworkertaskfactory.java:60) @ org.jboss.weld.executor.iterativeworkertaskfactory$1.call(iterativeworkertaskfactory.java:53) @ java.util.concurrent.futuretask.run(futuretask.java:262) [rt.jar:1.7.0_67] ... 3 more 01:14:03,183 error [org.jboss.as.controller.management-operation] (controller boot thread) jbas014613: operation ("deploy") failed - address: ([("depl oyment" => "fantasy.ear")]) - failure description: {"jbas014671: failed services" => {"jboss.deployment.unit.\"fantasy.ear\".weldstartservice" => "org .jboss.msc.service.startexception in service jboss.deployment.unit.\"fantasy.ear\".weldstartservice: failed start service caused by: org.jboss.weld.exceptions.deploymentexception: weld-001408: unsatisfied dependencies type testbean qualifiers @default @ injection point [backedannotatedfield] @inject com.fantasy.web.producer.bean @ com.fantasy.web.producer.bean(producer.java:0) "}} 01:14:03,253 info [org.jboss.as.server] (serverservice thread pool -- 28) jbas018559: deployed "fantasy.ear" (runtime-name : "fantasy.ear") 01:14:03,257 info [org.jboss.as.controller] (controller boot thread) jbas014774: service status report jbas014777: services failed start: service jboss.deployment.unit."fantasy.ear".weldstartservice: org.jboss.msc.service.startexception in service jboss.deployment.unit."fantasy.ear".weldstartservice: failed start service 01:14:03,355 info [org.jboss.as] (controller boot thread) jbas015961: http management interface listening on http://127.0.0.1:9990/management 01:14:03,356 info [org.jboss.as] (controller boot thread) jbas015951: admin console listening on http://127.0.0.1:9990 01:14:03,356 error [org.jboss.as] (controller boot thread) jbas015875: wildfly 8.2.0.final "tweek" started (with errors) in 7986ms - started 385 of 47 3 services (22 services failed or missing dependencies, 108 services lazy, passive or on-demand) 01:14:03,500 info [org.jboss.as.jpa] (serverservice thread pool -- 51) jbas011410: stopping persistence unit (phase 2 of 2) service 'fantasy.ear#jpad b' 01:14:03,501 info [org.hibernate.tool.hbm2ddl.schemaexport] (serverservice thread pool -- 51) hhh000227: running hbm2ddl schema export 01:14:03,544 info [org.hibernate.tool.hbm2ddl.schemaexport] (serverservice thread pool -- 51) hhh000230: schema export complete 01:14:03,546 info [org.jboss.weld.deployer] (msc service thread 1-7) jbas016009: stopping weld service deployment fantasy.ear 01:14:03,580 info [org.jboss.as.jpa] (serverservice thread pool -- 51) jbas011410: stopping persistence unit (phase 1 of 2) service 'fantasy.ear#jpad b' 01:14:03,587 info [org.jboss.as.server.deployment] (msc service thread 1-3) jbas015974: stopped subdeployment (runtime-name: fantasyejb.jar) in 99ms 01:14:03,587 info [org.jboss.as.server.deployment] (msc service thread 1-4) jbas015974: stopped subdeployment (runtime-name: fantasyweb.war) in 99ms 01:14:03,589 info [org.jboss.as.server.deployment] (msc service thread 1-3) jbas015877: stopped deployment fantasy.ear (runtime-name: fantasy.ear) in 101ms 01:14:03,699 info [org.jboss.as.server] (deploymentscanner-threads - 2) jbas018558: undeployed "fantasy.ear" (runtime-name: "fantasy.ear") 01:14:03,704 info [org.jboss.as.controller] (deploymentscanner-threads - 2) jbas014774: service status report jbas014775: new missing/unsatisfied dependencies: service jboss.deployment.subunit."fantasy.ear"."fantasyejb.jar".deploymentcompleteservice (missing) dependents: [service jboss.deployment.unit." fantasy.ear".deploymentcompleteservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."com.sun.faces.config.configurelistener".create (missing) dependents: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."com.sun.faces.config.configurelistener".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."com.sun.faces.config.configurelistener".start (missing) dependents: [ service jboss.undertow.deployment.default-server.default-host./fantasyweb.undertowdeploymentinfoservice, service jboss.undertow.deployment.default-ser ver.default-host./fantasyweb, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".deploymentcompleteservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."com.sun.faces.config.configurelistener".weldinstantiator (missing) de pendents: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."com.sun.faces.config.configurelistener".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facesservlet".create (missing) dependents: [servic e jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facesservlet".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facesservlet".start (missing) dependents: [service jboss.undertow.deployment.default-server.default-host./fantasyweb.undertowdeploymentinfoservice, service jboss.undertow.deployment.default-server.def ault-host./fantasyweb, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".deploymentcompleteservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facesservlet".weldinstantiator (missing) dependent s: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facesservlet".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facettag".create (missing) dependents: [service jb oss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facettag".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facettag".start (missing) dependents: [service jbo ss.undertow.deployment.default-server.default-host./fantasyweb.undertowdeploymentinfoservice, service jboss.undertow.deployment.default-server.default -host./fantasyweb, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".deploymentcompleteservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facettag".weldinstantiator (missing) dependents: [ service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.faces.webapp.facettag".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.permittedtaglibstlv".create (missing) depe ndents: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.permittedtaglibstlv".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.permittedtaglibstlv".start (missing) depen dents: [service jboss.undertow.deployment.default-server.default-host./fantasyweb.undertowdeploymentinfoservice, service jboss.undertow.deployment.def ault-server.default-host./fantasyweb, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".deploymentcompleteservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.permittedtaglibstlv".weldinstantiator (mis sing) dependents: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.permittedtaglibstlv".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.scriptfreetlv".create (missing) dependents : [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.scriptfreetlv".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.scriptfreetlv".start (missing) dependents: [service jboss.undertow.deployment.default-server.default-host./fantasyweb.undertowdeploymentinfoservice, service jboss.undertow.deployment.default-s erver.default-host./fantasyweb, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".deploymentcompleteservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.scriptfreetlv".weldinstantiator (missing) dependents: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."javax.servlet.jsp.jstl.tlv.scriptfreetlv".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldinitiallistener".create (missing) dependen ts: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldinitiallistener".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldinitiallistener".start (missing) dependent s: [service jboss.undertow.deployment.default-server.default-host./fantasyweb.undertowdeploymentinfoservice, service jboss.undertow.deployment.default -server.default-host./fantasyweb, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".deploymentcompleteservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldinitiallistener".weldinstantiator (missing ) dependents: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldinitiallistener".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldterminallistener".create (missing) depende nts: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldterminallistener".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldterminallistener".start (missing) dependen ts: [service jboss.undertow.deployment.default-server.default-host./fantasyweb.undertowdeploymentinfoservice, service jboss.undertow.deployment.defaul t-server.default-host./fantasyweb, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".deploymentcompleteservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldterminallistener".weldinstantiator (missin g) dependents: [service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldterminallistener".start] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".deploymentcompleteservice (missing) dependents: [service jboss.deployment.unit." fantasy.ear".deploymentcompleteservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".ee.componentregistry (missing) dependents: [service jboss.undertow.deployment.de fault-server.default-host./fantasyweb.undertowdeploymentinfoservice] service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".jndidependencyservice (missing) dependents: [service jboss.deployment.subunit."f antasy.ear"."fantasyweb.war".component."javax.faces.webapp.facesservlet".start, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".compon ent."javax.servlet.jsp.jstl.tlv.permittedtaglibstlv".start, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld. servlet.weldinitiallistener".start, service jboss.deployment.subunit."fantasy.ear"."fantasyweb.war".component."org.jboss.weld.servlet.weldterminallist ener".start, jbas014799: ... , 4 more ] service jboss.deployment.unit."fantasy.ear".weldbootstrapservice (missing) dependents: [service jboss.deployment.unit."fantasy.ear".cdivalidator factoryservice] service jboss.deployment.unit."fantasy.ear".weldstartservice (missing) dependents: [service jboss.deployment.unit."fantasy.ear".cdivalidatorfact oryservice] service jboss.persistenceunit."fantasy.ear#jpadb" (missing) dependents: [service jboss.deployment.unit."fantasy.ear".deploymentcompleteservice] service jboss.undertow.deployment.default-server.default-host./fantasyweb (missing) dependents: [service jboss.deployment.subunit."fantasy.ear". "fantasyweb.war".deploymentcompleteservice] service jboss.undertow.deployment.default-server.default-host./fantasyweb.undertowdeploymentinfoservice (missing) dependents: [service jboss.und ertow.deployment.default-server.default-host./fantasyweb] jbas014777: services failed start: service jboss.deployment.unit."fantasy.ear".weldstartservice 01:14:08,291 info [org.jboss.as.server.deployment.scanner] (deploymentscanner-threads - 2) jbas015003: found fantasy.ear in deployment directory. trigger deployment create file called fantasy.ear.dodeploy
in java ee 6 (on jboss 7.2), worked around problem creating producers ejbs in resources class follows:
public class resources { @produces @ejb private testbean testbean; }
this allow @inject
them further down line. there might more elegant solutions available in java ee 7, however.
Comments
Post a Comment