EJB Injection in Seperated Managed Bean

Hi All,
I have a JSF project consisting of a number of different WARs, containing the Web logic, and a bunch of different JARs, containing the application logic; which are deployed together in a single EAR file. Thus far this approach has worked excellently, but I've now run into a problem. I would like to have a managed session-scoped bean which should be available to all the WARs' classes so that they can store cross-application data in it (for example the user's name and other details). I can do this by packaging that session-scoped bean, along with its faces-config.xml, into a JAR which is deployed through the EAR. This works fine, but EJB Injection in that session-scoped bean doesn't work - my bean interface instance always contains null.
Is there someway that I can have EJB Injection in this managed session-scoped bean contained in a JAR? I realize that EJB Injection requires a container, but seeing as it is a managed bean, even though it isn't inside a WAR, I thought this should work fine?
Thank you,
Ristretto

We tried almost every permutation and combination, but it did not work without that dummy servlet.
Then we had to look for a cleaner solution and we found one.
We are now using spring injection, to get the EJB injection in our session managed bean. This way the code is extensible and cleaner.
In future if you want something else(other than ejb lets say a web service), you will just change the Spring config file and it would't break anything.
Edited by: desu on Mar 14, 2008 4:20 AM

Similar Messages

  • @EJB annotation in JSF managed beans not working

    Hi all,
    I've been trying to get the @EJB annotation to work in a JSF manged bean without success.
    The EJB interface is extremely simple:
    package model;
    import javax.ejb.Local;
    @Local
    public interface myEJBLocal {
    String getHelloWorld();
    void setHelloWorld(String helloWorld);
    and the bean code is simply:
    package model;
    import javax.ejb.Stateless;
    @Stateless
    public class myEJBBean implements myEJBLocal {
    public String helloWorld;
    public myEJBBean() {
    setHelloWorld("Hello World from myEJBBean!");
    public String getHelloWorld() {
    return helloWorld;
    public void setHelloWorld(String helloWorld) {
    this.helloWorld = helloWorld;
    When I try to use the above EJB in a managed bean, I only get a NullPointerException when oc4j tries to instantiate my managed bean. The managed bean looks like:
    package view.backing;
    import javax.ejb.EJB;
    import model.myEJBLocal;
    import model.myEJBBean;
    public class Hello {
    @EJB
    private static myEJBLocal myBean;
    private String helloWorld;
    private String helloWorldFromBean;
    public Hello() {
    helloWorld = "Hello from view.backing.Hello!";
    helloWorldFromBean = myBean.getHelloWorld();
    public String getHelloWorld() {
    return helloWorld;
    public void setHelloWorld(String helloWorld) {
    this.helloWorld = helloWorld;
    public String getHelloWorldFromBean() {
    return helloWorldFromBean;
    Am I missing something fundamentally here? Aren't you supposed to be able to use an EJB from a JSF managed bean?
    Thanks,
    Erik

    Well, the more I research this issue, the more confused I get. There have been a couple of threads discussing this already, and in this one Debu Panda states that:
    "Support of injection in JSF managed bean is part of JSF 1.1 and OC4J 10.1.3.1 does not support JSF 1.1"
    10.1.3.1 Looking up a session EJB with DI from the Web tier
    But if you look in the release notes for Oracle Application Server 10g R3, it is explicitly stated that JSF 1.1. is supported. So I'm not sure what to believe.
    I've also tried changing the version in web.xml as described here:
    http://forums.java.net/jive/thread.jspa?threadID=2117
    but that didn't help either.
    I've filed a SR on Metalink for this, but haven't got any response yet.
    Regards,
    Erik

  • @EJB not working for managed beans in adfc-config

    using adf 11.1.1.3
    We have an application that uses EJB (deployed on the same WLS as our application). We notice that when we create managed beans in the adfc-config and use the @EJB annotation to get an instance of the sessionbean, it is not working.
    The error we get is a simple nullPointerexception pointing to the EJB.
    When we register the bean in faces-config.xml instead of adfc-config.xml, we do get an instance of the EJB.
    I also get a nullpointerException when i add the managed bean to a taskflow instead of the adfc-config.
    This is an example of the bean:
    public class HomeTest {
        @EJB
        MyService service;
        public HomeTest() {
        public List getData(){
          return service.getSomedata();
    }When i register this bean in adfc-config i get a nullpointer on service.
    When i register the same bean in the faces-config, it is working.

    Frank,
    Thanks! I think i managed to implement the workaround:
    This is my bean that has been registered in the faces-config:
    public class BeanHelper {
        @EJB
        private MyEJB myEjB;
        public BeanHelper() {
            super();
        public MyEJB getMyEJB()
              return myEJB;
    }In my adfc managed bean i use
    MyEJB myEJB = (MyEJB)JSFUtils.get("#{BeanHelper.myEJB}");This is working fine.
    This way i no longer need to use a direct lookup and i don't need to know the exact path and so on for the EJB.
    Thanks Frank!
    Is there a way to let Oracle update the bug with this workaround so if other people find the bug, they know how to implement a workaround?

  • Problems while defining EJB relations for container managed bean

    I am having a problem while trying to create my relations for my container managed bean.
    My Database schema is:
    Order table
    order_id
    message
    WorkItem table:
    order_id
    item_id
    message
    I have defined my OrderBean to have:
    @LocalMethod()
    @CmrField
    public abstract Collection getCmWorkItemsCmr();
    @LocalMethod()
    public abstract void setCmWorkItemsCmr(Collection workItems);
    I am not sure how to define my relation for my class:
    @Relation(cmrField = "cmWorkItemsCmr", multiplicity = Relation.Multiplicity.MANY, name = "Orders-CmWorkItems")
    An order can have many workitems. I am not sure how to fill in the rest for foreign Key jointable and such.
    Any help pointing me in the right direction would be helpful.
    Thanks,
    Ian

    I am having a problem while trying to create my relations for my container managed bean.
    My Database schema is:
    Order table
    order_id
    message
    WorkItem table:
    order_id
    item_id
    message
    I have defined my OrderBean to have:
    @LocalMethod()
    @CmrField
    public abstract Collection getCmWorkItemsCmr();
    @LocalMethod()
    public abstract void setCmWorkItemsCmr(Collection workItems);
    I am not sure how to define my relation for my class:
    @Relation(cmrField = "cmWorkItemsCmr", multiplicity = Relation.Multiplicity.MANY, name = "Orders-CmWorkItems")
    An order can have many workitems. I am not sure how to fill in the rest for foreign Key jointable and such.
    Any help pointing me in the right direction would be helpful.
    Thanks,
    Ian

  • EJB, JPA E MANAGED BEAN WITHOUT DATA CONTROL

    How do I build a simple crud with no EJB without data controls. Exposing the methods of my bean class.
    Who can help me thanks.
    Edited by: 941064 on 15/06/2012 14:48

    You'll write managed beans that access your EJB service facade.
    You can use @EJB injection to get this working.
    http://biemond.blogspot.co.uk/2010/04/ejb-injection-in-jsf-managed-bean.html

  • JSF managed beans Vs Enterprise beans

    Hi friends,
    what are the advantages/disadvantages of using enterprise beans/ JSF managed beans over JSF managed beans/Enterprise beans
    regards
    san

    The primary difference between managed bean and enterprise bean is : enterprise bean will avail all the services provided by EJB container. where as managed bean cant avail all these.

  • How am I able to use an injected EJB in a Managed Bean Constructor?

    JSF 1.2
    EJB 3.0
    Glassfish v1
    Summary:
    Managed bean injected EJB is null when referencing EJB var in constructor.
    Details:
    In my managed bean, I have a constructor that tries to reference an injected EJB, such as:
    public class CustomerBean implements Serializable {
    @EJB private CustomerSessionRemote customerSessionRemote;
    public CustomerBean() {
    List<CustomerRow> results = customerSessionRemote.getCustomerList();
    }The call within the constructor to customerSessionRemote is null - I've double checked this in Netbeans 5.5.
    How am I able to use an injected EJB in a Managed Bean Constructor?
    Thanks,
    --Todd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    OK, I was reading the article Web Tier to Go With Java EE 5: A Look at Resource Injection and I understand your statement too.
    Is there any way possible to Inject the EJB prior to the bean instance creation at all?
    Maybe, I need to approach it with the old fashion Java EE 1.4 route and using JNDI in the PostConstruct annotated method to reference the EJB in the managed bean.
    This had to been thought out before, I don't understand why a manged bean's life cycle places any injections at the end of the bean creation.
    Also, now that I understand that the @PostConstruct annotated method will be called by the container after the bean has been constructed and before any business methods of the bean are executed.
    I am trying to reference my EJB as part of the creation of the managed bean.
    What happens: the JSF page loads the managed bean and I need to populate a listbox component with data from an EJB.
    When I try to make the call to the EJB in the listbox setter method, the EJB reference is null.
    Now, I'm not for sure if the @PostConstruct annotation is going to work... hmmmm.
    ** Figured it out. ** I just needed to move the EJB logic that was still in the setter of the component I wanted to populate into the annotated PostConstruct method.

  • Failed to call EJB from Managed Bean in user interface

    Hi,
    I'm very new to JDeveloper and EJB. I'm now in learning stage. I managed to find a simple example for me to get started. But I encountered errors.
    This is the tutorial that I have followed -> http://www.packtpub.com/article/Building-JSF-EJB3-Applications
    When we create an application, the application will consist of EJBModel and Interface (JSF View)
    In my EJB Model, I have session bean name myappejb.ejb.QuestionSessionBean and one Entity bean name myappejb.entities.Question
    In my User Interface, I have created a managed bean name QuestionController and I try to call QuestionSessionLocal in the EJBModel, but before I can compile, there are systaxs errors. I can't import the import javax.ejb.EJB and myappejb.ejb.QuestionSessionBean, stated not found. In other words I can't call all the beans that I have created in EJBModel from java class that I have ceated in UserInterface.
    Please advise, I'm lost.
    WenXin
    I really confuse how exactly it works
    Edited by: user8989450 on Jan 14, 2010 12:57 AM

    Hi,
    The problem has been solved. I found the solution, this is due to the "dependencies", must "Checked" the EJBModel.jpr.
    Thanks.
    Wen Xin

  • Problem injecting a List of managed beans in JSF framework.

    Is it possible to inject a List of beans as a managedproperty to a managed bean??
    @ManagedProperty(value="#{user}")
         private List<userBean> users;
    Thanks.

    It was possible through faces-config, so I'd say yes. Are you sure 'user' actually resolves into a list? Perhaps you meant 'users' ?

  • Problems integrating JSF managed bean with Session EJB with JDeveloper

    HI All,
    I am developeing a JSF-EJB application using Jdeveloper11g. On deploying the application I am getting the following errors on deployment.
    <19/08/2010 2:53:49 PM EST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID '1282193629318' for task '17'. Error is: 'weblogic.application.ModuleException: Could not setup environment'
    weblogic.application.ModuleException: Could not setup environment
         at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1499)
         at weblogic.servlet.internal.WebAppModule.activate(WebAppModule.java:442)
         at weblogic.application.internal.flow.ModuleStateDriver$2.next(ModuleStateDriver.java:375)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
         at weblogic.application.internal.flow.ModuleStateDriver.activate(ModuleStateDriver.java:95)
         Truncated. see log file for complete stacktrace
    Caused By: weblogic.deployment.EnvironmentException: [J2EE:160101]Error: The ejb-link 'MetaDataBean' declared in the ejb-ref or ejb-local-ref 'MetaData' in the application module 'ViewControllerWebApp.war' could not be resolved. The target EJB for the ejb-ref could not be found. Please ensure the link is correct.
         at weblogic.deployment.BaseEnvironmentBuilder.addEJBLinkRef(BaseEnvironmentBuilder.java:453)
         at weblogic.deployment.EnvironmentBuilder.addEJBReferences(EnvironmentBuilder.java:485)
         at weblogic.servlet.internal.CompEnv.activate(CompEnv.java:157)
         at weblogic.servlet.internal.WebAppServletContext.activate(WebAppServletContext.java:3117)
         at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1497)
         Truncated. see log file for complete stacktrace
    >
    <19/08/2010 2:53:49 PM EST> <Error> <Deployer> <BEA-149202> <Encountered an exception while attempting to commit the 1 task for the application 'data-catalog'.>
    <19/08/2010 2:53:49 PM EST> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating deploy task for application 'data-catalog'.>
    <19/08/2010 2:53:49 PM EST> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
    weblogic.application.ModuleException: Could not setup environment
         at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1499)
         at weblogic.servlet.internal.WebAppModule.activate(WebAppModule.java:442)
         at weblogic.application.internal.flow.ModuleStateDriver$2.next(ModuleStateDriver.java:375)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
         at weblogic.application.internal.flow.ModuleStateDriver.activate(ModuleStateDriver.java:95)
         Truncated. see log file for complete stacktrace
    Caused By: weblogic.deployment.EnvironmentException: [J2EE:160101]Error: The ejb-link 'MetaDataBean' declared in the ejb-ref or ejb-local-ref 'MetaData' in the application module 'ViewControllerWebApp.war' could not be resolved. The target EJB for the ejb-ref could not be found. Please ensure the link is correct.
         at weblogic.deployment.BaseEnvironmentBuilder.addEJBLinkRef(BaseEnvironmentBuilder.java:453)
         at weblogic.deployment.EnvironmentBuilder.addEJBReferences(EnvironmentBuilder.java:485)
         at weblogic.servlet.internal.CompEnv.activate(CompEnv.java:157)
         at weblogic.servlet.internal.WebAppServletContext.activate(WebAppServletContext.java:3117)
         at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1497)
         Truncated. see log file for complete stacktrace
    Thanks
    Edited by: user5108636 on 18/08/2010 22:46

    Please find attached the source code of JSF managed bean, local business interface, session bean and web.xml
    MANAGED BEAN_
    package view.backing;
    import java.util.List;
    import javax.ejb.EJB;
    import javax.faces.component.UISelectItems;
    import javax.faces.component.html.HtmlSelectManyListbox;
    import model.ejb.session.MetaDataBean;
    public class SearchMetaDataBean {
    @EJB MetaDataBean metaDataService;
    private List<String> tables;
    private List<String> columns;
    private HtmlSelectManyListbox selectManyListbox1;
    private UISelectItems selectItems1;
    public void setTables(List<String> tables) {
    this.tables = tables;
    public List<String> getTables() {
    return metaDataService.getTables();
    public void setColumns(List<String> columns) {
    this.columns = columns;
    public List<String> getColumns() {
    return columns;
    public void setSelectManyListbox1(HtmlSelectManyListbox selectManyListbox1) {
    this.selectManyListbox1 = selectManyListbox1;
    public HtmlSelectManyListbox getSelectManyListbox1() {
    return selectManyListbox1;
    public void setSelectItems1(UISelectItems selectItems1) {
    this.selectItems1 = selectItems1;
    public UISelectItems getSelectItems1() {
    return selectItems1;
    LOCAL INTERFACE_
    package model.ejb.session;
    import java.util.List;
    import javax.ejb.Local;
    @Local
    public interface MetaDataLocal {
    public List<String> getTables();
    public List<String> getColumns(String tableName);
    SESSION BEAN_
    package model.ejb.session;
    import javax.ejb.Local;
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import javax.annotation.PostConstruct;
    import javax.annotation.Resource;
    import javax.ejb.Stateless;
    import javax.sql.DataSource;
    @Stateless(name="MetaData")
    @Local
    public class MetaDataBean implements MetaDataLocal{
    @Resource(name="jdbc/DWDS")
    private DataSource dataSource;
    private Connection connection;
    private List<String> tables = new ArrayList<String>();
    private List<String> columns = new ArrayList<String>();
    private DatabaseMetaData dmd;
    @PostConstruct
    public void initialize(){
    try{
    connection = dataSource.getConnection();
    DatabaseMetaData dmd;
    dmd = connection.getMetaData();
    }catch(SQLException sqle){
    sqle.printStackTrace();
    public MetaDataBean() {
    public List<String> getTables(){
    try{                 
    if (dmd ==null){
    //System.out.println("Database meta data not available");
    tables.add("None");
    }else{
    ResultSet rs = dmd.getSchemas();
    ResultSet rs1 = null;
    while(rs.next()) {
    if (rs.getString(1).equalsIgnoreCase("AV_DATA")){
    rs1 = dmd.getTables(null,rs.getString(1),"%",null);
    while(rs1.next()) {
    tables.add(rs1.getString(3));
    }catch (SQLException sqle){
    sqle.printStackTrace();
    return tables;
    public List<String> getColumns(String tableName){
    try{
    ResultSet rsColumns = dmd.getColumns("", "AV_DATA", tableName, null);
    while(rsColumns.next()){
    columns.add(rsColumns.getString(4));
    }catch (SQLException sqle){
    sqle.printStackTrace();
    return columns;
    WEB.XML_
    <?xml version = '1.0' encoding = 'windows-1252'?>
    <web-app 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"
    version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
    <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <ejb-local-ref>
    <ejb-ref-name>MetaData</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <local>model.ejb.session.MetaDataLocal</local>
    <ejb-link>MetaDataBean</ejb-link>
    </ejb-local-ref>
    </web-app>
    Edited by: user5108636 on 18/08/2010 22:45
    Edited by: user5108636 on 18/08/2010 22:46

  • Accessing facade bean in ADF Faces managed bean

    Hello
    I am trying to display data from a database on a page using ADF Faces. I am using a Web Application [JSF, EJB] template in JDeveloper with the model project using JPA entities with a session facade bean to manage the entities (as described here: http://www.oracle.com/technology/obe/obe1013jdev/10131/ejb_and_jpa/master-detail_pagewith_ejb.htm ).
    What I have tried to do is to set up a managed session bean in the ViewController project that is referenced by a faces page. The managed bean is supposed to, on creation, load data from the database into managed properties which are then displayed on the faces page using EL references. I want all JPA management to go through the facade, and thus I want to inject the facade bean into the managed bean using @EJB notation. However, the injection does not work, and all I get is a NullPointerException when trying to access the injected facade in the managed bean.
    I have also tried instantiating the facade bean in the managed bean's constructor manually, but when I try to call a method on the facade, I get another NullPointerException, this time from the entity manager which obviously is not injected into the facade bean.
    What is strange is that the facade bean works perfectly when I use the datacontrols generated from the facade bean, as described in the tutorial (no exception from the entity manager).
    I have searched high and low for a solution to this, and from what I can read, it should be possible to do what I want (see for example https://blueprints.dev.java.net/bpcatalog/ee5/persistence/ejbfacade.html and http://luxlog.wordpress.com/2007/12/15/basic-example-web-app-with-glassfish-netbeans-60-jsf-and-ejb3/ ). I found someone mentioning that dependency injection in the web container OC4J was added after a given version, and that web.xml needs to be upgraded to version 2.5, which I have done but did not solve anything.
    Is this not possible in JDeveloper/OC4J at all? Is there any other way to access the facade session bean in managed beans?

    Hi,
    for resource injection you need JDeveloper 11. Here the EJB annotation works to inject the resource. If you want to do similar in 10.1.3 then you need to do a JNI lookup in the managed bean (under the shelves ADF does the same)
    Frank

  • @postconstruct doesn't work in managed bean

    Hi,
    I'm using JBOSS 6, JSF 2 and EJB 3.1, i have an ear with
    - EJB folder (@postconstruct is working)
    - JSF folder with manged bean where @postconstruct doesn't work
    This my manged bean :
    package com.galhauban.geriex;
    import java.util.ArrayList;
    import java.util.List;
    import javax.annotation.PostConstruct;
    import javax.ejb.EJB;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ViewScoped;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ValueChangeEvent;
    import javax.faces.model.SelectItem;
    import javax.servlet.ServletContext;
    import org.richfaces.event.ItemChangeEvent;
    @ManagedBean
    @ViewScoped
    public class AdministrationController {
    @EJB
    private VilleBean ville;
    private List<SelectItem> villes = new ArrayList<SelectItem>();
    private String commune;
    private String communeId;
    private String cp;
    private String labelListCommune;
    @EJB
    private BisBean bisBean;
    private String bis;
    private Integer bisId;
    private List<SelectItem> bisList = new ArrayList<SelectItem>();
    @EJB
    private RueBean rueBean;
    private String rue;
    private String rueId;
    private List<SelectItem> ruesList = new ArrayList<SelectItem>();
    //boolean desactives pour n'afficher que ce que l'on souhaite a partir du menu
    private boolean bCommune =false;
    private boolean bBis =false;
    private boolean bRue =false;
    private UIComponent selectedChild = null;
    //Pour connaitre l'item du menu actif
    private String selectedTab;
    private List<String> renderComponents = new ArrayList<String>();
    public AdministrationController(){
    ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
    System.out.println("============================================================================");
    System.out.println("==================================CONSTRUCTEUR==============================");
    System.out.println("Servlet : "+servletContext.getEffectiveMajorVersion()+"."+servletContext.getMinorVersion());
    System.out.println("============================================================================");
    @PostConstruct
    public void postConstruct(){
    setSelectedTab("rue");
    System.out.println("###################################################");
    System.out.println(" POST CONSTRUCT MANAGED BEAN ");
    System.out.println("###################################################");
    JanusController multi = new JanusController();
    * AFFICHAGE DES MODIFS/SUP/AJOUT EN FONCTION DU MENU SELECTIONNE
    public void updateCurrent(ItemChangeEvent event){
    setSelectedTab(event.getNewItem().getId());
    System.out.println("====> SELECTEDTAB " + selectedTab.toString());
    if (selectedTab.equals("commune")) {
    setbCommune(true);
    setbBis(false);
    setbRue(false);
    renderComponents.add("gCommune");
    else if (selectedTab.equals("bis")) {
    setbBis(true);
    setbCommune(false);
    setbRue(false);
    renderComponents.add("gBis");
    else if (selectedTab.equals("rue")) {
    setbRue(true);
    setbBis(false);
    setbCommune(false);
    renderComponents.add("gRue");
    else System.out.println("----> pas dans le if " + selectedTab.toString());
    public void ajouter(){
    System.out.println("====> AJOUTER SELECTEDTAB " + selectedTab.toString());
    if (selectedTab.equals("commune")) {
    System.out.println("ajouter commune ");
    ville.ajouter(commune, cp);
    else if (selectedTab.equals("bis")) {
    System.out.println("ajouter iBbis ");
    bisBean.ajouter(bis);
    else if (selectedTab.equals("rue")) {
    System.out.println("ajouter rue: "+commune);
    rueBean.ajouter(rue, Integer.parseInt(communeId));
    else System.out.println("----> pas dans le if de l'ajouter " + selectedTab.toString());
    public void modifier(){
    System.out.println("====> MODIFIER SELECTEDTAB " + selectedTab.toString());
    if (selectedTab.equals("commune")) {
    ville.modifier(Integer.parseInt(communeId), commune);
    else if (selectedTab.equals("bis")) {
    bisBean.modifier(bisId, bis);
    else if (selectedTab.equals("rue")) {
    rueBean.ajouter(rue, Integer.parseInt(communeId));
    else System.out.println("----> pas dans le if de modifier " + selectedTab.toString());
    public void supprimer(){
    System.out.println("====> SUPRIMER SELECTEDTAB " + selectedTab.toString());
    if (selectedTab.equals("commune")) {
    System.out.println("ajouter commune ");
    ville.ajouter(commune, cp);
    else if (selectedTab.equals("bis")) {
    System.out.println("supprimer iBbis ");
    bisBean.supprimer(bisId);
    else if (selectedTab.equals("rue")) {
    System.out.println("ajouter rue: "+commune);
    rueBean.ajouter(rue, villes.indexOf(ville));
    else System.out.println("----> pas dans le if de l'ajouter " + selectedTab.toString());
    * LISTENER
    public void selectListener(ValueChangeEvent vce){
    System.out.println("new value : "+vce.getNewValue());
    public void listAdminCommune(ValueChangeEvent vce){
    System.out.println("listener*************");
    ruesList.clear();
    ruesList = rueBean.listRue(Integer.parseInt(vce.getNewValue().toString()));
    * AUTRES FONCTIONS
    public boolean invbool(boolean vrai){
    if (vrai == true) return false;
    else return true;
    * GETTER AND SETTER
    Any help will be highly appreciated.
    Regards
    Couse1

    Hi,
    First of all thanks for your help.
    I've some problems to add a new mojarra version (2.1.2) to jboss 6
    1- I modified the file META-INF\jsf-integration-deployer-jboss-beans.xml
    <entry>
              <key>Mojarra-2.1.2</key>
              <value>${jboss.server.home.url}deployers/jsf.deployer/Mojarra-2.1.2</value>
    </entry>
    <bean name="JSFUrlIntegrationDeployer-212" class="org.jboss.jsf.deployer.JSFUrlIntegrationDeployer">
        <property name="JSFConfigName">
          <value>Mojarra-2.1.2</value>
        </property>
        <property name="JSFImplManagementDeployer">
          <inject bean="JSFImplManagementDeployer"/>
        </property>
      </bean>2- I added this code in my web.xml(war)
    <context-param> 
            <param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name> 
            <param-value>Mojarra-2.1.2</param-value> 
          </context-param>3- And in the folder ...\deployers\jsf.deployer\Mojarra-2.1.2, i've got :
    - jsf-libs with jars
    - META-INF with web.xml
    I took the web.xml from Mojarra-2.0 :
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app 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"
       version="2.5">
       <!-- ======================== Introduction ============================== -->
       <!-- This document defines default values for the Mojarra-2.0 JSF config  -->
       <!--                                                                      -->
       <!-- WARNING:  Do not configure application-specific resources here!      -->
       <!-- They should go in the "/WEB-INF/web.xml" file in your application.   -->
       <!-- =========== Common Context Params ================================== -->
       <!-- Regular expression to determine if two different URLs actually point -->
       <!-- to the same jar file.  This keeps faces-config files from being      -->
       <!-- read twice.                                                          -->
       <context-param>
         <param-name>com.sun.faces.duplicateJARPattern</param-name>
         <param-value>^tmp\d+(\S*\.jar)</param-value>
       </context-param>
       <!-- JBossInjectionProvider provides resource injection for managed beans. -->
       <!-- See JSF 1.2 spec section 5.4 for details.                             -->
       <context-param>
         <param-name>com.sun.faces.injectionProvider</param-name>
         <param-value>org.jboss.web.jsf.integration.injection.JBossDelegatingInjectionProvider</param-value>
       </context-param>
       <!-- ================== Common filter Configuration ==================== -->
       <!-- ================== Common Listener Configuration ==================== -->
       <!-- Configures JSF 2.0 -->
       <listener>
         <listener-class>org.jboss.web.jsf.integration.config.JBossMojarra20ConfigureListener</listener-class>
       </listener>
    </web-app>And of course i've got this error :
    org.jboss.web.jsf.integration.config.JBossMojarra20ConfigureListener: java.lang.ClassNotFoundException: org.jboss.web.jsf.integration.config.JBossMojarra20ConfigureListener
    I don't know where to find the listener-class, and in fact i don't know to configure this web.xml.
    Help or sugestion will be appreciated.
    Best regards
    couse1

  • EJB Injection into JSR286 Portlet

    I'm currently facing an issue accessing an Stateless EJB from my JSR286 Weblogic 10.3.2 Portal Server. I have 2 ears: 1) PreferencesPortalEAR and 2)PreferencesEJBEar
    PreferencesPortalEAR - contains the web module with jsr286 portlet and the ejb client jar
    PreferencesEJBEar - contains the j2ee module with the ejb and ejb client jar
    When I attempt to access the EJB from the portlet doing a JNDI lookup it works fine but when I try to use DI to get a reference to the bean I get a NullPointerException.
    Here's the code:
    PreferenceBean EJB:
    * Session Bean implementation class PreferencesBean
    @Stateless(mappedName="ejb/Preference")
    public class PreferenceBean implements PreferenceLocal, PreferenceRemote {
         @Override
         public void createPreference(List<PreferenceEntity> preferences) {
              System.out.println("Created Preference");
         @Override
         public void deletePreference(List<PreferenceEntity> preferences) {
              System.out.println("Deleted Preference");
         @Override
         public List<PreferenceEntity> getPreference(PreferenceType prefType) {
              System.out.println("Get Preference");
              ArrayList<PreferenceEntity> peAL = new ArrayList<PreferenceEntity>();
              for (int i=0;i<10;i++) {
                   PreferenceEntity pe = new PreferenceEntity();
                   pe.setId(i);
                   pe.setCreateDate(new Date());
                   pe.setPreferenceName("prefName" + i);
                   pe.setPreferenceValue("prefValue"+i);
                   pe.setUserName("weblogic"+i);
                   peAL.add(pe);
              return peAL;
         @Override
         public void updatePreference(List<PreferenceEntity> preferences) {
              System.out.println("Update Preference");
    Here's the Portlet EJBPortlet:
    public class EJBPortlet extends GenericPortlet {
         @EJB(mappedName="ejb/Preference")
         private Preference preference;
         public void doView(RenderRequest request, RenderResponse response)
                   throws PortletException, IOException {
              response.setContentType("text/html");
    //          Context ctx = null;
    //          Preference preference = null;
    //          try {
    //               /** not needed when running locally **/
    //               Hashtable<String, String> env = new Hashtable<String, String>();
    //               env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
    //               env.put(Context.SECURITY_PRINCIPAL,"weblogic");
    //               env.put(Context.SECURITY_CREDENTIALS,"weblogic123");
    //               env.put(Context.PROVIDER_URL,"t3://localhost:7001");
    //               ctx = new InitialContext();
    //               preference = (Preference) ctx.lookup("ejb/Preference#com.mycompany.preferences.PreferenceRemote");
    //          } catch (Exception e) {
    //               e.printStackTrace();
              preference.createPreference(null);
              preference.deletePreference(null);
              ArrayList<PreferenceEntity> peAL = (ArrayList<PreferenceEntity>)preference.getPreference(PreferenceType.CATEGORY);
              for (PreferenceEntity pe : peAL) {
                   response.getWriter().write(pe.toString() + " ") ;
              response.getWriter().write("<p>Hello World!</p>");
    As previously mentioned, using InitialContext and JNDI lookup in the portlet works fine. When that code is commented and I use @EJB, I get a NullPointerException.
    Thanks for your help.

    We tried almost every permutation and combination, but it did not work without that dummy servlet.
    Then we had to look for a cleaner solution and we found one.
    We are now using spring injection, to get the EJB injection in our session managed bean. This way the code is extensible and cleaner.
    In future if you want something else(other than ejb lets say a web service), you will just change the Spring config file and it would't break anything.
    Edited by: desu on Mar 14, 2008 4:20 AM

  • How to add a finder method in the container manager Bean in the weblogic6.1

    in the environment jbuilder6 andweblogic6.1,use container manager entity Bean,it can automatic generate the findAll() method,I want to add a new method to find an element in the home interface,such as findByName(),name is a element of a table of the database.in the weblogic-cmp-rdbms-jar.xml,this is part of the fiile:
    <finder>
    <finder-name>findAll</finder-name>
    <finder-query><![CDATA[ (= 1 1) ]]></finder-query>
    </finder>
    <finder>
    <finder-name>findByName</finder-name>
    <finder-param>java.lang.String</finder-param>
    <finder-query><![CDATA[ (=name $name) ]]></finder-query>
    </finder>
    It can successfully compile the findAll(),but it is wrong when compile the findByName(),as follows
    "www.ejbgrpx": Method Name: findByName
    "www.ejbgrpx": Invalid specifications for a WebLogic RDBMS CMP EJB.
    "www.ejbgrpx": ERROR: Error from ejbc: weblogic.ejb20.cmp11.rdbms.finders.IllegalExpressionException:
    "www.ejbgrpx": While trying to process Finder
    "www.ejbgrpx": Parameter Types: (java.lang.String)
    "www.ejbgrpx": WebLogic Query: (= name $name)
    "www.ejbgrpx": Finder Expressions: ()
    "www.ejbgrpx": Could not parse WLQL expression: (= name $name) null
    "www.ejbgrpx": ERROR: ejbc found errors
    thank you

    The finder methods that you are referring to are only simple finder methods. If you would like to add specialized finder methods, you can make your entity bean with bean managed persistence and not container managed. If you are using EJB 2.0, your entity bean with container managed persistence can use EJB QL for finder methods. You can search for this topic and/or download the EJB 2.0 specifications
    Hope this helps

  • Create EJB 3.0 Message Driven Bean on a Oracle JMS (AQ)

    Hi, I need to develop a EJB 3.0 Message Driven Bean. The MDB has to work on a Oracle AQ using Oracle JMS. Is there any how-to document giving an example about this issue. Can you give an example how to create the JMS destination in OC4J (how to configure the Oracle JMS AQ in OC4j), issue the JMS destination via annotions (resource injection) in the MDB. Please give me a working example of the MDB and a test client to produce a message. Regards, Arjan Jorritsma

    Check your ejb-jar.xml and see if it has the version of "2.1" there...
    If the application was depending upon EJB 3.0 annotations but it had a ejb-jar.xml that had version set to "2.1" and there was no oracle specific descriptor (orion-ejb-jar.xml) to designate it use the resource adapter; It would expect JMS destination and connection factory that is required for a JMS-MDB set in the ejb-jar.xml. So try to change the ejb-jar.xml to update the version to "3.0", OC4J would have parsed the annotation and combined the metadata with ejb-jar.xml and it would work.
    -Frances

Maybe you are looking for