2016-04-22 41 views
5

Bir jax-rs web hizmetinden çağrılan birkaç EJB'im var. Ancak, her EJB yönteminden birini çağırdığımda, bir önleme kullanarak çağrıyı durduruyorum. Bu önleme bir API anahtarı için parametreleri kontrol eder ve eğer mevcut değilse veya veritabanımda yoksa jax-rs kodumda yakalamak istediğim bir istisna atar. Bununla birlikte, jax-rs sınıfımın istisnanın kontrol edilmiş bir istisna olmasına rağmen, bu istisnanın atılma olasılığı hakkında bilgisi olmadığı için, burada en iyi uygulama ne olurdu?Hiç atmadan bir istisna atmayı bildirme

  1. benim istisna denetlenmeyen istisna yapma ve her durumda bunun için kontrol edilmesi (hiç onları kendisi atma olmadan) benim EJB istisnalar atmak mı ilan ediyor?
  2. Başka bir şey?

cevap

1

İşaretlenmemiş bir istisnayı atmanın en iyisi olacağını anladım. Sonra istisna yakalamak ve ele almak için bir istisna mapper kullanın.

https://docs.oracle.com/javaee/6/api/javax/ws/rs/ext/ExceptionMapper.html

kalan tek şey günlük dosyaları istisnası çıkışını bastırmaktır.

+1

Not: EJB'lerle işaretlenmemiş bir istisna atarsanız, o zaman '@ ApplicationException '' ı kullanmanız gerekir, aksi takdirde EJB kabı istisnayı geri yükler ve EJBException 'a çevirir. –

0

kesen bazı RuntimeException (örneğin InvalidParametersException için) atılır olabilir. Ve tüm InvalidParametersException istisnasını ele alacak özel sunucu oluşturabilirsiniz. Bu amaçla web.xml'de özel mapping oluşturmalısınız.

+0

Özel durumları ele almak için özel bir sunucudan başka seçenekler var mı? Belki de işe bir engelleyici koyabilirim? – Terabyte