2011-12-28 1 views
-1

JSF 2.0とHibernateを使用してWebアプリケーションを作成したいとします。 データベース[非同期]に例外を記録したい。jsfとhibernateを使用したWebプロジェクトのdbへの非同期呼び出し

どうすればいいですか?

+1

ログに記録する例外はありますか?あなたは今まで何を作りましたか? –

+0

私はどのレベル(データベースまたはJavaクラス)でもその要求の間に来る例外をログに記録したい...代わりにlog4jを使用したくないのですが、DBにログを記録したい(ロガーを使って、 – user1117297

+1

HibernateとJSFだけを使用していますか?サーブレット? EJB?春?あなたがこれまで持っているもののいくつかのコードを私たちに教えてください。 –

答えて

3

あなたの質問であなたが与える情報は、少し貧弱ですが、私はそれをとにかく撃ちます。あなたは既に他のフィルタがインストールされている場合

@WebFilter(filterName="exceptionHandler", urlPatterns="/*") 
public class ExceptionHandler extends HttpFilter { 

    @Override 
    public void doFilter(HttpServletRequest request, HttpServletResponse response, HttpSession session, FilterChain chain) throws ServletException, IOException { 

     try { 
      chain.doFilter(request, response); 
     } catch (Exception e) { 
      // ... handle exception here 
     } 
    } 
} 

、あなたがよ:

(コメントごとに)要求の処理中に発生するものに例外ロギングを制限する、あなたの最初のステップは、サーブレットフィルタをインストールすることです呼び出される順序を調整するには、おそらくweb.xmlが必要です。

次の手順は、非同期の永続化をDBに行うことです。ここでは、JSFとHibernate以外のどのスタックを使用しているかによって異なります。たとえば、Java EEには便利な@Asynchronousアノテーションがあり、Springでは@Asyncというアノテーションがあります。一般に、JSFはJava EEと組み合わせることが最も多いですが、JPAの代わりにHibernateを使用していると言う人は、通常、Tomcatにいる傾向があります。

フィルタ:

@WebFilter(filterName="exceptionHandler", urlPatterns="/*") 
public class ExceptionHandler extends HttpFilter { 

    @EJB 
    private ExceptionPersister exceptionPersister; 

    @Override 
    public void doFilter(HttpServletRequest request, HttpServletResponse response, HttpSession session, FilterChain chain) throws ServletException, IOException { 

     try { 
      chain.doFilter(request, response); 
     } catch (Exception e) { 
      exceptionPersister.persist(e); 
     } 
    } 
} 

EJB:あなたはJPA(おそらく休止状態)を使用して、EJBと述べた@Asynchronousアノテーションで、フィルターにEJBを注入しまうのJava EEについて

@Stateless 
public class ExceptionPersister { 

    @PersistenceContext 
    private EntityManager entityManager; 

    @Asynchronous 
    public void persist(Exception exception) { 
     // use entityManager to persist exception in your 
     // specific way. 
    } 
} 
+0

それは私に多くの助けてくれてありがとう..私はここに言及して知らなかった..
**ありがとうArjan Tijms ** – user1117297

+0

あなたを歓迎;) –

関連する問題