JSF 2.0 ejb dependency injection

It seams that @EJB annotation does not work everywhere... at least in my case.
Use case:EAR app
EJB:based on JavaDB APP schema (jdbc/sample in GFv3)(entities, JPA controllers as session beans)
WAR:JSF 2.0 app using EJB
For instance in a converter:
@FacesConverter(forClass=ro.x64.entity.DiscountCode.class)
public class DiscountCodeConverter implements Converter {
    @EJB
    DiscountCodeFacade discountCodeFacade;
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value == null || value.length() == 0) {
            return null;
        Character id = new Character(value.charAt(0));
        return discountCodeFacade.find(id);
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if (value == null) {
            return null;
        if (value instanceof DiscountCode) {
            DiscountCode o = (DiscountCode) value;
            return o.getDiscountCode() == null ? "" : o.getDiscountCode().toString();
        } else {
            throw new IllegalArgumentException("object " + value + " is of type " + value.getClass().getName() + "; expected type: jpa.entities.DiscountCode");
} discountCodeFacade is resolved to null.
...but same @EJB works in a managed bean.
So is my code wrong,do I use @EJB improperly or is this a bug?
Florin POP
Thank you for your replies

I even tried to decorate as a CDI Managed Bean my @FacesConverter.
@Named
@RequestScoped
@FacesConverter(forClass=MyClass.class)
public class MyConverter implements ConverterBut didn't work either. When my application is deployed I can see that my class is managed but injection is not working.
INFO: Adapting InjectionTarget for org.test.MyConverter in the scope interface javax.enterprise.context.RequestScoped
A workaround is making a context lookup in your converter constructor:
MyEJB bean;
public MyConverter() {
            try {
                bean = (MyEJB) InitialContext.doLookup("java:global/MyApp/MyEJB");
            } catch (NamingException ex) {
                Logger.getLogger("Converter").log(Level.SEVERE, null, ex);
    }Hope it helps

Similar Messages

  • ADFc 11g: EJB Dependency injection

    Hello everyone,
    I'm using a managed bean which references a stateless session EJB 3.0:
    public class MyManagedBean {
      @EJB
      private SessionEJB ejb;
    }If the bean is managed by JSF (ie. is registered in faces-config) then the EJB is injected correctly, but if the EJB is managed by ADF (ie. is registered in adfc-config) then there is no dependency injection. Does anybody know why this is so, and if there is a clean solution to the problem?
    Searching the forum, Duncan Mills recommends a bean managed with faces-config in which the EJBs are injected, and then use managed properties to inject those EJBs in the ADF-managed beans.
    Re: Accessing session beans from a managed bean
    Is there a better/simpler solution?
    Thanks!
    Juan Manuel

    Thank you.
    The link helped.
    The one thing i did was created a remote interface for the ejb, which showed up in jndi and then used spring DI to inject a reference to the EJB from jndi.
    Will using a remote interface (instead of a local interface) cause performance issues?

  • EJB 3.0 Dependency Injection in JSF ?

    Hi,
    I have a question about ejb 3.0 dependency injection in a JSF WebApp:
    I Build successfully a Web Module (version 2.5) an EJB Module (version 3.0) and an EAR Module (Version 5.0). The EAR App can be deployed without errors on a Bea WebLogic Server 10.1. All modules are successfully deployed.
    Inside the Web Module there is a Servlet which uses dependency injection to access the session EJB form the EJB Module. This works perfect.
    Next I try to use the same EJB with dependency injection from the JSF Page via a backing bean. But when I try to access my JSP Page I got a Nullpointer Exception.
    It seems that the Dependency Injection in the JSP App did not work?
    Can anybody give me a hint what could be wrong?
    Thanks
    Ralph

    There is currently no possiblity in Weblogic 10 server web layer to use Dependency Injection on any other component than the ones defined in web.xml s.a.:
    - servlets
    - listeners
    - filters
    See here:
    http://e-docs.bea.com/wls/docs100/webapp/annotateservlet.html
    A simple POJO class part of the web application (such as a Backing Bean in JSF or an Action in Struts for example) is not benefiting from DI.
    Doesn't this make Weblogic 10 a NON JEE 5 compliant server?
    Why was this restriction imposed?
    And how is one supposed to use DI with a simple POJO class? Why this huge inconvenience?

  • EJB 3.0 Dependency Injection and reentrant Calls on SFSB

    Hi there
    I have a SFSB (Bean A) that injects another SFSB (Bean B) with the @EJB annotation. Now Bean A does reentrant-calls on Bean B, which is ok, because it just asks for the current state.
    This results in a "javax.ejb.EJBTransactionRolledbackException: Illegal attempt to make a reentrant call to a stateful session bean from home: .....; nested exception is: javax.ejb.ConcurrentAccessException: Illegal attempt to make a reentrant call to a stateful session bean: ....."
    Now I added a weblogic-ejb-jar.xml with the section:
    <stateful-session-descriptor>
      <allow-concurrent-calls>true</allow-concurrent-calls>
    </stateful-session-descriptor>to enable reentrant calls on my SFSB. Unfortunatly this leads to problems with the DI, it simply doesnt work anymore!!! The message now is " java.lang.IllegalStateException: Cannot find object BeanBInterface with java:comp/env/ejb/BeanBInterface". Obviously the DI didn't work, the local variable isn't filled anmyore.
    Is this a bug of WLS 10.0 MP1 or a feature? Should I open a bug report? Any tips a welcome!
    Stephan

    There is currently no possiblity in Weblogic 10 server web layer to use Dependency Injection on any other component than the ones defined in web.xml s.a.:
    - servlets
    - listeners
    - filters
    See here:
    http://e-docs.bea.com/wls/docs100/webapp/annotateservlet.html
    A simple POJO class part of the web application (such as a Backing Bean in JSF or an Action in Struts for example) is not benefiting from DI.
    Doesn't this make Weblogic 10 a NON JEE 5 compliant server?
    Why was this restriction imposed?
    And how is one supposed to use DI with a simple POJO class? Why this huge inconvenience?

  • EJB 3.0 Why Dependency Injection doesn't work?

    Hello Every body,
    i have a serious problem with dependency injection with EJB 3.0. I have tried so many time to get the simple sun delivered samples ejb-Applications working in NetBeans IDE, but they don't. After importing in building the projects in NetBeans, i get a NullPointerException while trying to run them. Is there any body who have experience with this? What am i making wrong?
    I searched for an answer since several days in google without any success. I have not found a single satisfactory explanation. I can't explain why even the examples in the java ee tutorials don't work.
    Please, can somebody help? I would very greatful.
    Cheers
    flips
    Here is an example of application (that don't work because the injection failed):
    * This is the business interface for Confirmer enterprise bean.
    @Remote
    public interface Confirmer {
    void sendNotice(String recipient);
    @Stateless
    public class ConfirmerBean implements Confirmer {
    private static final String mailer = "JavaMailer";
    private static Logger logger = Logger.getLogger(
    "confirmer.ejb.ConfirmerBean");
    @Resource(name = "mail/myMailSession")
    private Session session;
    /** Creates a new instance of ConfirmerBean */
    public ConfirmerBean() {
    public void sendNotice(String recipient) {
    try {
    Message message = new MimeMessage(session);
    message.setFrom();
    message.setRecipients(
    Message.RecipientType.TO,
    InternetAddress.parse(recipient, false));
    message.setSubject("Test Message from ConfirmerBean");
    DateFormat dateFormatter = DateFormat.getDateTimeInstance(
    DateFormat.LONG,
    DateFormat.SHORT);
    Date timeStamp = new Date();
    String messageText = "Thank you for your order." + '\n'
    + "We received your order on "
    + dateFormatter.format(timeStamp) + ".";
    message.setText(messageText);
    message.setHeader("X-Mailer", mailer);
    message.setSentDate(timeStamp);
    // Send message
    Transport.send(message);
    logger.info("Mail sent to " + recipient + ".");
    } catch (MessagingException ex) {
    ex.printStackTrace();
    logger.info("Error in ConfirmerBean for " + recipient);
    * @author ie139813
    public class ConfirmerClient {
    @EJB
    private static Confirmer confirmer;
    /** Creates a new instance of ConfirmerClient */
    public ConfirmerClient() {
    * @param args the command line arguments
    public static void main(String[] args) {
    String recipient = null;
    if (args.length == 1) {
    recipient = args[0];
    } else {
    recipient = "[email protected]";
    try {
    confirmer.sendNotice(recipient);
    System.out.println("Message sent to " + recipient + ".");
    System.exit(0);
    } catch (Exception ex) {
    ex.printStackTrace();
    }

    Try rebooting your computer. I had something similar. I rebooted my computer and it finished the update. Good luck!

  • Dependency Injection Problem in EJB 3.0

    Hello.
    I've been trying to get an example of java dependency injection working in JBoss 4.0.5.GA. I've installed it with EJB 3.0 support.
    The problem is that if I try to use the injected resource, I get a null pointer exception.
    The example I'm trying is a very short and simple one. Shouldn't be hard to figure out what is going wrong. Here it goes:
    [root]\src\hello\MessageServlet.java:
    package hello;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.List;
    import java.util.ListIterator;
    import javax.naming.InitialContext;
    import javax.annotation.*;
    public class MessageServlet extends HttpServlet {
         @Resource (mappedName="java:/DefaultDS")
         javax.sql.DataSource ejb30DB;
         public void init () throws ServletException {
         public void service(HttpServletRequest request, HttpServletResponse response)
                   throws IOException, ServletException {
              boolean injectedLookingGood = false;
              boolean notInjectedLookingGood = false;
              try {
                   java.sql.Connection conn = ejb30DB.getConnection();
                   conn.close();
                   injectedLookingGood = true;
              } catch(Exception e) {
                   e.printStackTrace();
              try {
                   InitialContext ic = new InitialContext();
                   javax.sql.DataSource ds = (javax.sql.DataSource)ic.lookup("java:/DefaultDS");
                   java.sql.Connection conn = ds.getConnection();
                   conn.close();
                   notInjectedLookingGood = true;
              } catch(Exception e) {
                   e.printStackTrace();
              response.setContentType("text/html");
              ServletOutputStream out = response.getOutputStream();
              out.println("<html>");
              out.println("<head><title>Hello World</title></head>");
              out.println("<body>");
              out.println("<h1>Hello World</h1>");
              out.println("<form action=\"HelloWorld\" method=\"get\">");
              out.print("Injected DataSource is looking ");
              if(injectedLookingGood) {
                   out.println("good <br>");
              else {
                   out.println("bad <br>");
              out.print("Not-Injected DataSource is looking ");
              if(notInjectedLookingGood) {
                   out.println("good <br/>");
              else {
                   out.println("bad <br/>");
              out.println("<input type=\"submit\" value=\"Test Some More\">");
              out.println("</form>");
              out.println("</body>");
              out.println("</html>");
    [root]\etc\META-INF\web.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app>
    <display-name>HelloWorldWAR</display-name>
    <servlet>
    <display-name>HelloWorld</display-name>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>hello.MessageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/servlet/HelloWorld</url-pattern>
    </servlet-mapping>
    </web-app>
    [root]\etc\META-INF\application.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <application xmlns="http://java.sun.com/xml/ns/j2ee" version="1.4"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com /xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">
    <display-name>HelloWorld</display-name>
    <description>Application description</description>
    <module>
    <web>
    <web-uri>web-ejb3.war</web-uri>
    <context-root>HelloWorld</context-root>
    </web>
    </module>
    </application>
    [root]\build.xml:
    <project name="HelloWorld" default="all" basedir=".">
    <!-- Name of project and version -->
    <property name="proj.name" value="HelloWorld"/>
    <property name="proj.version" value="1.0"/>
    <!-- Global properties for thid build -->
    <property name="src.dir" value="${basedir}/src"/>
    <property name="build.dir" value="${basedir}/bin"/>
    <property name="lib.dir" value="${basedir}/lib"/>
    <property name="build.classes.dir" value="${build.dir}/classes"/>
    <property name="build.jar.dir" value="${build.dir}/jar"/>
    <property name="src.etc.dir" value="${basedir}/etc"/>
    <property name="meta-inf.dir" value="${src.etc.dir}/META-INF"/>
    <!-- The build classpath -->
    <path id="build.classpath">
    <fileset dir="${lib.dir}">
    <include name="**/*.jar"/>
    <include name="**/*.zip"/>
    </fileset>
    </path>
    <!-- Useful shortcuts -->
    <patternset id="meta.files">
    <include name="**/*.xml" />
    <include name="**/*.properties"/>
    </patternset>
    <target name="prepare">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes.dir}"/>
    <mkdir dir="${build.jar.dir}"/>
    </target>
    <target name="compile" depends="prepare">
    <javac destdir="${build.classes.dir}"
    classpathref="build.classpath"
    debug="on">
    <src path="${src.dir}"/>
    </javac>
    </target>
    <target name="package-web" depends="compile">
    <war warfile="${build.dir}/jar/web-ejb3.war"
    webxml="${meta-inf.dir}/web.xml">
    <classes dir="${build.dir}/classes">
    <include name="**/*Servlet.class"/>
    </classes>
    </war>
    </target>
    <!-- Creates an ear file containing the web client war. -->
    <target name="assemble-app">
    <ear destfile="${build.jar.dir}/HelloWorld.ear" appxml="${meta-inf.dir}/application.xml">
    <fileset dir="${build.dir}/jar"
    includes="*.war"/>
    </ear>
    </target>
    <target name="clean">
    <delete dir="${build.dir}" />
    </target>
    <target name="all">
    <antcall target="clean" />
    <antcall target="package-web" />
    <antcall target="assemble-app" />
    </target>
    </project>
    Any help would be apreciated.
    Thanks in advance,
    Hugo Oliveira
    [email protected]

    Hello Ken.
    I gess dependency injection is unnavailable in servlets as of this moment. I conducted another test using a session bean that injects and tests the DataSource and a servlet calling the session bean via a refference obtained from InitialContext. It worked OK.
    Here's the code:
    [root]/src/hello/MessageHandler.java:
    package hello;
    public interface MessageHandler {
         public boolean testInjection();
    [root]/src/hello/MessageHandlerBean.java:
    package hello;
    import javax.ejb.Stateless;
    import javax.persistence.*;
    import java.util.List;
    import javax.annotation.*;
    @Stateless
    public class MessageHandlerBean implements MessageHandler {
         @Resource (mappedName="java:/DefaultDS")
         private javax.sql.DataSource ds;     
         public boolean testInjection() {
              try {
                   java.sql.Connection conn = ds.getConnection();
                   conn.close();
                   return true;
              } catch(Exception e) {
                   e.printStackTrace();
              return false;
    [root]/src/hello/MessageServlet.java:
    package hello;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.List;
    import java.util.ListIterator;
    import javax.naming.InitialContext;
    import javax.annotation.*;
    public class MessageServlet extends HttpServlet {
         public void init () throws ServletException {
         public void service(HttpServletRequest request, HttpServletResponse response)
                   throws IOException, ServletException {
              boolean injectedLookingGood = false;
              try {
                   InitialContext ic = new InitialContext();
                   MessageHandler mh = (MessageHandler)ic.lookup("HelloWorld/MessageHandlerBean/local");
                   injectedLookingGood = mh.testInjection();
              } catch(Exception e) {
                   e.printStackTrace();
              response.setContentType("text/html");
              ServletOutputStream out = response.getOutputStream();
              out.println("<html>");
              out.println("<head><title>Hello World</title></head>");
              out.println("<body>");
              out.println("<h1>Hello World</h1>");
              out.println("<form action=\"HelloWorld\" method=\"get\">");
              out.print("Injected DataSource is looking ");
              if(injectedLookingGood) {
                   out.println("good <br>");
              else {
                   out.println("bad <br>");
              out.println("<input type=\"submit\" value=\"Test Some More\">");
              out.println("</form>");
              out.println("</body>");
              out.println("</html>");
    [root]/etc/META-INF/application.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <application xmlns="http://java.sun.com/xml/ns/j2ee" version="1.4"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com /xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">
    <display-name>HelloWorld</display-name>
    <description>Application description</description>
    <module>
    <ejb>HelloWorld.ejb3</ejb>
    </module>
    <module>
    <web>
    <web-uri>web-ejb3.war</web-uri>
    <context-root>HelloWorld</context-root>
    </web>
    </module>
    </application>
    [root]/etc/META-INF/web.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>HelloWorldWAR</display-name>
    <servlet>
    <display-name>HelloWorld</display-name>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>hello.MessageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/servlet/HelloWorld</url-pattern>
    </servlet-mapping>
    </web-app>
    [root]/build.xml:
    <project name="HelloWorld" default="all" basedir=".">
    <!-- Name of project and version -->
    <property name="proj.name" value="HelloWorld"/>
    <property name="proj.version" value="1.0"/>
    <!-- Global properties for thid build -->
    <property name="src.dir" value="${basedir}/src"/>
    <property name="build.dir" value="${basedir}/bin"/>
    <property name="lib.dir" value="${basedir}/lib"/>
    <property name="build.classes.dir" value="${build.dir}/classes"/>
    <property name="build.jar.dir" value="${build.dir}/jar"/>
    <property name="src.etc.dir" value="${basedir}/etc"/>
    <property name="meta-inf.dir" value="${src.etc.dir}/META-INF"/>
    <!-- The build classpath -->
    <path id="build.classpath">
    <fileset dir="${lib.dir}">
    <include name="**/*.jar"/>
    <include name="**/*.zip"/>
    </fileset>
    </path>
    <!-- Useful shortcuts -->
    <patternset id="meta.files">
    <include name="**/*.xml" />
    <include name="**/*.properties"/>
    </patternset>
    <target name="prepare">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes.dir}"/>
    <mkdir dir="${build.jar.dir}"/>
    </target>
    <target name="compile" depends="prepare">
    <javac destdir="${build.classes.dir}"
    classpathref="build.classpath"
    debug="on">
    <src path="${src.dir}"/>
    </javac>
    </target>
    <target name="package-ejb" depends="compile">
    <jar jarfile="${build.jar.dir}/HelloWorld.ejb3">
    <fileset dir="${build.classes.dir}">
    <include name="**/*.class"/>
    </fileset>
    <!--
         <metainf dir="${meta-inf.dir}">
    <include name="persistence.xml"/>
    </metainf>
    -->
    </jar>
    </target>
    <target name="package-web" depends="compile">
    <war warfile="${build.dir}/jar/web-ejb3.war"
    webxml="${meta-inf.dir}/web.xml">
    <!--
    <fileset dir="web">
    <include name="**/*"/>
    </fileset>
    -->
    <!--
    <webinf dir="dd/web">
    <include name="jboss-web.xml"/>
    </webinf>
    -->
    <classes dir="${build.dir}/classes">
    <include name="**/*Servlet.class"/>
    </classes>
    </war>
    </target>
    <!-- Creates an ear file containing the ejb jars and the web client war. -->
    <target name="assemble-app">
    <ear destfile="${build.jar.dir}/HelloWorld.ear" appxml="${meta-inf.dir}/application.xml">
    <fileset dir="${build.dir}/jar"
    includes="*.ejb3,*.war"/>
    </ear>
    <!-- <delete file="${build.dir}/jar/web-ejb3.war"/>
    <delete dir="${build.dir}/classes"/> -->
    </target>
    <target name="clean">
    <delete dir="${build.dir}" />
    </target>
    <target name="all">
    <antcall target="clean" />
    <antcall target="package-ejb" />
    <antcall target="package-web" />
    <antcall target="assemble-app" />
    </target>
    </project>
    Thanks,
    Hugo Oliveira
    [email protected]

  • When to use @Resource and when to use @EJB for dependency injection

    Hi,
    When do you use
    @Resource and when do you use @EJB for dependency injection?
    Thanks

    Captain obvious: Use @EJB for injection of EJBs, and @Resource for everything else.
    There was a discussion about this very topic quite recently, perhaps you can find it through the search.

  • Dependency inject a EJB 2.x bean with EJB3

    Hi there
    I have an old EJB3 2.x bean deployed on my server, that is registered in JNDI with the name "abc/xyz/ItemLookup_v35".
    Now I wrote a EJB3 SFSB bean and I want to access the old bean using dependency injection. I tried it with the annotation
      @EJB(mappedName = "abc/xyz/ItemLookup_v35")
      private ItemLookupRemote itemRemote;but it wasn't working. How can I explicitly set the JNDI name of an old bean, that I want to lookup for?
    Any help is appreciated!
    Regards,
    Stephan
    Edited by: MasterRefactorer on Jun 27, 2008 7:31 AM

    You can use @EJB to access 2.x Remote views, but the field type has to be the Home interface.
    @EJB(mappedName = "abc/xyz/ItemLookup_v35")
    private ItemLookupHome itemHome;

  • EJB 3.0 client side dependency injection

    Hi,
    I develop an EJB 3.0 based enterprise application using Sun Java System Application Server. The application includes a Swing based client to be launched via Java WebStart. The client has to access some of the EJBs. Is it possible to use dependency injection on client side (see the @EJB annotation) and if yes how do I set the properties for this?
    The following snipped hopefully explains what I mean. The class FastEntry is a class of the Swing client. My question is how can I get the deviceSessionBean initialized?
    public class FastEntry extends javax.swing.JFrame { 
        @EJB
        private static DeviceSessionRemote deviceSessionBean;Kind regards,
    Matthias

    Hi,
    For callbacks and interceptors, you can look at this page : http://today.java.net/pub/a/today/2005/08/18/ejb3.html
    For sending messages, I'd recommend to use JMS (if in clientSide), or EJB3 Message beans if in server side.
    Hope that helps :)

  • JSF combined with EJB, how??

    Hi @ll,
    I have been trying for some days to combine my JSF pages with EJB Session Beans, but I haven't really found a working way to do it.
    First, I had my session bean directly as the backing bean for the JSF page, but I read somewhere that this isn't "allowed", so I created a helper bean as managed bean. This is now the backing bean for the jsf page and has as attribute the session bean.
    My helper bean:
    public class ManagedHelperBean {
    @EJB private JDDACReaderBeanRemote reader;
    public JDDACReaderBeanRemote getReader() {
         return reader;
    public void setReader(JDDACReaderBeanRemote reader) {
         this.reader = reader;
    }Part of my faces-config.xml
    <managed-bean>
    <managed-bean-name>helper</managed-bean-name>
    <managed-bean-class>com.company.ManagedHelperBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>Part of my jsp page:
    <h:outputText value="#{helper}"/>
    <h:outputText value="#{helper.reader}"/>Now, the first output in the jsp page works, the second one doesn't. Why can't the property reader be accessed?? What is the correct way to combine JSF with EJB?
    Kind regards,
    Wiebke

    Hello,
    I faced the same problem, but on a Weblogic 10 server.
    The problem with Weblogic 10 is, even if it's "supposed" to be a EE5 compliant server, it is not.
    As described here http://e-docs.bea.com/wls/docs100/webapp/annotateservlet.html , there is no Dependency Injection in JSF managed beans:
    The web container will not process annotations on classes like Java Beans and other helper classes.
    But, WL 10 offers DI on Servlets, Filters and Listeners.
    Here is how I solved it (probably not the best way, but it works for me):
    - created a filter with a list of EJB injected (as it works). For every filtered request, set a list of known (enum) as request attributes mapped each to a EJB service:
    public class EJBInjectFilter implements Filter {
    @EJB
    private MyEJBService ejbRef;
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException,
                   ServletException {
    log.debug("Setting EJB ref into request as attribute ");
              req.setAttribute(ServiceEnum.MY_EJB_SERVICE.toString(), ejbRef);
              chain.doFilter(req, resp);     
    - for every managed bean who needs a service you can do something like:
    (MyEJBService) ((HttpServletRequest) FacesContext.getCurrentInstance().
                   getExternalContext().getRequest()).getAttribute(ServiceEnum.MY_EJB_SERVICE.toString())
    to get a reference to service.
    I agree it is a totally not elegant solution. But why does WL 10 say it's a full JEE5 compliant server, and though does not provide DI for managed beans?
    A drawbacks I could think of is performance slow-down (for every request, apply filter, set list of attributes + references into request) - probably it does take some time.
    Let me know your thoughts.
    Edited by: cosminj on Nov 20, 2007 8:16 AM

  • About Dependency Injection in EJB3.0

    Hi,
    I'm a fresh man in EJB3.0.
    Except @EJB and @Resource,is there
    any other anotation can be used to
    Dependency Injection?

    There is currently no possiblity in Weblogic 10 server web layer to use Dependency Injection on any other component than the ones defined in web.xml s.a.:
    - servlets
    - listeners
    - filters
    See here:
    http://e-docs.bea.com/wls/docs100/webapp/annotateservlet.html
    A simple POJO class part of the web application (such as a Backing Bean in JSF or an Action in Struts for example) is not benefiting from DI.
    Doesn't this make Weblogic 10 a NON JEE 5 compliant server?
    Why was this restriction imposed?
    And how is one supposed to use DI with a simple POJO class? Why this huge inconvenience?

  • Dependency injection in a Bean (MVC)

    Hello,
    Is it possible to use dependency injection in a bean (MVC architecture) ?
    I use it in a servlet, but I failed to use it in a bean !
    Thank you for your help.

    depends on which JEE specification you use. JEE6 has the CDI specification which can do what you want. JEE5 can only do dependency injection in "know server resources", such as servlets, EJBs, MDBs and JSF backing beans. Note that CDI is separated from the specification and thus can be used without having a JEE6 capable server; look into "Weld" which is the reference implementation of the CDI specification.
    http://www.seamframework.org/Weld
    Before CDI there was the Spring framework that could do it by the way, so that is also something that is worth investigating.

  • Problem in dependency injection with Jboss4.2.1

    Hi,
    I have an application that uses an EJB named -JBejbBean(SLSB)
    which implements a remote interface JBejb.
    I have used JDeveloper 10.1.3 IDE for developing it.
    JBejbBean contains a method
    public String show()
    return "hello";
    Now at the viewController side
    I have a JSF page whose backing bean ---view.backing.Start--- that looks up the above EJB using dependency injection as follows
    @EJB(mappedName="current-ejb-ear/JBejb/remote")
    private JBejb obj;
    this returns an exception that says .....
    Injection on Backing bean failed .
    javax.naming.NameNotFoundException:view.backing.Start not bound.

    Hi All,
    I just got an e-mail from Zinio:
    Hello,
    Thanks for contacting Zinio Customer Support.
    We have fixed the problem that was causing your magazine to appear blue in areas that should not have been blue. We’re very sorry for the inconvenience.
    Thank you,
    Emilia
    Zinio Customer Support
    After removing the bad issues and downloading them again, the problem was fixed, everything looks fine now! Unfortunatly it is not clear how this was fixed, there has been an update of the Zinio app (1.9.3) but the list of updates and fixes did not mention this problem.
    I'm very happy this has been addressed in relatively short time and that this problem in particular didn't need an update of the iOS.
    Hopefully the same will be true for all other apps having this PDF rendering issue.

  • EAR Structure for JSF project with EJBs

    Hi All,
    I have a JSF project which makes use of EJBs through EJB injection. The project basically consists of 3 components, which are independently archived (as JARs/WARs) and then added to an EAR. The components interact as follow:
    EJB JAR: contains the EJB code.
    Library JAR: contains the bean injection and common methods.
    JSF WAR: contains the JSF pages as well as a request (page) bean which inherits from a class in the library JAR (one containing a bean injection).
    The way I understand it, everything should work fine if I archive those components independently and then add them to an EAR (with the JSF WAR and EJB implementation JAR in the root, and the EJB interface JAR and the Library JAR in a /lib folder). If I do this, however, the bean injection fails and the bean proxy class is just null.
    I managed to get around this by adding the Library JAR to the JSF WAR's lib directory, in which case the bean injection works fine, but if I do it this way it means I'll have to add the Library JAR to all WAR components I have, which seems like needless duplication. Am I doing something wrong when creating the EAR or is this just the way it is? To make myself a bit more clear I include the EAR structures below:
    Not Working
    |_ EJB-impl.jar
    |_ JSF.war
    |_ lib
          |_ EJB-intf.jar
          |_ Library.jar
    Working
    |_ EJB-impl.jar
    |_ JSF.war
          |_ lib
                 |_ Library.jar
    |_ lib
          |_ EJB-intf.jarThank you,
    Ristretto

    Hi All,
    I have a JSF project which makes use of EJBs through EJB injection. The project basically consists of 3 components, which are independently archived (as JARs/WARs) and then added to an EAR. The components interact as follow:
    EJB JAR: contains the EJB code.
    Library JAR: contains the bean injection and common methods.
    JSF WAR: contains the JSF pages as well as a request (page) bean which inherits from a class in the library JAR (one containing a bean injection).
    The way I understand it, everything should work fine if I archive those components independently and then add them to an EAR (with the JSF WAR and EJB implementation JAR in the root, and the EJB interface JAR and the Library JAR in a /lib folder). If I do this, however, the bean injection fails and the bean proxy class is just null.
    I managed to get around this by adding the Library JAR to the JSF WAR's lib directory, in which case the bean injection works fine, but if I do it this way it means I'll have to add the Library JAR to all WAR components I have, which seems like needless duplication. Am I doing something wrong when creating the EAR or is this just the way it is? To make myself a bit more clear I include the EAR structures below:
    Not Working
    |_ EJB-impl.jar
    |_ JSF.war
    |_ lib
          |_ EJB-intf.jar
          |_ Library.jar
    Working
    |_ EJB-impl.jar
    |_ JSF.war
          |_ lib
                 |_ Library.jar
    |_ lib
          |_ EJB-intf.jarThank you,
    Ristretto

  • Dependency injection nightmare

    I can't get it what is wrong...given this faces-config.xml
    <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
         version="1.2">
         <application>
              <view-handler>com.icesoft.faces.facelets.D2DFaceletViewHandler</view-handler>
         </application>
         <managed-bean>
              <managed-bean-name>persistenceManager</managed-bean-name>
              <managed-bean-class>ro.sinoptix.controller.PersistenceManager</managed-bean-class>
              <managed-bean-scope>application</managed-bean-scope>
         </managed-bean>
         <managed-bean>
              <managed-bean-name>tipCerereCtrl</managed-bean-name>
              <managed-bean-class>ro.sinoptix.controller.TipCerereCtrl</managed-bean-class>
              <managed-bean-scope>session</managed-bean-scope>
              <managed-property>
                   <property-name>persistenceManager</property-name>
                   <property-class>ro.sinoptix.controller.PersistenceManager</property-class>
                   <value>#{persistenceManager}</value>
              </managed-property>
         </managed-bean>
         <managed-bean>
              <description>tine pagina TipuriCerere</description>
              <managed-bean-name>tipuriCerere</managed-bean-name>
              <managed-bean-class>ro.sinoptix.view.TipuriCerere</managed-bean-class>
              <managed-bean-scope>request</managed-bean-scope>
              <managed-property>
                   <property-name>tcl</property-name>
                   <property-class>ro.sinoptix.controller.TipCerereCtrl</property-class>
                   <value>#{tipCerereCtrl}</value>
              </managed-property>
         </managed-bean>
    </faces-config>i get this error
    SEVERE: JSF1054: (Phase ID: RENDER_RESPONSE 6, View ID: /TipuriCerere.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@7a36a2]
    SEVERE: Exception occured during rendering on http://localhost:8080/SOConfigManager/TipuriCerere.jsf [/TipuriCerere.xhtml]
    javax.faces.FacesException: Problem in renderResponse: com.sun.faces.mgbean.ManagedBeanPreProcessingException: Unexpected error processing managed bean tipuriCerere
    Caused by: com.sun.faces.mgbean.ManagedBeanPreProcessingException: Unexpected error processing managed bean tipuriCerere
         at com.sun.faces.mgbean.BeanManager.preProcessBean(BeanManager.java:356)
         at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:201)
         at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
         at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
         at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
         at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
         at org.apache.el.parser.AstValue.getValue(AstValue.java:107)
         at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
         at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
         at javax.faces.component.UIData.getValue(UIData.java:609)
         at com.icesoft.faces.component.panelseries.UISeries.getValue(UISeries.java:572)
         ... 65 more
    Caused by: com.sun.faces.mgbean.ManagedBeanPreProcessingException: Unexpected error processing managed property tcl
         at com.sun.faces.mgbean.ManagedBeanBuilder.bake(ManagedBeanBuilder.java:117)
         at com.sun.faces.mgbean.BeanManager.preProcessBean(BeanManager.java:311)
         ... 75 more
    Caused by: java.lang.NullPointerException
         at com.sun.faces.mgbean.ManagedBeanBuilder.bakeBeanProperty(ManagedBeanBuilder.java:350)
         at com.sun.faces.mgbean.ManagedBeanBuilder.bake(ManagedBeanBuilder.java:107)
         ... 76 morei cant figure out what is wrong ... my classes are
    public class TipuriCerere {
         // dependency injection
         private TipCerereCtrl tcl;
            public TipCerereCtrl getTcl() {
              return tcl;
    public class TipCerereCtrl {
         private PersistenceManager persistenceManager;
         public PersistenceManager getPersistenceManager() {
              return persistenceManager;
    }Any help is valueble to me
    Edited by: kquizak on Jan 8, 2010 1:54 AM

    r035198x wrote:
    gimbal2 wrote:
    .... Anybody else have an opinion about this?Definitely odd. Would have expected something like property not accessible.
    What JSF implementation and version is this?I just had this happen to me as well today. Added a ManagedProperty to a ViewScoped bean, like so:
         @ManagedProperty(value="#{actionStateMachine}")
         private ActionStateMachine     actionStateMachine;.. and only provided a getter, no setter, ... and I got the same exception shown by the OP.
    After I added a setter, the exception does not happen.
    Environment:
    JBoss 7.1.1
    Mojarra 2.1.7-jbossorg-1 (20120227-1401)

Maybe you are looking for

  • Question About ac/dc adapter

    Hello, I purchased a Dell Laptop, on Naples bestbuy, and returned to my country (ARGENTINA). Here we work with 220V. I wanted to know if the charger that came with the laptop can be used in my country, without burning the laptop. These are the data o

  • Can't change/resize any boxes in Pages '09

    I am a new user to Pages and I used a template with about 8 pages. I've modified that template quite a bit, but suddenly when I try to change any text or image box size, it won't allow me to do so. I can change text, insert new photos, etc, but I can

  • Can I use my 7900GT in a MacPro?

    I'm considering buying a MacPro and retiring my PC. I have a PCIe 7900GT, which out paces the 7300GT in the MacPro by a significant margin. Rather than fork over $250 for the X1900XT, can I just stick with the 7300GT, then swap out the cards when it

  • Invoice printout

    hi, How to do invoice printing in batches & background scheduling  ie., suppose there are 20 invoice i want to create spool request & print all 20 invoice-at paerticular date & time. Pl suggest

  • Table cell borders not always visible

    I created a PDF out of an existing Word doc. The doc is a table. The visibility of the table borders is unpredictable in the PDF. At certain zoom levels some disappear/reappear, and there doesn't seem to be a consistent pattern or behavior. Any thoug