在我的应用程序中,我通过一个调用 SessionScoped ServiceBean 的 servlet 接收用户名/密码,该 ServiceBean 在 @PostConstruct 方法中初始化 SSH 连接。如果 SSH 主机不可用,我想将用户重定向到“/applicationerror.html”。因此我在这个方法中抛出了一个 RuntimeException 。
JSF ExceptionHandler 既不能捕获我的异常,也不能通过 FacesContext.getInstance().getExternalContext().redirect() 重定向用户,因为我的 PostConstruct 方法中的 FacesContext 为空。
我该怎么做才能避免 http 500?
public class LoginServlet extends HttpServlet {
@Inject
private AnyBean anyBean;
doPost() {
anyBean.loginUser(requestparamusercode, requestparampassword)
}
}
@Named
@SessionScoped
public class AnyBean implements Serializable {
@Inject
private SshService sshService;
public boolean loginUser(String usercode, String password) {
sshService.login(usercode, password);
}
@SessionScoped
public class CommandServiceImpl {
public boolean login(usercode, password) {
....
}
@PostConstruct
private void initSshConnection() {
try {
} catch(IOException e) {
// what to do here
}
}
}