Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > Redirect Error Page according to http error
Yazar
mstzn36


avatar
Siverek
Kayıt: 28.03.2010
24.08.2012-15:36 #78347
Selam arkadaşlar;

Proje de kullanıcı, olmayan bir dosya talebinde bulunduğunda server http 500 hatası döndürüyor,404 döndürmesini istiyorum ki ona göre redirect yapacağım.Hatalara göre farklı error page'lere redirect yapacağım onun için bana dönülen hata kodu önemli.Sorunun server tarafından değil de application tarafında olduğunu düşünüyorum.confused Şimdiden teşekkürler.

Jboss 7.1
Seam 3
JSF 2
Maven 3






do you want to know a secret
Yazar
maksutspahi


avatar

Kayıt: 28.09.2008
24.08.2012-23:00 #78353
500 hatası gönderiyorsa web.xml içine

<error-page>
<error-code>500</error-code>
<location>/500errorpage.xhtml</location>
</error-page>

yazıp yönlendirebilirsin.

Eğer kod içinden kontrol edebiliyorsan sen istediğin hata kodunu gönderebilirsin şu şekilde:

HttpServletResponse hsr = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
hsr.sendError(404);

Bu gönderdiğin koda göre web.xml'de error page tanımladıysan oraya yönlendirecektir.

Url kısmında yanlış yazıp gönderiyorsa FacesFileNotFoundException veriyordur büyük ihtimalle. Bunu şöyle de halledebilirsin:

<error-page>
<exception-type>com.sun.faces.context.FacesFileNotFoundException</exception-type>
<location>/notfoundpage.xhtml</location>
</error-page>

Kolay gelsin.






Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
25.08.2012-00:07 #78354
hatalarını jsf ile tutma. jsf in internal inden eğer hata alırsan yine http 500 basarsın.
diğer durumda zaten web.xml de nası configure edileceğini yazmış arkadaş.
ama bunun da bi garantisi yok. yine de uygulaman hata verebilir.
bunu engellemenin en kesin yolu AS önüne apache kurup http 500 leri custom sayfalara redirect etmektir.





N/A
Yazar
mstzn36


avatar
Siverek
Kayıt: 28.03.2010
25.08.2012-13:38 #78358
Asıl problemimi anlatamadım galiba.Ben zaten 500 hatalarını yönlendirebiliyorum.Fakat http 500 hatası çok genel bir hata.Kullanıcı olmayan bi dosya talep ettiğinde uygulama 500 hatası veriyor.500 hatası değil 404 hatası vermesinin istiyorum ki ona göre yönlendirme yapacağım.Uygulama hemen hemen her durumda 500 hatası veriyor not talking Acaba jboss üzerinde hata durumlarına göre bir yönlendirme yapabilir miyim ? thinking





do you want to know a secret
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
25.08.2012-14:20 #78359
mstzn36 yazdi
 
Asıl problemimi anlatamadım galiba.Ben zaten 500 hatalarını yönlendirebiliyorum.Fakat http 500 hatası çok genel bir hata.Kullanıcı olmayan bi dosya talep ettiğinde uygulama 500 hatası veriyor.500 hatası değil 404 hatası vermesinin istiyorum ki ona göre yönlendirme yapacağım.Uygulama hemen hemen her durumda 500 hatası veriyor not talking Acaba jboss üzerinde hata durumlarına göre bir yönlendirme yapabilir miyim ? thinking

jboss ta da yapabilirsin. o hatayı aldığın jsp de responsecode set etmen lazım. browser http status code değerinden sayfanın durumunu anlıyor.
response.setStatus gibi bişey olması lazım.





N/A
Yazar
mstzn36


avatar
Siverek
Kayıt: 28.03.2010
25.08.2012-15:31 #78360
Hatayı yakalıyorum fakat redirect yapamıyorum nedense.
Hatayı yakaladığım method:
public void fileNotFoundException(@Handles CaughtException<FileNotFoundException> event) {
	logManager.error("File Not Found Exception");
	FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "NOT FOUNDDD!", event.getException().getMessage());
	facesContext.addMessage(null, msg);
	facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, null, "error404");

	// try {
	// facesContext.getExternalContext().redirect("error404.xhtml");
	// } catch (IOException e) {
	// // TODO Auto-generated catch block
	// e.printStackTrace();
	// }

	return;

    }

faces-config:

 <navigation-rule>
 <from-view-id>*</from-view-id>
 <navigation-case>
 <from-outcome>error404</from-outcome>
 <to-view-id>/error404.xhtml</to-view-id>
 </navigation-case>
 </navigation-rule>


Bu durumda yönlendirme yerine runtime exception alıyorum.

java.lang.RuntimeException: Exception invoking method [printExceptionMessage] on object [com.yoncabt.abys.console.exception.ExceptionHandler@804fa], using arguments [org.jboss.solder.exception.control.CaughtException@7ebb27]

Sizin dediklerinizi denedim yine aynı hatayı aldım.Bir fikri olan var mı beat up

Jboss 7.1 üzerinden redirect olayını nasıl yaparım kaynak gösterebilir misiniz ben bulamadım da doğru dürüstpraying






do you want to know a secret
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
25.08.2012-22:13 #78361
jsf te handle etme jsp de handle et. yada static html sayfasina gonder.





N/A
Yazar
mstzn36


avatar
Siverek
Kayıt: 28.03.2010
26.08.2012-21:25 #78364
orhan yazdi
 
jsf te handle etme jsp de handle et. yada static html sayfasina gonder.


Bunu nasıl yapabilirim hocam ? thinking





do you want to know a secret
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
26.08.2012-22:48 #78365
bitane customexceptionhandler yaz.
orda yakala exception ı sonra bi yere redirect et.
yada http500 ü redirect et bi jsp ye sonra jsp nin içinde status codeu değiştir.





N/A
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb