보스 7.1.1에, 우리가 SeamFaces @ViewScoped
와 메모리 누수가 보인다. ViewScoped bean에서 메모리 누수가 발생합니까? 우리 <strong>JavaEE6</strong> 프로젝트 (<strong>EJB3</strong>,</strong><strong>JSF2)에서
- 을;
- 이 페이지는 stateful EJB를 삽입하는 viewscoped bean을 포함하고 호출합니다.
- 1 분에 세션 시간 초과가 수정되었습니다.
하십시오 @ViewScoped
콩
- , 우리는 여전히 상태
MyController
200 개 인스턴스를 얻을 -@PreDestroy
메서드는 호출되지 않습니다. @ConversationScoped
콩,@preDestroy
방법은 세션 종료라고하고 깨끗한 메모리를 가지고.
뷰 범위를 잘못 사용 했습니까? 아니면 정말로 버그입니까?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:s="http://jboss.org/seam/faces">
<f:metadata>
<f:viewParam name="u" value="#{myBean.uselessParam}" />
<s:viewAction action="#{myBean.callService}" />
</f:metadata>
<h:body >
<f:view>
</f:view>
</h:body>
</html>
이제 포함 된 콩 myBean
:
다음은 XHTML 페이지입니다. @ConversationScoped
변형의 경우 주석 처리 된 모든 파트의 주석 처리가 제거됩니다.
@ViewScoped
// @ConversationScoped
@Named
public class MyBean implements Serializable
{
@Inject
MyController myController;
//@Inject
//Conversation conversation;
private String uselessParam;
public void callService()
{
//if(conversation.isTransient())
//{
// conversation.begin();
//}
myController.call();
}
public String getUselessParam()
{
return uselessParam;
}
public void setUselessParam(String uselessParam)
{
this.uselessParam = uselessParam;
}
}
그리고 주입 된 상태 콩 MyController
:
@Stateful
@LocalBean
public class MyController
{
public void call()
{
System.out.println("call ");
}
@PreDestroy
public void destroy()
{
System.out.println("Destroy");
}
}
우리는 CODI로 시도했지만 테스트가 잘되었습니다. 좋은! –