-1

在我的应用程序中,我通过一个调用 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
   }
}
}
4

1 回答 1

0

听起来您将不得不捕获异常并在 catch 块中使用 RequestDispatcher 。

于 2013-06-17T23:13:23.280 回答