Greetings from the newest member of the list!

Java 7, Spring 4, CXF 2.6.1

I've split my Java/Spring/CXF/Hibernate/MySQL/Maven monolithic webapp into a
SOAP web service and a corresponding web client. I'm having a terrible time
handling exceptions/SOAP faults.

Problem 1.

On the client I've created CXF Interceptors that extends
AbstractSoapInterceptor, and added this snippet to my client_context.xml:


  <bean id="myInSoapFaultInterceptor" 
class="gov.zz.dept.forms.web.resolver.MyInSoapFaultInterceptor" />
  <bean id="myOutSoapFaultInterceptor"
class="gov.zz.dept.forms.web.resolver.MyOutSoapFaultInterceptor" />
 
  <cxf:bus>
    <cxf:inFaultInterceptors>
      <ref bean="myInSoapFaultInterceptor"/>
    </cxf:inFaultInterceptors>
    <cxf:outFaultInterceptors>
      <ref bean="myOutSoapFaultInterceptor"/>
    </cxf:outFaultInterceptors>
  </cxf:bus>

but the client does NOT have a cxf.xml file.

Problem is my interceptors never get triggered.

Problem 2.

On the service I've implemented JSR-303 bean validation, which when violations
occur generates a ConstraintViolationException and throws it up the stack. CVE
consists of a Set<ConstraintViolation> . CVE cannot be converted to XML
because ConstraintViolation is an interface and the dreaded 
"ConstraintViolation is an interface and JAXB can't handle interfaces" errmsg
pops up. Googling reveals this is not an uncommon problem but all solutions
assume Foo is an interface under your creation/control. So I need a way to get
ConstraintViolations to XML on the service, throw the SoapFault, have client
catch SoapFault, convert XML back to ConstraintViolation so as to pass CVE
back to the Spring Form-backing bean so the pretty error messages appear
correctly on the web form.

I've read the PACKT book about CXF web services but it's pretty thin on
error-handling with interceptors and has none of the subtlties real-world code
has to contend with. I'd appreciate any suggestions, pointers, constructive
criticisms or especially examples of how other smarter people handle this stuff.

Thank You,

Chris

Reply via email to