のJBoss 7.1.1に、我々がSeamFaces @ViewScoped
とメモリリークを持っているようです。ViewScoped Beanでメモリリークが発生しましたか?私たちの<strong>JavaEE6</strong>プロジェクト(<strong>EJB3</strong>、</strong><strong>JSF2)で
我々は事実を確認するために少しのプロトタイプを作った:
- 我々はページ200回を呼び出すためのJMeterを使用します。
- このページには、ステートフルEJBを注入するビュースコープのBeanが含まれています。
- セッションタイムアウトを1分で修正しました。テストの終わりに
、我々は我々が得たもの、ここでVisualVMのとメモリの内容を確認し、そして:
@ViewScoped
豆で、我々はまだ、ステートフルMyController
の200のインスタンスを取得します -@PreDestroy
メソッドは呼び出されません。@ConversationScoped
bean、@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;
}
}
そして、注入されたステートフルBean MyController
:
@Stateful
@LocalBean
public class MyController
{
public void call()
{
System.out.println("call ");
}
@PreDestroy
public void destroy()
{
System.out.println("Destroy");
}
}
私たちはCODIで試してみましたが、テストは順調でした。ニース! –