在我的应用程序中,我通过servlet接收用户名/密码,该servlet调用SessionScoped ServiceBean,它在@PostConstruct方法中初始化SSH连接。如果SSH主机不可用,我想将用户重定向到“/applicationerror.html”。因此,我在此方法中抛出RuntimeException。
在我的PostConstruct方法中,由于FacesContext为null,因此JSF ExceptionHandler都不会捕获我的异常,也不能通过FacesContext.getInstance()。getExternalContext()。redirect()重定向用户。
我可以做些什么来避免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
}
}
}
答案 0 :(得分:0)
听起来你必须捕获异常并在catch块中使用RequestDispatcher。