Search code examples
jsf-2jbossmanaged-bean

Managed Bean Annotation doesn't work in JSF 2.0


I've encoutered strange issue with annotations in bean.

index.xhtml content:

<h:outputText value="#{ejb.helloWorld}" />

Ejb.java content:

package bean;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

    @ManagedBean(name="ejb")
    @SessionScoped
    public class Ejb implements Serializable
    {
        public String getHelloWorld()
        {
            return "Hello World";
        }
    }

From what we see above i should be able to call bean method... but i can't, it will work only if i manage bean in faces-config.xml file with content:

<?xml version="1.0" encoding="UTF-8"?>
<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_2_0.xsd" 
          version="2.0">

          <managed-bean>
              <managed-bean-name>ejb</managed-bean-name>
              <managed-bean-class>bean.Ejb</managed-bean-class>
              <managed-bean-scope>session</managed-bean-scope>
          </managed-bean>
</faces-config>

Questions:

  1. Why i have encountered such situation ?
  2. How to resolve this issue ?

I'm using:

  • JSF 2.0 (imported to lib)
  • JBoss Server 4.2

Solution

  • My wild guess is that JSF 1.2 bundled by default with JBoss 4.2 is used (JBoss might not care about JSF version). As a result annotations are ignored, faces-config.xml file is used.

    Try to use configuration suggested here (thats's google cached page).