App Server의 가동 시간 동안 객체를 데이터 구조에 저장할 수 있습니까? 기본적으로이 데이터 구조와 인터페이스하는 EJB를 원하지만 완전한 데이터베이스 솔루션은 필요하지 않습니다.데이터 구조의 EJB 및 저장 객체 (Map, List 등)
다음package com.test.beans;
import java.util.Map;
import javax.ejb.Remote;
import com.test.entities.Animal;
@Remote
public interface MapBeanRemote {
public void addAnimal(Animal a);
public void removaAnimal(Integer id);
public Animal getAnimalById(Integer id);
Map<Integer, Animal> getAllAnimals();
}
는 세션 빈입니다 :
package com.test.beans;
import java.util.ConcurrentHashMap;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import com.test.entities.Animal;
@Stateless(mappedName="ejb/MapBean")
public class MapBean implements MapBeanRemote{
Map<Integer, Animal> animalStore;
@PostConstruct
public void initialize(){
animalStore = new ConcurrentHashMap<Integer,Animal>();
}
@Override
public void addAnimal(Animal a) {
if(a.getId()!=null){
animalStore.put(a.getId(), a);
}
}
@Override
public Animal getAnimalById(Integer id) {
return animalStore.get(id);
}
@Override
public void removaAnimal(Integer id) {
animalStore.remove(id);
}
@Override
public Map<Integer, Animal> getAllAnimals() {
return animalStore;
}
}
그래서 여기
package com.test.entities;
public class Animal implements java.io.Serializable {
private static final long serialVersionUID = 3621626745694501710L;
private Integer id;
private String animalName;
public Integer getId() {
// TODO Auto-generated method stub
return id;
}
public void setId(Integer id){
this.id=id;
}
public String getAnimalName(){
return animalName;
}
public void setAnimalName(String animalName){
this.animalName=animalName;
}
}
가 EJB 원격 인터페이스입니다 :이 더미 동물 개체를 만든 예를 들어
기본적으로 나는 t를 조작하고자하는 클라이언트를 원한다. 그는 Animal Map을 사용하여이 EJB를 탐색하고 각 클라이언트가 동일한 정확한 객체 맵에 액세스하게합니다.
이 예제는 충분하지 않습니다. 잠시 후 모든 동물이 지워진다. (EJB가 빈 풀에서 대체 될 때 나는 추측한다.) 어떻게 든 자원으로 주입 될 수 있을까?
감사합니다. Stateful Session Bean은 전체 응용 프로그램 서버가 아닌 특정 클라이언트에서만 상태를 유지할 수 있습니다. – systemoutprintln
예, 죄송합니다. – Karl