JSF 2.0とHibernateを使用してWebアプリケーションを作成したいとします。 データベース[非同期]に例外を記録したい。jsfとhibernateを使用したWebプロジェクトのdbへの非同期呼び出し
どうすればいいですか?
JSF 2.0とHibernateを使用してWebアプリケーションを作成したいとします。 データベース[非同期]に例外を記録したい。jsfとhibernateを使用したWebプロジェクトのdbへの非同期呼び出し
どうすればいいですか?
あなたの質問であなたが与える情報は、少し貧弱ですが、私はそれをとにかく撃ちます。あなたは既に他のフィルタがインストールされている場合
@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.
}
}
それは私に多くの助けてくれてありがとう..私はここに言及して知らなかった..
**ありがとうArjan Tijms ** –
user1117297
あなたを歓迎;) –
ログに記録する例外はありますか?あなたは今まで何を作りましたか? –
私はどのレベル(データベースまたはJavaクラス)でもその要求の間に来る例外をログに記録したい...代わりにlog4jを使用したくないのですが、DBにログを記録したい(ロガーを使って、 – user1117297
HibernateとJSFだけを使用していますか?サーブレット? EJB?春?あなたがこれまで持っているもののいくつかのコードを私たちに教えてください。 –