2011-01-31 19 views
5

Bazı parametre doğrulama yapan özel bir önleme yazdım. Bir hata kodu döndürmek ve cevap gövdesi olarak JAXB açıklamalı bir sınıfı serileştirmek istiyorum.Apache CXF: Bir ara kesiciden gelen hata yanıtının nasıl döndürüleceği

Bir WebApplicationException atarsam, içindeki Response nesnesini serileştirmek için herhangi bir özel işlem yapılmaz (bu mantıklıdır; bunun başka bir interceptor tarafından yapıldığı varsayılır).

Önleme zincirini durdurmaktan nasıl vazgeçmeliyim ama hala JAXB yanıt varlıklarını serileştirir mi?

cevap

3

Eh, en azından CXF JAX-RS önleme akışında, ayarladığınız takdirde: Diğer fazlar çağrılan alırım iken

message.getExchange().put(Response.class, response); 

... sonra gerçek hizmet, çağrılan almaz. .

Response response = Response 
    .status(Response.Status.FORBIDDEN) 
    .entity(new ErrorEntity("This is a JAXB object with an error string")) 
    .build(); 

Ben de bir CXF JAX-RS filtresinde çalışan bazı özel kimlik doğrulaması:

bu mantık devreye giriyor yüzden böyle bir yanıt inşa nerede olduğunu görmek için CXF koduna kazılmış mı ve sadece doğrulama doğru olduğunda parametreleri kontrol etmek istiyorum, bu yüzden PRE_INVOKE fazında çalışacak şekilde parametre önleme sınıfımı ayarlıyorum.

+0

Ancak SOAP protokolüyle çalışıyorsak bu şekilde çalışmaz. Birisi SOAP vakası için güncellemeler sağlayabilir mi? –