Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Deployment problems, EJB/JSF/Glassfish

843830Jan 6 2008 — edited Jan 8 2008
Hey! I'm experimenting a bit with EJB and JSF, and I'm trying to set up a simple community site, but I'm running into some problems from the very start. I'm using Netbeans 6.0, and I have created an Enterprise Project with an EJB module and a web module running the JSF framework. My server is Glassfish 2.

What I've got so far is a login page, a JSF backing bean, a stateless EJB session bean, and a local remote interface. I'll add some persistence after I've solved these problems, so far the EJB methods only use dummy values.

Here's the JSF login bean.
package CR.ui;

import CR.items.User;
import CR.sessions.LoginSessionLocal;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class loginBean 
{
    private String username;
    private String password;

    public String getUsername() 
    {
        return username;
    }

    public void setUsername(String username) 
    {
        this.username = username;
    }

    public String getPassword() 
    {
        return password;
    }

    public void setPassword(String password) 
    {
        this.password = password;
    }
    
    public String login()
    {
        try 
        {
            InitialContext ic = new InitialContext();
            Object o = ic.lookup("java:comp/env/LoginSessionLocal");
            LoginSessionLocal dao = (LoginSessionLocal) o;

            if(dao.auth(username, password))
            {
                User u = dao.getUser(username);
                Utilities.getSession().setAttribute("username", username);
                return "success";
            }
            else
                return "loginFailed";
        }
        
        catch (NamingException ex) 
        {
            Logger.getLogger(loginBean.class.getName()).log(Level.SEVERE, "namingException in login()", ex);
            return "loginFailed";
        }
    }
}
And here's the session bean
package CR.sessions;

import CR.items.User;
import javax.ejb.Stateless;

@Stateless
public class LoginSessionBean implements LoginSessionLocal 
{

    public Boolean auth(String username, String password) 
    {
        if(username.equals("user"))
            return true;
        else
            return false;
    }

    public User getUser(String username) 
    {
        return new User("user", "pass", null);
    }
    
 
}
...Local interface...
package CR.sessions;

import javax.ejb.Local;

@Local
public interface LoginSessionLocal {

    public java.lang.Boolean auth(java.lang.String username, java.lang.String password);

    public CR.items.User getUser(java.lang.String username);

    
}
...web.xml...
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <context-param>
        <param-name>com.sun.faces.verifyObjects</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.validateXml</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <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>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    
    
    <ejb-local-ref>
        <ejb-ref-name>LoginSessionLocal</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <local-home/>
        <local>CR.LoginSessionLocal</local>
    </ejb-local-ref>
    
</web-app>
...And faces-config.xml
<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="1.2" 
              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">
    <managed-bean>
        <managed-bean-name>loginBean</managed-bean-name>
        <managed-bean-class>CR.ui.loginBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    
    <navigation-rule>
        <from-view-id>/login.jsp</from-view-id>
        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/WEB-INF/results/login-successful.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>
When deploying I simply click "run" in Netbeans. What am I missing? :)
I'd appreciate any input on this, I feel like I've tried everything, but I've probably missed something essential.
Thanks!


Edit: Can't believe I actually forgot to post the error! Here it is!

Deploying application in domain failed; Error loading deployment descriptors for module [C-Rev-war] -- Cannot resolve reference Unresolved Ejb-Ref LoginSessionLocal@jndi: @null@CR.LoginSessionLocal@Session@null
Deployment error:
The module has not been deployed.
See the server log for details.
at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:163)
at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:104)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor250.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:277)
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:460)
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:151)
Caused by: The module has not been deployed.
at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:157)
... 16 more
BUILD FAILED (total time: 0 seconds)

Edited by: Robert-Ventura on Jan 6, 2008 10:33 AM
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 5 2008
Added on Jan 6 2008
4 comments
5,149 views