アプリケーションのフロントエンド ( JSF
, CDI
) とバックエンド ( EJB
, Hibernate
) の部分がそれぞれ別の .xml にある Web アプリケーションを実行していますWildFly 9.0.1.Final AS
。Remote EJB Client
フロントエンドは、JNDI 名を介してバックエンドと通信します。
いくつかのフロントエンド コード:
@ViewScoped
@Named("ddc")
public class DynamicDatatableController implements Serializable {
@Produces
@Resource(lookup = "ejb:bpm-back-ear/bpm-back-dynamicTable/DynamicTableBean!bc.bpm.dynamicTable.back.beans.remote.DynamicTableBeanRemote")
private DynamicTableBeanRemote dtb;
private Integer tableId;
private DynamicTable table;
@PostConstruct
public void init{
table = dtb.getTable(tableId);
}
}
いくつかのバックエンド インターフェース コード:
@Remote
public interface DynamicTableBeanRemote {
List<DynamicTable> getTable(Integer tableId);
}
いくつかのバックエンド Bean コード:
@Stateless
@LocalBean
public class DynamicTableBean implements DynamicTableBeanRemote {
final static Logger LOGGER = LoggerFactory.getLogger(DynamicTableBean.class);
@PersistenceContext(unitName = "bpmBeans")
private EntityManager em;
@Override
public List<DynamicTable> getTableList(Integer tableId) {
return em.find(DynamicTable.class, tableId);
}
}
問題は、JMeter を使用して、またはいくつかのブラウザー タブを更新することによって、どれだけ多くの要求を行っても、常に のインスタンスが 1 つしか存在DynamicTableBean
しないことです。すべてのリクエストは、キュー内のその 1 つの Bean インスタンスによって実行されます。お分かりのように、このアプリケーションは完全にシングル スレッドの EJB であるため、まったく使用できません。何が問題なのですか?