Fonce
Captain
- Registriert
- Feb. 2006
- Beiträge
- 3.436
Hi,
ich habe da ein kleines Problem mit der EJB Injection (@EJB Annotation).
Ich habe ein EJB (FileSystemBean ) welches zur Verwaltung mehrer Instanzen dient zum Zugriff auf mein MongoDB Backend. Nun sollen mehrere ManagedBeans auf dieses Bean zugreifen können um sich die entsprechende Instanz von FileSystem zu holen.
Mit meinem ersten Bean (siehe FolderBean) welches ich zum testen angelegt hatte funktioniert das auch wunderbar.
Beim meinem zweiten Bean (siehe FolderTreeBean) funktioniert es aber nicht. Dort bekomme ich einfach nicht das FileSystemBean mittels EJB Injection.
Hat jemand eine Idee warum das nicht funktioniert?
ich habe da ein kleines Problem mit der EJB Injection (@EJB Annotation).
Ich habe ein EJB (FileSystemBean ) welches zur Verwaltung mehrer Instanzen dient zum Zugriff auf mein MongoDB Backend. Nun sollen mehrere ManagedBeans auf dieses Bean zugreifen können um sich die entsprechende Instanz von FileSystem zu holen.
Mit meinem ersten Bean (siehe FolderBean) welches ich zum testen angelegt hatte funktioniert das auch wunderbar.
Beim meinem zweiten Bean (siehe FolderTreeBean) funktioniert es aber nicht. Dort bekomme ich einfach nicht das FileSystemBean mittels EJB Injection.
Hat jemand eine Idee warum das nicht funktioniert?
Code:
package org.rehborn.mydms.webapp;
import com.mongodb.MongoClient;
import java.net.UnknownHostException;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import org.rehborn.mydms.FileSystem;
/**
*
* @author Julian
*/
@Startup
@Singleton
public class FileSystemBean {
private ConcurrentMap<String, FileSystem> backends;
private MongoClient mongoClient;
@PostConstruct
public void initDMSBackend() {
try {
mongoClient = new MongoClient();
backends = new ConcurrentHashMap<>();
for (String database : mongoClient.getDatabaseNames()) {
backends.putIfAbsent(database, new FileSystem(database));
}
} catch (UnknownHostException ex) {
Logger.getLogger(FileSystemBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
public FileSystem getDMSBackend(String database) {
return backends.get(database);
}
public FileSystemBean() {
}
}
Code:
package org.rehborn.mydms.webapp;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.rehborn.mydms.FileSystem;
import org.rehborn.mydms.Folder;
/**
*
* @author Julian
*/
@ManagedBean
@RequestScoped
public class FolderBean {
@EJB
private FileSystemBean dms;
private String folderName;
public String getFolderName() {
return folderName;
}
public void setFolderName(String folderName) {
this.folderName = folderName;
}
public void createFolder() {
FileSystem fileSystem = dms.getDMSBackend("MYDMSTESTDOMAIN");
Folder newFolder = new Folder(folderName, fileSystem.getRootFolder());
fileSystem.createFolder(newFolder);
}
}
Code:
package org.rehborn.mydms.webapp;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;
import org.rehborn.mydms.FileSystem;
import org.rehborn.mydms.Folder;
/**
*
* @author Julian
*/
@ManagedBean
@RequestScoped
public class FolderTreeBean {
private TreeNode root;
@EJB
private FileSystemBean dms;
/**
* Creates a new instance of FolderTreeBean
*/
public FolderTreeBean() {
root = new DefaultTreeNode("Root", null);
FileSystem fileSystem = dms.getDMSBackend("MYDMSTESTDOMAIN");
Folder rootFolder = fileSystem.getRootFolder();
// root = new DefaultTreeNode(rootFolder.getName(), null);
TreeNode node0 = new DefaultTreeNode("Node 0", root);
TreeNode node1 = new DefaultTreeNode("Node 1", root);
TreeNode node2 = new DefaultTreeNode("Node 2", root);
TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);
TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);
TreeNode node10 = new DefaultTreeNode("Node 1.0", node1);
TreeNode node11 = new DefaultTreeNode("Node 1.1", node1);
TreeNode node000 = new DefaultTreeNode("Node 0.0.0", node00);
TreeNode node001 = new DefaultTreeNode("Node 0.0.1", node00);
TreeNode node010 = new DefaultTreeNode("Node 0.1.0", node01);
TreeNode node100 = new DefaultTreeNode("Node 1.0.0", node10);
}
public TreeNode getRoot() {
return root;
}
}