Übergabe einer EntityBean

mavinatic

Bekanntes Mitglied
Hallo Community,

ich habe folgendes Problem: Ich habe eine stateful SessionBean in der ich eine Methode aufrufe und danach eine EntityBean an eine 2. Stateful-SessionBean übergebe und kurz danach möchte ich diese in der 2. SessionBean bearbeiten, jedoch wenn ich das deploye ist der Wert null. Vielleicht könnt ihr mir irgendwie helfen.

Java:
package com.openflow.server;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateful;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import com.openflow.dto.AccountTO;
import com.openflow.dto.SessionTO;
import com.openflow.service.ServiceLocator;
import com.openflow.session.ISession;
import com.openflow.session.ISessionLocal;
import com.openflow.tools.Common;

/**
 * Session Bean implementation class ServerService
 */
@Stateful
public class ServerService implements IServer {
	private ServiceLocator sLocator = ServiceLocator.getInstance();
	@EJB(name="SessionService") ISessionLocal sessionLocal;
	@PersistenceContext(unitName="openflowDS")
    private EntityManager em;
    /**
     * Default constructor. 
     */
    public ServerService() {
        // TODO Auto-generated constructor stub
    }

	@Override
	public ISession login(String user, String pass) {
		// TODO Auto-generated method stub
		AccountTO acc = getAccount(user);
		if(user.equals(acc.getUserid()) && pass.equals(acc.getPassword())) {
			ISession sessionRemote = sLocator.getSessionRemote();
			[B]sessionLocal.setAccount(acc);[/B]
			SessionTO session = sessionLocal.getSession();
			if(session==null) {
				System.out.println("SESSION==NULL");
				[B]sessionLocal.createSession();[/B]
				return sessionRemote;
			} else {
				if(sessionRemote.isSessionAvailable()) {
					System.out.println("SESSION==AVAILABLE");
					return sessionRemote;
				} else {
					System.out.println("SESSION==NOT AVAILABLE");
					sessionLocal.createSession();
					return sessionRemote;
				}
			}
		}
		return null;
	}

Methode in der 2.SessionBean
Java:
	@Override
	public void createSession() {
		// TODO Auto-generated method stub
		if(account!=null) {
			SessionTO session = new SessionTO();
			session.setUserId(account.getUserid());
			session.setSessionId(id.getID());
			
			Date date = new Date();
			session.setSessionStart(sdf.format(date));
			
			long now = date.getTime();
			Date sessionEnd = new Date();
			sessionEnd.setTime(now+Common.OPENFLOW_SESSION_DURATION);
			
			session.setSessionEnd(sdf.format(sessionEnd));
			
			this.session=session;
			em.persist(session);
		}
	}
 

mavinatic

Bekanntes Mitglied
Da hier keine Antwortet auf diese Frage antwortet, habe ich ein simpleres Problem bzw es ist das gleiche nur es ist simpler dargestellt.

Ich übergebe in der Methode login, nach der Validierung ob der Benutzername und Password stimmt die UserId in die LocalBean des IServiceManager's (Zeile 8).
Java:
@Override
	public IServiceManager login(String user, String pass) {
		// TODO Auto-generated method stub
		IServiceManager serviceManagerRemote = sLocator.getServiceManagerRemote();
		
		AccountTO acc = getAccount(user);
		if(user.equals(acc.getUserid()) && pass.equals(acc.getPassword())) {
			local.setUser(acc.getUserid());
			return serviceManagerRemote;
		}
		return null;
	}
In diesem ServiceManager rufe ich in einer RemoteMethode die Methode getUser() auf, welcher mir IMMER den Rückgabewert NULL zurück gibt.
Java:
@Stateful
public class ServiceManager implements IServiceManager,IServiceManagerLocal {
	String userid;
    public ServiceManager() {
        // TODO Auto-generated constructor stub
    }

	@Override
	public IMail getMailService() {
		// TODO Auto-generated method stub	
		ServiceLocator service = ServiceLocator.getInstance();
		return service.getMailRemote();
	}

	@Override
	public void setUser(String userid) {
		// TODO Auto-generated method stub
		this.userid=userid;
	}

	@Override
	public String getUser() {
		// TODO Auto-generated method stub
		return this.userid;
	}

An dieser Stelle frage ich mich, was mache ich falsch? Ich benutze eine StatefulSB, welche den Zustand über mehrere Methodenaufrufe hinweg speichert.

Gruß
George
 

Ähnliche Java Themen

Neue Themen


Oben