2009-08-26 13 views
5

WebSphere 6.1.0.25 ile bir kuruluş uygulamasının bir istisna nedeniyle başlatılmasını engellemenin bir yolu var mı? Ben contextInitialized() sırasında bir RuntimeException atmak için hileli bir ServletContextListener var. Bu, sunucunun günlüğünde bir yığın izi oluşturur, ancak WebSphere konsolu hala uygulamayı başarılı şekilde başlatıyor ve WAR kaynaklarına hala erişilebiliyor. WebSphere uygulamasının, uygulamada başarıya ulaşmalarını sağlamak için, savaş içi eserler tarafından üretilebilecek bir mekanizma var mı?Java EE uygulamasının WebSphere istisnasıyla başlatılmasını önleyin

Ayrıca, başlangıçta yükleme yapmak için bir sunucu uygulaması yapmayı denedim ve init() öğesinden bir istisna attım ve bu, aradığım etkiyi yaratmadı.

+0

Olası kopya - http://stackoverflow.com/questions/272194/abort-java-webapp-on-startup –

cevap

4

Evet, bunu yapmanın bir yolu var ama yine de WebSphere'e özgü olduğuna inanıyorum. Birkaç yıl önce de aynı problemi yaşadık, büyük bir hata oluştuğunda bile çok sayıda yapılandırma gerektiren bir uygulama hala gösterilmeye devam edecektir. Anlatmanın tek yolu, günlük dosyasına bakmak ve herhangi bir özel durumun meydana gelip gelmediğini görmek oldu (ve web kullanıcı arayüzü çok iyi çalışmadı).

Çoğu kapsayıcı üzerinde çalıştığı görülen yaşam döngüsünü işlemenin standart yolu, ServletContextListener'tır, ancak bulunduğunuz gibi, başlatma hatalarıyla başa çıkmak için zarif bir yol yoktur.

WebSphere'de (yine de birkaç sürüm için) başlangıç ​​çekirdeği konsepti var.

: Daha ziyade bu bağlantıyı Bu aslında iki yöntem uygulayan bir EJB fasulye oluşturmanıza olanak sağlar http://publib.boulder.ibm.com/inforcenter...

bir göz olabilir birkaç yıl önce bu yaptığını olduğu gibi ayrıntılı olarak açıklamaya çalışırken daha

public boolean start() { 
    return new Delegate().start(); 
} 

public void stop() { 
    new Delegate().stop(); 
} 

Başlatma yönteminden true değerini döndürürseniz, başarılı bir başlangıç ​​döndürür, aksi halde false döndürmesi, uygulamanın konsolda başlamasına neden olur ve uygulama başlatılamadığını gösterir. Çalışmaları yapmak için bir Yetki Verme görevini uyguladık, böylece kapsayıcı başlangıç ​​çekirdeklerini uygulamadığı takdirde, başlangıç ​​çekirdeği veya bir ServletContextListener ürününe bağlayabilirdik.

Başlangıç ​​çekirdeklerine sahip tek ek şey, WebSphere'da, Başlangıç ​​Konsolları hizmetini Yönetim Konsolunda etkinleştirmeniz veya başka bir şeyin çalıştırılmaması ve uygulamanızın herhangi bir başlatma işleminin başlatılmaması gerektiğidir. sen dene ve başlat. Yukarıdaki sayfadan nasıl yapılacağı hakkında bilgi var.

Bu konuda bir IBM Redbook'ta daha ayrıntılı bilgiler bulunduğundan emindim ama şu anda bu dosyayı bulamıyorum.

+0

Bu konuyla ilgili teşekkür ederiz. Bunun projenin mevcut bağımlılık grafiğinde çalışmasını sağlayabileceğime emin değilim, ancak bilmek için iyi bir bilgi. Bunun üzerine uğraşmaya ihtiyacım var ve sadece bir bayrak ayarlayabilirim ve ardından dahili başlatma başarılı olmazsa 500'e geri dönmek için bir servlet filtresi olsa da her şeyi çalıştırırım. –