JBoss Community

Access to EJB ( JBoss AS 7 )

created by chris81t in Beginner's Corner - View the full discussion

Hi @all,

 

I hope you can help me. I'm actually new to JBoss AS.

 

For the first test I have written a simple HelloJBoss application:

 

- HelloJBossAS7 (eclipse ear project contains the two following projects)

- HelloJBossEJB

     contains:

 

ISimpleEJB.java

package de.example.ejb;
 
 
import javax.ejb.Local;
 
 
@Local
public interface ISimpleEJB {
          int add(int a, int b) throws Exception;
}
 

   

SimpleEJB.java

package de.example.ejb;
 
 
import javax.ejb.Stateless;
 
 
@Stateless
public class SimpleEJB implements ISimpleEJB {
 
 
          @Override
          public int add(int a, int b) throws Exception {
                    return a + b;
          }
 
 
}
 

 

- HelloJBossJSF (2.0)

     contains

 

Content.java

package de.example.beans;
 
 
import java.io.Serializable;
 
 
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
 
 
import de.example.ejb.ISimpleEJB;
 
 
@ManagedBean
@SessionScoped
public class Content implements Serializable {
 
 
          private static final long serialVersionUID = 5526381952953438091L;
 
 
          private String title = "Hello JBoss AS 7 :-)";
  
          @EJB(beanName = "SimpleEJB")
          private ISimpleEJB ejb;
  
          public String getTitle() {
                    return title;
          }
 
 
          public void setTitle(String title) {
                    this.title = title;
          }
  
          public int getVal() {
                    try {
                              return ejb.add(2, 4); 
                    }
                    catch (Exception e) {
                              return -1; 
                    }
          }
}
 

 

content.xhtml

 

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
          <f:view contentType="text/html"/>


          <h:head>
              <title>Hello JBoss AS 7</title>
          </h:head>
  
          <h:body> 
                     <h:outputText value="Title: #{content.title}"/>
                    <br/>
                    <br/>
                    <h:outputText value="Content: #{content.val}"/>
          </h:body>


</html>

 

web.xml

jboss-web.xml

faces-config.xml

 

 

If I delete the ejb-member "ejb" in the Content class, I can deploy the EAR to the jboss and the jsf app work's fine. But if I use the "ejb" member, I will get the following deployment error:

 

23:54:13,542 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC00001: Failed to start service jboss.deployment.subunit."HelloJBossAS7.ear"."HelloJBossJSF.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."HelloJBossAS7.ear"."HelloJBossJSF.war".INSTALL: Failed to process phase INSTALL of subdeployment "HelloJBossJSF.war" of deployment "HelloJBossAS7.ear"

          at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121)

          at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)

          at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)

          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]

          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]

          at java.lang.Thread.run(Thread.java:662) [:1.6.0_26]

Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: No component found for type 'de.example.ejb.ISimpleEJB' with name SimpleEJB

          at org.jboss.as.ejb3.deployment.processors.EjbInjectionSource.getResourceValue(EjbInjectionSource.java:68)

          at org.jboss.as.ee.component.ModuleJndiBindingProcessor.addJndiBinding(ModuleJndiBindingProcessor.java:187)

          at org.jboss.as.ee.component.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:154)

          at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:52)

          at org.jboss.as.ee.component.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:125)

          at org.jboss.as.ee.component.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:118)

          at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115)

          ... 5 more

 

 

23:54:13,748 INFO  [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployment of "HelloJBossAS7.ear" was rolled back with failure message {"Failed services" => {"jboss.deployment.subunit.\"HelloJBossAS7.ear\".\"HelloJBossJSF.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"HelloJBossAS7.ear\".\"HelloJBossJSF.war\".INSTALL: Failed to process phase INSTALL of subdeployment \"HelloJBossJSF.war\" of deployment \"HelloJBossAS7.ear\""},"Services with missing/unavailable dependencies" => ["jboss.naming.context.java.comp.HelloJBossAS7.HelloJBossJSF.HelloJBossJSF.ValidatorFactory missing [ jboss.naming.context.java.module.HelloJBossAS7.HelloJBossJSF ]","jboss.naming.context.java.comp.HelloJBossAS7.HelloJBossJSF.HelloJBossJSF.Validator missing [ jboss.naming.context.java.module.HelloJBossAS7.HelloJBossJSF ]"]}

23:54:13,755 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-12) Stopped deployment HelloJBossJSF.war in 7ms

23:54:13,757 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-15) Stopped deployment HelloJBossAS7.ear in 9ms

23:54:13,759 ERROR [org.jboss.as.deployment] (DeploymentScanner-threads - 1) {"Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"Failed services" => {"jboss.deployment.subunit.\"HelloJBossAS7.ear\".\"HelloJBossJSF.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"HelloJBossAS7.ear\".\"HelloJBossJSF.war\".INSTALL: Failed to process phase INSTALL of subdeployment \"HelloJBossJSF.war\" of deployment \"HelloJBossAS7.ear\""},"Services with missing/unavailable dependencies" => ["jboss.naming.context.java.comp.HelloJBossAS7.HelloJBossJSF.HelloJBossJSF.ValidatorFactory missing [ jboss.naming.context.java.module.HelloJBossAS7.HelloJBossJSF ]","jboss.naming.context.java.comp.HelloJBossAS7.HelloJBossJSF.HelloJBossJSF.Validator missing [ jboss.naming.context.java.module.HelloJBossAS7.HelloJBossJSF ]"]}}}

 

 

 

Is using the @EJB annotation the wrong way? Should I user instead a ServiceLocator?! I hope, someone can help me and tell me the correct way to use the SimpleEJB.

 

Who want's to see the whole project's, have a look the the attachment.

 

Thank you for support! :)

Reply to this message by going to Community

Start a new discussion in Beginner's Corner at Community