질문 1 : 내가 EJB를 작성한 것을 배우기 위해 따라하기 때문에 모든 조회가 새로운 상태 저장 세션 빈을 만듭니다. 그래서 내가 한 것은 sysout 문으로 @PostConstruct 주석을 가진 init() 메소드로 정의됩니다. 따라서 모든 Stateful Bean에 대해 실행될 필요가있다. 그러나 같은 일은 일어나지 않습니다. 클라이언트 측에서 다음 코드를 콩Stateful beans에서 나를 도와주세요
@Stateful
public class PersonnelModelBean implements PersonnelModelRemote{
@PostConstruct
void init(){
System.out.println("STATEFUL BEAN transforming to Mathod Ready state");
}
}
에서
을 고려
try {
InitialContext context = InitialContextBuilder.getJBOSSInitialContext();
PersonnelModelRemote personnelModel = (PersonnelModelRemote)context.lookup("PersonnelModel/remote");
personnelModel.setPersonKey(new Integer(1));
personnelModel.setPersonName("Naresh");
PersonData person = personnelModel.getPerson();
System.out.println(person);
personnelModel = (PersonnelModelRemote)context.lookup("PersonnelModel/remote");
personnelModel.setPersonKey(new Integer(2));
personnelModel.setPersonName("Pokuri");
person = personnelModel.getPerson();
System.out.println(person);
} catch (NamingException e) {
e.printStackTrace();
}
은 질문 2 : 같은 방식으로 저자는 말했다 그 @Remove 주석 메소드를 호출에 대한 것 컨테이너에서 클라이언트 관련 빈을 제거하십시오. 따라서 컨테이너는 bean 삭제시 destroy() (@PreDestroy로 주석 됨) 메소드를 호출해야합니다. 그러나 그것은 일어나지 않습니다. 내가 JBOSS의 서버/기본/conf의 디렉토리의 standardjboss.xml 60 초로 설정 한 다음 코드
@Stateful
public class PersonnelModelBean implements PersonnelModelRemote{
@Remove
public PersonData getPerson() {
PersonData personData = new PersonData();
personData.setKey(key);
personData.setName(name);
return personData;
}
@PreDestroy
void destroy(){
System.out.println("STATEFUL BEAN transforming to Does not exist state");
}
}
질문 3을 고려한다. 15 분 동안 기다렸다가 클라이언트 코드를 실행하면 @PostConstruct라는 주석이 달린 메서드가 호출되어야합니다. 그러나 그것은 또한 일어나지 않았습니다.
Q1 : 모든 로그가 Eclipse 콘솔에 표시됩니다. Q2 :하지만 Stateful beans 컨테이너의 경우 풀링 개념을 사용하지 않습니다. – Pokuri
Q1 : 다른 메시지를 확인하기 위해 호출되는 메서드에서 다른 System.out을 추가하는 경우 일식 콘솔에 표시되는 것일 수 있습니다. Q2 : jboss-4.2.3에서 standardjboss.xml의 stateful 세션 빈에 대한 풀 크기 구성을 찾았으므로 위의 항목이 가짜 항목이라고 생각하지 않습니다. – stacker