I'm相當新的Java EE和有關於Wildfly 10上運行的應用程序服務器的應用程序,在我的情況下,理解問題如何在Wildfly中「刷新」已部署的應用程序?
我的問題是,對象顯然是保持自己的狀態,一旦他們在那裏實例化應用程序啓動,即使我關閉並重新打開瀏覽器會話。就我而言,我正在使用試圖打開jdbc連接的bean,並在出現錯誤時寫入facelet的消息。
因此,爲了測試場景,我關閉了數據庫並啓動了應用程序。如預期的那樣,出現錯誤消息。現在,重新啓動數據庫後,它仍然沒有連接並給我「無數據庫」消息。必須完全重啓應用程序服務器才能使bean重新啓動。
所以問題是,我必須做什麼,重新初始化我的應用程序的所有涉及的對象實例?
這裏是bean的問題代碼:
@Named
@Stateless
public class CoworkerProducer
{
@Inject
private EntityManager em;
@Resource(lookup="java:/JMPostgres")
private DataSource dsJM;
public void addCoworkers(Long projectId)
{
Project managedProject = em.find(Project.class, projectId);
Long jmId = managedProject.getJmId();
try {
Connection con = dsJM.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT * FROM employees e, departments d WHERE e.department_id = d.id AND d.project_id = " + jmId);
ResultSet result = ps.executeQuery();
while(result.next()){
Coworker cow = new Coworker();
cow.setProject(managedProject);
em.persist(cow);
}
}
catch (SQLException e) {
final FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "no database!", null));
}
}
}
你爲什麼要注入'EntityManager',並在同一時間注射'DatasSource'? –
,因爲我從DataSource(外部RDBMS)讀取一些數據並將該數據存儲在實體管理器持久化的對象中,然後 – Prefect73